• C#飞行棋游戏


      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 
      7 namespace _05.飞行棋游戏
      8 {
      9     class Program
     10     {
     11         //用静态字段来模拟全局变量
     12         static int[] Maps = new int[100];
     13         //声明一个静态数组来存储玩家A和玩家B的坐标
     14         static int[] PlayerPos = new int[2];
     15         //存储两个玩家的姓名
     16         static string[] PlayerNames = new string[2];
     17 
     18         static void Main(string[] args)
     19         {
     20             //1.画游戏头
     21             //2.初始化地图(加载地图所需要的资源)
     22             //将整数数组中的数字编成控制台中显示的特殊字符串的过程--初始化地图
     23             //3.画地图
     24             //4.玩游戏
     25             GameShow();
     26             #region 玩家姓名输入
     27             Console.WriteLine("请输入玩家A的姓名");
     28             PlayerNames[0] = Console.ReadLine();
     29             while (PlayerNames[0] == "")
     30             {
     31                 Console.WriteLine("玩家A的姓名不能为空,请重新输入");
     32                 PlayerNames[0] = Console.ReadLine();
     33             }
     34 
     35             Console.WriteLine("请输入玩家B的姓名");
     36             PlayerNames[1] = Console.ReadLine();
     37             while (PlayerNames[1] == "" || PlayerNames[1] == PlayerNames[0])
     38             {
     39                 if (PlayerNames[1] == "")
     40                 {
     41                     Console.WriteLine("玩家B的姓名不能为空,请重新输入");
     42                     PlayerNames[1] = Console.ReadLine();
     43                 }
     44                 else
     45                 {
     46                     Console.WriteLine("玩家B的姓名不能和玩家A的姓名相同,请重新输入");
     47                     PlayerNames[1] = Console.ReadLine();
     48                 }
     49             }
     50             #endregion
     51 
     52             //玩家输入姓名OK后,首先应该清屏
     53             Console.Clear();//清屏
     54             GameShow();
     55             Console.WriteLine("{0}的士兵用A表示", PlayerNames[0]);
     56             Console.WriteLine("{0}的士兵用B表示", PlayerNames[1]);
     57 
     58             InitailMap();
     59             DrawMap();
     60 
     61             //玩家A和玩家B都没到终点,游戏继续
     62             while (PlayerPos[0] < 99 && PlayerPos[1] < 99)
     63             {
     64                 Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[0]);
     65                 Console.ReadKey(true);
     66                 Console.WriteLine("{0}掷出了4",PlayerNames[0]);
     67                 PlayerPos[0] += 4;
     68                 Console.ReadKey(true);
     69                 Console.WriteLine("{0}按任意键开始行动",PlayerNames[0]);
     70                 Console.ReadKey(true);
     71                 Console.WriteLine("{0}行动完了",PlayerNames[0]);
     72                 Console.ReadKey(true);
     73                 //玩家A有可能踩到了玩家B、方块、幸运轮盘、地雷、暂停、时空隧道
     74                 if (PlayerPos[0]==PlayerPos[1])
     75                 {
     76                     Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}退6格",PlayerNames[0],PlayerNames[1],PlayerNames[1]);
     77                     PlayerPos[1] -= 6;
     78                     Console.ReadKey(true);
     79                 }
     80                 else//踩到关卡
     81                 {
     82                     //玩家坐标
     83                     
     84                     switch (Maps[PlayerPos[0]])//0 1 2 3 4
     85                     {
     86                         case 0:Console.WriteLine("玩家{0}踩到了方块,安全", PlayerNames[0]);
     87                             Console.ReadKey(true);
     88                             break;
     89                         case 1:Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择:1--交换位置;2--轰炸对方退6格",PlayerNames[0]);
     90                             string input = Console.ReadLine();
     91                             Console.ReadKey(true);
     92                             break;
     93                     }
     94                 }
     95             }
     96 
     97             Console.ReadKey();
     98         }
     99 
    100         /// <summary>
    101         /// 画游戏头
    102         /// </summary>
    103         public static void GameShow()
    104         {
    105             Console.ForegroundColor = ConsoleColor.DarkGreen;
    106             Console.WriteLine("*************************************************************");
    107             Console.ForegroundColor = ConsoleColor.DarkBlue;
    108             Console.WriteLine("*************************************************************");
    109             Console.ForegroundColor = ConsoleColor.Cyan;
    110             Console.WriteLine("*************************************************************");
    111             Console.ForegroundColor = ConsoleColor.Red;
    112             Console.WriteLine("**********************飞行棋游戏*****************************");
    113             Console.ForegroundColor = ConsoleColor.DarkGray;
    114             Console.WriteLine("*************************************************************");
    115             Console.ForegroundColor = ConsoleColor.Blue;
    116             Console.WriteLine("*************************************************************");
    117             Console.ForegroundColor = ConsoleColor.Green;
    118             Console.WriteLine("*************************************************************");
    119         }
    120 
    121         /// <summary>
    122         /// 初始化地图
    123         /// </summary>
    124         public static void InitailMap()
    125         {
    126             int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘○
    127             for (int i = 0; i < luckyturn.Length; i++)
    128             {
    129                 Maps[luckyturn[i]] = 1;
    130             }
    131 
    132             int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
    133             for (int i = 0; i < landMine.Length; i++)
    134             {
    135                 Maps[landMine[i]] = 2;
    136             }
    137 
    138             int[] pause = { 9, 27, 63, 93 };//暂停△
    139             for (int i = 0; i < pause.Length; i++)
    140             {
    141                 Maps[pause[i]] = 3;
    142             }
    143 
    144             int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道##
    145             for (int i = 0; i < timeTunnel.Length; i++)
    146             {
    147                 Maps[timeTunnel[i]] = 4;
    148             }
    149         }
    150 
    151         /// <summary>
    152         /// 画地图
    153         /// </summary>
    154         public static void DrawMap()
    155         {
    156             Console.WriteLine("图例:幸运轮盘:○    地雷:☆    暂停:△    时空隧道:##");
    157 
    158             //第一横行
    159             for (int i = 0; i < 30; i++)
    160             {
    161                 Console.Write(DrowStringMap(i));
    162             }
    163 
    164             //画完第一横行后应该换行
    165             Console.WriteLine();
    166 
    167             //第一竖行
    168             for (int i = 30; i < 35; i++)
    169             {
    170                 for (int j = 0; j <= 28; j++)
    171                 {
    172                     Console.Write("  ");
    173                 }
    174                 Console.Write(DrowStringMap(i));
    175                 Console.WriteLine();
    176             }
    177 
    178             //第一横行:倒序
    179             for (int i = 64; i >= 35; i--)
    180             {
    181                 Console.Write(DrowStringMap(i));
    182             }
    183 
    184             //画完第二横行后应该换行
    185             Console.WriteLine();
    186 
    187             //第二竖行
    188             for (int i = 65; i <= 69; i++)
    189             {
    190                 Console.WriteLine(DrowStringMap(i));
    191             }
    192 
    193             //第二横行
    194             for (int i = 70; i <= 99; i++)
    195             {
    196                 Console.Write(DrowStringMap(i));
    197             }
    198 
    199             //画完最后一行应该换行
    200             Console.WriteLine();
    201 
    202         }
    203 
    204         /// <summary>
    205         /// 从画地图方法中抽象出来的方法
    206         /// </summary>
    207         /// <param name="i">地图中的位置</param>
    208         /// <returns>要打印的字符串</returns>
    209         public static string DrowStringMap(int i)
    210         {
    211             //声明str接收要打印的值
    212             string str = "";
    213             //玩家A和玩家B的坐标相同,并且都在地图上,则画<>
    214             if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i)
    215             {
    216                 str = "<>";
    217             }
    218             else if (PlayerPos[0] == i)
    219             {
    220                 str = "A";
    221             }
    222             else if (PlayerPos[1] == i)
    223             {
    224                 str = "B";
    225             }
    226             else
    227             {
    228                 switch (Maps[i])
    229                 {
    230                     case 0:
    231                         Console.ForegroundColor = ConsoleColor.Yellow;
    232                         str = "";
    233                         break;
    234                     case 1:
    235                         Console.ForegroundColor = ConsoleColor.Green;
    236                         str = "";
    237                         break;
    238                     case 2:
    239                         Console.ForegroundColor = ConsoleColor.Red;
    240                         str = "";
    241                         break;
    242                     case 3:
    243                         Console.ForegroundColor = ConsoleColor.Blue;
    244                         str = "";
    245                         break;
    246                     case 4:
    247                         Console.ForegroundColor = ConsoleColor.DarkCyan;
    248                         str = "##";
    249                         break;
    250                 }
    251             }
    252 
    253             return str;
    254         }
    255     }
    256 }
    257   
  • 相关阅读:
    NOIP201310华容道
    NOIP201110观光公交
    markdown
    【NOIP2016】愤怒的小鸟
    【NOIP2016】组合数问题
    [TJOI2019]唱,跳,rap,篮球(生成函数,组合数学,NTT)
    CF1217E Sum Queries? (线段树)
    CF1178F Short/Long Colorful Strip(DP)
    ZROI 暑期高端峰会2019 总结
    [HNOI2012]集合选数(构造,状态压缩,DP)
  • 原文地址:https://www.cnblogs.com/happyzwt/p/7712607.html
Copyright © 2020-2023  润新知