飞行棋关卡操作

1、分析设计

  飞行棋的基本规则为二人轮流掷骰子,则此处为循环结构,然后根据投掷出的点数进行前进<注:在每一步前进之后均应该判断是否走完了游戏>,在遇到关卡时进行相应的操作,关卡有四种,每一种对应的操作不同,因此此处可运用switch-case 循环结构在每走一步操作后均进行判断是否踩到关卡,在根据判断的结果进行下一步操作,每一次操作完成后 ,重新绘制最新的地图。

2、代码实现

一、玩家掷骰子,二人轮流投掷,当有一人胜利时结束游戏 。投掷骰子可用函数Random()产生随机数实现,每前进一步后需要检查游戏是否胜利,方法如下 :

 /// <summary>
  /// 检查坐标是否越界
  /// </summary>
 static void CheckPos()
         {
             ; i <= ; i++)
             {
                 )
                 {
                     playerPos[i] = ;
                 }
                 )
                 {
                     playerPos[i] = ;
                 }
             }
         }

当遇到关卡时,根据关卡设定的性质进行操作,在遇到幸运转盘时可供用户进行选择1:与对方交换 位置,2:轰炸对方,让对方后退6格,此处需要让用户输入1或者2,在读取时需要对用户键入的值进行检验,可用以下方法实现:

 static int ReadInt(int min,int max)
         {
             while (true)
             {
                 try
                 {
                     int number = Convert.ToInt32(Console.ReadLine());
                     if(number<min||number>max)
                     {
                         Console.WriteLine("只能输入{0}-{1}之间的数字,请重新输入!", min, max);
                         continue;
                     }
                     return number;
                 }
                 catch
                 {
                     Console.WriteLine("只能输入数字,请重新输入!");
                 }
             }
         }

当遇到关卡3暂停时,需要用户在下一次该行动时暂停一次,此处可定义一个bool 类型的数组来表示用户是否应该在这一步暂停操作 ,下面给出用户A投掷 的代码:

             //这个循环中 玩家轮流掷骰子,当任何一人坐标>=99时,游戏结束
             ]<&&playerPos[]<)
             {
                 Random r = new Random();//产生随机数
                 int Step;//存放产生的随机数;

                 ] == false)
                 {
                     #region//玩家A掷骰子
                     Console.WriteLine(]);
                     ConsoleKeyInfo rec = Console.ReadKey(true);
                     if (rec.Key == ConsoleKey.Tab)
                     {
                         Step = ;
                     }
                     else
                     {
                         Step = r.Next(, );
                     }
                     Console.WriteLine(], Step);
                     Console.WriteLine(]);
                     Console.ReadKey(true);//不显示 按下按下的按键的值   

                     playerPos[] = playerPos[] + Step;//更改坐标<一旦坐标发生改变,判断是否大于99或 小于0>
                     CheckPos();
                     ] == playerPos[])//玩家A踩到玩家B
                     {
                         playerPos[] = ;
                         msg = ], names[]);//Format函数用于拼接字符段
                     }

                     #region
                     else //没踩到,判断此位置是否有其他关卡
                     {
                         ]])
                         {
                             :
                                 //普通位置,无效果
                                 msg = "";
                                 break;
                             :
                                 //幸运转盘
                                 Console.Clear();
                                 DrownMap();
                                 Console.WriteLine(]);
                                 Console.WriteLine("1:交换位置  2: 轰炸 ");
                                 , );
                                 )
                                 {
                                     int temp;
                                     temp = playerPos[];
                                     playerPos[] = playerPos[];
                                     playerPos[] = temp;
                                     msg = ], names[]);
                                 }
                                 else
                                 {
                                     playerPos[] = playerPos[] - ;
                                     CheckPos();
                                     msg = ], names[]);
                                 }
                                 break;
                             :
                                 //地雷
                                 playerPos[] = playerPos[] - ;
                                 CheckPos();
                                 msg = ]);
                                 break;
                             :
                                 //暂停
                                 isStop[] = true;
                                 msg = ]);
                                 break;
                             :
                                 //时空隧道
                                 playerPos[] = playerPos[] + ;
                                 CheckPos();
                                 msg = ]);
                                 break;
                         }
                     }
                     #endregion
                     Console.WriteLine("按任意键开始行动...");
                     Console.ReadKey(true);
                     Console.Clear();
                     DrownMap();
                     if (msg != "")
                     {
                         Console.WriteLine(msg);
                     }
                     Console.WriteLine(], Step);
                     Console.WriteLine("*******w玩家A和玩家B的位置如下***********");
                     Console.WriteLine(], playerPos[] + );
                     Console.WriteLine(], playerPos[] + );
                     #endregion
                 }
                 else
                 {
                     //说明A暂停一次
                     isStop[] = false;
                 }
                 ]>=)
                 {
                     break;
                 }
         #region 玩家B掷骰子
         #endregion

 }                

学习自传智播客教程

---电杆

