飞行棋关卡操作

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. WebForm Repeater使用

    Repeater: HeaderTemplate: 在加载开始执行一遍 ItemTemplate : 有多少条数据,执行多少遍 FooterTemplate :在加载最后执行一遍 Alternatin ...

  2. JITCompiler、NGen.exe及.NET Native

    一.JITCompiler 如你所知,JIT(just-in-time或“即时”)编译器是CLR的重要组件,它的职责是将IL转换成本地cpu指令. <<CLR via C#>> ...

  3. Linux Socket编程(不限Linux)

    "一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信 ...

  4. 读javascript高级程序设计12-HTML5脚本编程

    一.跨文档消息传递(XDM) 1.发送消息 postMessage(msg,domain)用于发送跨文档消息.第一个参数是要传递的消息内容,第二个参数表示接收方来自哪个域.第二个参数有助于提高安全性, ...

  5. 使用Java的嵌套循环打印出平行四边形、等腰三角形、棱形、矩形的星星图案(Java工程师面试必备)

    第一遍是看了视频,听老师讲解嵌套循环的使用,然后到星星图形这一步,当时都觉得听明白了,但是自己去做,就是写不出来 第二遍看了赵老师的教程,看了好熟悉的感觉,还是自己写不出来 第三遍找网上关于图形的嵌套 ...

  6. 转!Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可 ...

  7. App开发者必备的运营、原型、UI设计工具整理

    移动应用开发者们,Attention please!在接下来的内容里,我们将介绍一些能够提高你们的应用的知名度和品质水平的工具. 仔细看看,下面这些工具你们都知道吗,用过吗?如果你还不知道,或许可以尝 ...

  8. Mcafee两个Mac版本之间的区别

    近期打算为Mac安装个杀毒软件,由于自己windows平台下用的是VSE,所以Mac平台也首选Mcafee家的东西了.到Mcafee官网下载点一看,有以下几个版本可以用在Mac上: 有点懵了,查看了一 ...

  9. LCS最长公共子序列

    问题:最长公共子序列不要求所求得的字符串在所给字符串中是连续的,如输入两个字符串ABCBDAB和BDCABA,字符串BCBA和BDAB都是他们的公共最长子序列 该问题属于动态规划问题 解答:设序列X= ...

  10. 如何让VS根据编译环境选择相应的配置文件

    其实微软还是蛮有创造力的,一个配置文件居然弄了这么多的形式,从原来的ini到现在的xml,总而言之让我们这些在微软殿堂里的程序员翘着屁股追赶. 微软最新的配置文件实际上就是个xml文件,以后缀名.co ...