zoukankan      html  css  js  c++  java
  • C#小程序飞行棋关卡操作

    飞行棋关卡操作

    1、分析设计

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

    2、代码实现

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

     1 /// <summary>
     2  /// 检查坐标是否越界
     3  /// </summary> 
     4 static void CheckPos()
     5         {
     6             for (int i = 0; i <= 1; i++)
     7             {
     8                 if (playerPos[i] > 99)
     9                 {
    10                     playerPos[i] = 99;
    11                 }
    12                 if (playerPos[i] < 0)
    13                 {
    14                     playerPos[i] = 0;
    15                 }
    16             }
    17         }
    View Code

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

     1 static int ReadInt(int min,int max)
     2         {
     3             while (true)
     4             {
     5                 try
     6                 {
     7                     int number = Convert.ToInt32(Console.ReadLine());
     8                     if(number<min||number>max)
     9                     {
    10                         Console.WriteLine("只能输入{0}-{1}之间的数字,请重新输入!", min, max);
    11                         continue;
    12                     }
    13                     return number;
    14                 }
    15                 catch
    16                 {
    17                     Console.WriteLine("只能输入数字,请重新输入!");
    18                 }
    19             }
    20         }
    View Code

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

      1             //这个循环中 玩家轮流掷骰子,当任何一人坐标>=99时,游戏结束
      2             while(playerPos[0]<99&&playerPos[1]<99)
      3             {
      4                 Random r = new Random();//产生随机数
      5                 int Step;//存放产生的随机数;
      6 
      7                 if (isStop[0] == false)
      8                 {
      9                     #region//玩家A掷骰子
     10                     Console.WriteLine("{0}按任意键掷骰子....", names[0]);
     11                     ConsoleKeyInfo rec = Console.ReadKey(true);
     12                     if (rec.Key == ConsoleKey.Tab)
     13                     {
     14                         Step = 6;
     15                     }
     16                     else
     17                     {
     18                         Step = r.Next(1, 7);
     19                     }
     20                     Console.WriteLine("{0}掷出了{1}", names[0], Step);
     21                     Console.WriteLine("{0}按任意键行动...", names[0]);
     22                     Console.ReadKey(true);//不显示 按下按下的按键的值   
     23 
     24                     playerPos[0] = playerPos[0] + Step;//更改坐标<一旦坐标发生改变,判断是否大于99或 小于0>
     25                     CheckPos();
     26                     if (playerPos[0] == playerPos[1])//玩家A踩到玩家B
     27                     {
     28                         playerPos[1] = 0;
     29                         msg = string.Format("{0}踩到了{1},退回原点", names[0], names[1]);//Format函数用于拼接字符段
     30                     }
     31 
     32                     #region
     33                     else //没踩到,判断此位置是否有其他关卡
     34                     {
     35                         switch (Map[playerPos[0]])
     36                         {
     37                             case 0:
     38                                 //普通位置,无效果
     39                                 msg = "";
     40                                 break;
     41                             case 1:
     42                                 //幸运转盘
     43                                 Console.Clear();
     44                                 DrownMap();
     45                                 Console.WriteLine("{0}走到了幸运转盘,请选择运气?", names[0]);
     46                                 Console.WriteLine("1:交换位置  2: 轰炸 ");
     47                                 int userSelect = ReadInt(1, 2);
     48                                 if (userSelect == 1)
     49                                 {
     50                                     int temp;
     51                                     temp = playerPos[0];
     52                                     playerPos[0] = playerPos[1];
     53                                     playerPos[1] = temp;
     54                                     msg = string.Format("{0}选择了与{1}交换位置,哈哈,一夜回到解放前啊", names[0], names[1]);
     55                                 }
     56                                 else
     57                                 {
     58                                     playerPos[1] = playerPos[1] - 6;
     59                                     CheckPos();
     60                                     msg = string.Format("{0}选择了与让 {1}后退6步,自求多福吧", names[0], names[1]);
     61                                 }
     62                                 break;
     63                             case 2:
     64                                 //地雷
     65                                 playerPos[0] = playerPos[0] - 6;
     66                                 CheckPos();
     67                                 msg = string.Format("{0}踩到了地雷,后退6步,阿弥陀佛", names[0]);
     68                                 break;
     69                             case 3:
     70                                 //暂停
     71                                 isStop[0] = true;
     72                                 msg = string.Format("{0}暂停一次!", names[0]);
     73                                 break;
     74                             case 4:
     75                                 //时空隧道 
     76                                 playerPos[0] = playerPos[0] + 6;
     77                                 CheckPos();
     78                                 msg = string.Format("{0}进入了时空隧道 ,前进吧!", names[0]);
     79                                 break;
     80                         }
     81                     }
     82                     #endregion
     83                     Console.WriteLine("按任意键开始行动...");
     84                     Console.ReadKey(true);
     85                     Console.Clear();
     86                     DrownMap();
     87                     if (msg != "")
     88                     {
     89                         Console.WriteLine(msg);
     90                     }
     91                     Console.WriteLine("{0}掷出了{1},行动完成!", names[0], Step);
     92                     Console.WriteLine("*******w玩家A和玩家B的位置如下***********");
     93                     Console.WriteLine("        玩家{0}的位置为{1}", names[0], playerPos[0] + 1);
     94                     Console.WriteLine("        玩家{0}的位置为{1}", names[1], playerPos[1] + 1);
     95                     #endregion
     96                 }
     97                 else
     98                 {
     99                     //说明A暂停一次
    100                     isStop[0] = false;
    101                 }
    102                 if(playerPos[0]>=99)
    103                 {
    104                     break;
    105                 }
    106         #region 玩家B掷骰子
    107         #endregion
    108 
    109 }                
    View Code

    学习自传智播客教程 

     ---电杆      

     

  • 相关阅读:
    Digital Video Stabilization and Rolling Shutter Correction using Gyroscope 论文笔记
    Distortion-Free Wide-Angle Portraits on Camera Phones 论文笔记
    Panorama Stitching on Mobile
    Natural Image Stitching with the Global Similarity Prior 论文笔记 (三)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(二)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(一)
    ADCensus Stereo Matching 笔记
    Efficient Large-Scale Stereo Matching论文解析
    Setting up caffe on Ubuntu
    Kubernetes配置Secret访问Harbor私有镜像仓库
  • 原文地址:https://www.cnblogs.com/wtusoso/p/5856240.html
Copyright © 2011-2022 走看看