飞行棋关卡操作

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. 每日设置Bing首页图片为壁纸

    闲来无事,手痒痒要做一个什么小工具. 于是乎便有了本文. 当有一个想法的时候,首先免不了网上搜索一番以便看一下有木有网友有过类似的想法. 很显然--有! 因此本文大代码是从几个地方搜索,然后组合的. ...

  2. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  3. SQL Server日志文件(LDF文件)

    一.日志文件过大处理方法: 1.设置数据库模式为简单模式:ALTER DATABASE 数据库名 SET RECOVERY SIMPLE 或者选中数据库-属性-选项-恢复模式设置为简单. 2.收缩日志 ...

  4. win10启动无法进入桌面

    情况: windows启动显示欢迎界面 无法进入桌面(可以win+E进入资源管理器,可以ctl+alt+delete进入任务管理器) 重启依然无法进入 解决: 重启 按f8 进入安全模式 再次重启OK ...

  5. 解决iis7 0x80070002 错误代码问题

    环境:iis7 win7 64位 vs2012 出现的问题:发布代码iis出现0x80070002 错误代码 解决方案分三步: 1.添加通配符脚本映射 请选择:C:\Windows\Microsoft ...

  6. iOS不用调用,running time自动执行方法

    拿友盟举例子 友盟比较好使,友盟看了他们的文档 他告诉你你要在 appdelegate didFinishLaunch方法里面写了这个东西 [UMSocialData setAppKey:@" ...

  7. 以【猫叫、老鼠跑、主人醒】为例子,使用 javascript 来实现 观察者模式 (有在线演示)

    “猫叫.老鼠跑.主人醒”是一个很古老的话题了,大家也都有各自的想法和解决方案.我也是看了很多,一开始的时候是相当的迷糊,这个怎么就是面试题了?考的是啥呀,和编程有关系吗?又是猫又是老鼠的,晕死了.后来 ...

  8. malloc函数详解

    一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...

  9. Bootstrap初级用户谈谈网页在手机上的显示效果优化

    本人之前已经使用Bootstrap有一段时间了,但是之前做出的网站都只是在电脑端使用,没有注意过手机端的显示效果.这两天自己使用Bootstrap做了一个简单的Web个人日志系统,想在手机端也使用,桌 ...

  10. 特殊IP地址

    主机ID全为0:不分配给任何主机,仅用于表示某个网络的网络地址. 主机ID全为1:不分配给任何主机,仅用做广播地址. IP地址的32位全为1:即255.255.255.255,为有限广播地址(http ...