C#小程序飞行棋关卡操作的更多相关文章

  1. C#小程序飞行棋地图绘制

    1. 初始化地图,在绘制时可先将地图进行初始化,用数组来存储关卡的位置,然后利用循环给地图中 关卡所在处赋予代表关卡的值. 关键代码如下 /// <summary> /// 初始化游戏地图 ...

  2. 积累的VC编程小技巧之文件操作

    1.删除文件夹 // 删除文件夹及其所有内容void CBaseDoc::RemoveFolder(const CString &strPathName){    CString path = ...

  3. 积累的VC编程小技巧之树操作

    1.如何在TreeList中加图标? [问题提出]  请问treeview控件和treectrl控件的用法有何不同呢?向如何imagelist控件中加图象呀?  [解决方法]  1)    HICON ...

  4. C#小程序呢飞行棋设计分析

    C#小程序飞行棋,程序效果图 1.设计分析 这个程序界面大致分为四部分: ① 最上面游戏名字界面 ②信息提示区 ③游戏界面区 ④游戏操作提示区 2.分区设计实现 一.游戏界面显示区,由于只需要显示出图 ...

  5. 历时一周,unity3d+xtion打造我的第一个休闲体感小游戏《空降奇兵》

    1.游戏介绍 本游戏属于休闲小游戏,主要操作如下: 菜单控制:举起左手或右手,点击左边或者右边的菜单:挥动左手或右手,选择关卡: 操作方式:玩家跳跃,游戏中的伞兵从飞机开始降落:玩家通过控制伞兵的左右 ...

  6. 微信小程序小技巧系列《一》幻灯片,tab导航切换

    作者:gou-tian 来自:github 幻灯片 使用微信小程序原生组件swiper实现. <swiper indicator-dots="{{indicatorDots}}&quo ...

  7. Javascript的DOM操作 - 你真的了解吗?

    摘要 想稍微系统的说说对于DOM的操作,把Javascript和jQuery常用操作DOM的内容归纳成思维导图方便阅读,同时加入性能上的一些问题. 前言 在前端开发的过程中,javascript极为重 ...

  8. Python 序列通用操作介绍

    上一篇:python字符串基础一 下一篇:Python 列表操作简介 序列概览 Python包含6种内置的序列:列表.元组.字符串 .Unicode字符串.buffer对象.xrange对象.在序列中 ...

  9. 最近火到不行的微信小程序的常识

    满网都是微信小程序,技术dog们不关注都不行了.先别忙着去学怎么开发小程序,先纠正一下你对微信小程序的三观吧~~~~ 小程序目前被炒得沸沸扬扬,无数媒体和企业借机获取阅读流量. 这再次证明一点,微信想 ...

随机推荐

  1. 基于NPOI导出和导入Excel

    概述 NPOI,顾名思义,就是POI的.NET版本.NPOI就是用.NET语言编写的一套数据导出Excel的开源项目,支持XML.xls.xlsx.ppt等格式..NET不仅实现Excel导出还可以实 ...

  2. ZOJ Problem Set - 1067 Color Me Less

    这道题目很简单,考察的就是结构体数组的应用,直接贴代码了 #include <stdio.h> #include <math.h> typedef struct color { ...

  3. codeforces A. Difference Row 解题报告

    题目链接:http://codeforces.com/problemset/problem/347/A 题目意思:给出一个序列 a1, a2, ..., an , 通过重排序列,假设变成 x1, x2 ...

  4. [LeetCode]题解(python):046-Permutations

    题目来源 https://leetcode.com/problems/permutations/ Given a collection of distinct numbers, return all ...

  5. iPad中控制器view的width和height

    一.iPad中控制器view的width和height 1> 规律 * width 是宽高中最小的那个值 * height 是宽高中最大的那个值 2> 举例(比如窗口根控制器的view,有 ...

  6. 《Unix网络编程》卷2 读书笔记 第3章- System V IPC

    1. 概述 三种类型的System V IPC:System V 消息队列.System V 信号量.System V 共享内存区 System V IPC在访问它们的函数和内核为它们维护的信息上共享 ...

  7. STL中的单向队列queue

    转载自:http://blog.csdn.net/morewindows/article/details/6950917 stl中的queue指单向队列,使用时,包含头文件<queue>. ...

  8. [Redux] Implementing Store from Scratch

    Learn how to build a reasonable approximation of the Redux Store in 20 lines. No magic! const counte ...

  9. 解决Button在IE6、7下的自适应宽度问题

    很早就遇到过这么个小问题,但由于其并未影响到实际作用和美观就没有正面解决它,现在,我们来试着解决它. 写一个Button,有两种方式:其一,直接button标签:其二,input type=”butt ...

  10. setCentralWidget就可以把Qwidget设置为QMainWindow的主窗口

    前面说的return app.exec() 这句话是用来使程序进入事件循环,除了直接递交的事件外,所有的事件都要在这个循环中被一层一层的分发,最后找到相应的处理函数来处理事件. 顶级窗口和顶级窗口是存 ...