• 007 飞行棋小项目


    2016-01-16

    1、画游戏头
    2、初始化地图(加载地图所需要的资源)
    将整数数组中的数字编程控制台中显示的特殊字符串的这个过程 就是初始化地图
    3、画地图
    4、玩游戏

    游戏规则:
    如果玩家A踩到了玩家B  玩家B退6格  
    踩到了地雷 退6格
    踩到了时空隧道 进10格
    踩到了幸运轮盘 1交换位置  2 轰炸对方 使对方退6格
    踩到了暂停  暂停一回合  
    踩到了方块  神马都不干

    主要引用用的方法

     1 Map[50]
     2 if(map[40]==1)
     3 {
     4     Console.WriteLine("");
     5 }
     6 
     7 
     8 //初始化地图   Map[6]=1
     9             //我用0表示普通,显示给用户就是 □
    10             //....1...幸运轮盘,显示组用户就◎ 
    11             //....2...地雷,显示给用户就是 ☆
    12             //....3...暂停,显示给用户就是 ▲
    13             //....4...时空隧道,显示组用户就 卐
    14             int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎
    15             int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
    16             int[] pause = { 9, 27, 60, 93 };//暂停▲
    17             int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐
    18             for(int i=0;i<luckyturn.Length;i++)
    19             {
    20                 int n=luckyturn[i];
    21                 Map[n]=1;
    22             }
    23             for(int i=0;i<landMine.Length;i++)
    24             {
    25                 int n=landMine[i];
    26                 Map[n]=1;
    27             }
    28 
    29 
    30   public static void Win()
    31         {
    32             Console.ForegroundColor = ConsoleColor.Red;
    33             Console.WriteLine("");
    34             Console.WriteLine("                    ■                  ◆               ■        ■");
    35             Console.WriteLine("      ■■■■  ■  ■                ◆■         ■    ■        ■");
    36             Console.WriteLine("      ■    ■  ■  ■              ◆  ■         ■    ■        ■");
    37             Console.WriteLine("      ■    ■ ■■■■■■       ■■■■■■■   ■    ■        ■");
    38             Console.WriteLine("      ■■■■ ■   ■                ●■●       ■    ■        ■");
    39             Console.WriteLine("      ■    ■      ■               ● ■ ●      ■    ■        ■");
    40             Console.WriteLine("      ■    ■ ■■■■■■         ●  ■  ●     ■    ■        ■");
    41             Console.WriteLine("      ■■■■      ■             ●   ■   ■    ■    ■        ■");
    42             Console.WriteLine("      ■    ■      ■            ■    ■         ■    ■        ■");
    43             Console.WriteLine("      ■    ■      ■                  ■               ■        ■ ");
    44             Console.WriteLine("     ■     ■      ■                  ■           ●  ■          ");
    45             Console.WriteLine("    ■    ■■ ■■■■■■             ■              ●         ●");
    46             Console.ResetColor();
    47         }

    项目完整源代码:

      1 using System;
      2 
      3 
      4 namespace 飞行棋游戏
      5 {
      6     class Program
      7     {
      8         //我们用静态字段来模拟全局变量
      9         static int[] Maps = new int[100];
     10         //声明一个静态数组用来存储玩家A跟玩家B的坐标
     11         static int[] PlayerPos = new int[2];
     12         //存储两个玩家的姓名
     13         static string[] PlayerNames = new string[2];
     14         //两个玩家的标记
     15         static bool[] Flags = new bool[2];//Flags[0]默认是false  Flags[1]默认也是false
     16         static void Main(string[] args)
     17         {
     18             GameShow();
     19             #region 输入玩家姓名
     20             Console.WriteLine("请输入玩家A的姓名");
     21             PlayerNames[0] = Console.ReadLine();
     22             while (PlayerNames[0] == "")
     23             {
     24                 Console.WriteLine("玩家A的姓名不能为空,请重新输入");
     25                 PlayerNames[0] = Console.ReadLine();
     26             }
     27             Console.WriteLine("请输入玩家B的姓名");
     28             PlayerNames[1] = Console.ReadLine();
     29             while (PlayerNames[1]==""||PlayerNames[1]==PlayerNames[0])
     30             {
     31                 if (PlayerNames[1] == "")
     32                 {
     33                     Console.WriteLine("玩家B的姓名不能为空,请重新输入");
     34                     PlayerNames[1] = Console.ReadLine();
     35                 }
     36                 else
     37                 {
     38                     Console.WriteLine("玩家B的姓名不能玩家A的形同,请重新输入");
     39                     PlayerNames[1] = Console.ReadLine();
     40                 }
     41             }
     42             #endregion
     43             //玩家姓名输入OK之后 我们首先应该清屏 
     44             Console.Clear();//清屏
     45             GameShow();
     46             Console.WriteLine("{0}的士兵用A表示",PlayerNames[0]);
     47             Console.WriteLine("{0}的士兵用B表示",PlayerNames[1]);
     48             //在画地图之前 首先应该初始化地图
     49             InitailMap();
     50             DrawMap();
     51 
     52             //当玩家A跟玩家B没有一个人在终点的时候 两个玩家不停的去玩游戏
     53             while (PlayerPos[0] < 99 && PlayerPos[1] < 99)
     54             {
     55                 if (Flags[0] == false)
     56                 {
     57                     PlayGame(0);//Flags[0]=true;
     58                 }
     59                 else
     60                 {
     61                     Flags[0] = false;
     62                 }
     63                 if (PlayerPos[0] >= 99)
     64                 {
     65                     Console.WriteLine("玩家{0}无耻的赢了玩家{1}",PlayerNames[0],PlayerNames[1]);
     66                     break;
     67                 }
     68                 if (Flags[1] == false)
     69                 {
     70                     PlayGame(1);
     71                 }
     72                 else
     73                 {
     74                     Flags[1] = false;
     75                 }
     76                 if (PlayerPos[1] >= 99)
     77                 {
     78                     Console.WriteLine("玩家{0}无耻的赢了玩家{1}",PlayerNames[1],PlayerNames[0]);
     79                     break;
     80                 }
     81             }//while
     82 
     83 
     84 
     85             Win();
     86 
     87             Console.ReadKey();
     88         }
     89 
     90 
     91 
     92         /// <summary>
     93         /// 胜利
     94         /// </summary>
     95         public static void Win()
     96         {
     97             Console.ForegroundColor = ConsoleColor.Red;
     98             Console.WriteLine("");
     99             Console.WriteLine("                    ■                  ◆               ■        ■");
    100             Console.WriteLine("      ■■■■  ■  ■                ◆■         ■    ■        ■");
    101             Console.WriteLine("      ■    ■  ■  ■              ◆  ■         ■    ■        ■");
    102             Console.WriteLine("      ■    ■ ■■■■■■       ■■■■■■■   ■    ■        ■");
    103             Console.WriteLine("      ■■■■ ■   ■                ●■●       ■    ■        ■");
    104             Console.WriteLine("      ■    ■      ■               ● ■ ●      ■    ■        ■");
    105             Console.WriteLine("      ■    ■ ■■■■■■         ●  ■  ●     ■    ■        ■");
    106             Console.WriteLine("      ■■■■      ■             ●   ■   ■    ■    ■        ■");
    107             Console.WriteLine("      ■    ■      ■            ■    ■         ■    ■        ■");
    108             Console.WriteLine("      ■    ■      ■                  ■               ■        ■ ");
    109             Console.WriteLine("     ■     ■      ■                  ■           ●  ■          ");
    110             Console.WriteLine("    ■    ■■ ■■■■■■             ■              ●         ●");
    111             Console.ResetColor();
    112         }
    113         /// <summary>
    114         /// 画游戏头
    115         /// </summary>
    116         public static void GameShow()
    117         {
    118             Console.ForegroundColor = ConsoleColor.Yellow;
    119             Console.WriteLine("**************************");
    120             Console.ForegroundColor = ConsoleColor.Red;
    121             Console.WriteLine("**************************");
    122             Console.ForegroundColor = ConsoleColor.Green;
    123             Console.WriteLine("**************************");
    124             Console.ForegroundColor = ConsoleColor.Blue;
    125             Console.WriteLine("***0505.Net基础班飞行棋***");
    126             Console.ForegroundColor = ConsoleColor.Cyan;
    127             Console.WriteLine("**************************");
    128             Console.ForegroundColor = ConsoleColor.Green;
    129             Console.WriteLine("**************************");
    130         }
    131         /// <summary>
    132         /// 初始化地图
    133         /// </summary>
    134         public static void InitailMap()
    135         {
    136             int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎
    137             for (int i = 0; i < luckyturn.Length; i++)
    138             {
    139                 //int index = luckyturn[i];
    140                 Maps[luckyturn[i]] = 1;
    141             }
    142             int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷☆
    143             for (int i = 0; i < landMine.Length; i++)
    144             {
    145                 Maps[landMine[i]] = 2;
    146             }
    147             int[] pause = { 9, 27, 60, 93,2,3,4,7,8 };//暂停▲
    148             for (int i = 0; i < pause.Length; i++)
    149             {
    150                 Maps[pause[i]] = 3;
    151             }
    152             int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卐
    153             for (int i = 0; i < timeTunnel.Length; i++)
    154             {
    155                 Maps[timeTunnel[i]] = 4;
    156             }
    157         }
    158         public static void DrawMap()
    159         {
    160             Console.WriteLine("图例:幸运轮盘:◎   地雷:☆   暂停:▲   时空隧道:卐");
    161             #region  第一横行
    162             for (int i = 0; i < 30; i++)
    163             {
    164                 Console.Write(DrawStringMap(i));
    165             }//for
    166             #endregion
    167             //画完第一横行后 应该换行
    168             Console.WriteLine();
    169             #region 第一竖行
    170             for (int i = 30; i < 35; i++)
    171             {
    172                 for (int j = 0; j <= 28; j++)
    173                 {
    174                     Console.Write("  ");
    175                 }
    176                 Console.Write(DrawStringMap(i));
    177 
    178                 Console.WriteLine();
    179             }
    180             #endregion
    181             #region 第二横行
    182             for (int i = 64; i >= 35; i--)
    183             {
    184                 Console.Write(DrawStringMap(i));
    185             }
    186             #endregion
    187             //画完第二横行 应该换行
    188             Console.WriteLine();
    189             #region 第二竖行
    190             for (int i = 65; i <= 69; i++)
    191             {
    192                 Console.WriteLine(DrawStringMap(i));
    193             }
    194             #endregion
    195             #region 第三横行
    196             for (int i = 70; i <= 99; i++)
    197             {
    198                 Console.Write(DrawStringMap(i));
    199             }
    200             #endregion
    201 
    202             //画完最后一行  应该换行
    203             Console.WriteLine();
    204         }//DrawMap方法的结尾
    205         /// <summary>
    206         /// 从画地图的方法中抽象出来的一个方法
    207         /// </summary>
    208         /// <param name="i"></param>
    209         /// <returns></returns>
    210         public static string DrawStringMap(int i)
    211         {
    212             string str = "";
    213             #region 画图
    214             //如果玩家A跟玩家B的坐标相同,并且都在这个地图上,画一个尖括号
    215             if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i)
    216             {
    217                 str = "<>";
    218             }
    219             else if (PlayerPos[0] == i)
    220             {
    221                 //shift+空格
    222                 str = "";
    223             }
    224             else if (PlayerPos[1] == i)
    225             {
    226                 str = "";
    227             }
    228             else
    229             {
    230                 switch (Maps[i])
    231                 {
    232                     case 0:
    233                         Console.ForegroundColor = ConsoleColor.Yellow;
    234                         str = "";
    235                         break;
    236                     case 1:
    237                         Console.ForegroundColor = ConsoleColor.Green;
    238                         str = "";
    239                         break;
    240                     case 2:
    241                         Console.ForegroundColor = ConsoleColor.Red;
    242                         str = "";
    243                         break;
    244                     case 3:
    245                         Console.ForegroundColor = ConsoleColor.Blue;
    246                         str = "";
    247                         break;
    248                     case 4:
    249                         Console.ForegroundColor = ConsoleColor.DarkCyan;
    250                         str = "";
    251                         break;
    252                 }//switch
    253             }//else
    254             return str;
    255             #endregion
    256         }
    257         /// <summary>
    258         /// 玩游戏
    259         /// </summary>
    260         public static void PlayGame(int playerNumber)
    261         {
    262             Random r = new Random();
    263             int rNumber = r.Next(1, 7);
    264             Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[playerNumber]);
    265             Console.ReadKey(true);
    266             Console.WriteLine("{0}掷出了{1}", PlayerNames[playerNumber],rNumber);
    267             PlayerPos[playerNumber] += rNumber;
    268             ChangePos();
    269             Console.ReadKey(true);
    270             Console.WriteLine("{0}按任意键开始行动", PlayerNames[playerNumber]);
    271             Console.ReadKey(true);
    272             Console.WriteLine("{0}行动完了", PlayerNames[playerNumber]);
    273             Console.ReadKey(true);
    274             //玩家A有可能踩到了玩家B 方块 幸运轮盘 地雷 暂停 时空隧道
    275             if (PlayerPos[playerNumber] == PlayerPos[1 - playerNumber])
    276             {
    277                 Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[1 - playerNumber]);
    278                 PlayerPos[1 - playerNumber] -= 6;
    279                 ChangePos();
    280                 Console.ReadKey(true);
    281             }
    282             else//踩到了关卡
    283             {
    284                 //玩家的坐标
    285                 switch (Maps[PlayerPos[playerNumber]])// 0 1 2 3 4
    286                 {
    287                     case 0: Console.WriteLine("玩家{0}踩到了方块,安全。", PlayerNames[playerNumber]);
    288                         Console.ReadKey(true);
    289                         break;
    290                     case 1: Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择 1--交换位置 2--轰炸对方", PlayerNames[playerNumber]);
    291                         string input = Console.ReadLine();
    292                         while (true)
    293                         {
    294                             if (input == "1")
    295                             {
    296                                 Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]);
    297                                 Console.ReadKey(true);
    298                                 int temp = PlayerPos[playerNumber];
    299                                 PlayerPos[playerNumber] = PlayerPos[1 - playerNumber];
    300                                 PlayerPos[1 - playerNumber] = temp;
    301                                 Console.WriteLine("交换完成!!!按任意键继续游戏!!!");
    302                                 Console.ReadKey(true);
    303                                 break;
    304                             }
    305                             else if (input == "2")
    306                             {
    307                                 Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[1 - playerNumber]);
    308                                 Console.ReadKey(true);
    309                                 PlayerPos[1 - playerNumber] -= 6;
    310                                 ChangePos();
    311                                 Console.WriteLine("玩家{0}退了6格", PlayerNames[1 - playerNumber]);
    312                                 Console.ReadKey(true);
    313                                 break;
    314                             }
    315                             else
    316                             {
    317                                 Console.WriteLine("只能输入1或者2  1--交换位置 2--轰炸对方");
    318                                 input = Console.ReadLine();
    319                             }
    320                         }
    321                         break;
    322                     case 2: Console.WriteLine("玩家{0}踩到了地雷,退6格", PlayerNames[playerNumber]);
    323                         Console.ReadKey(true);
    324                         PlayerPos[playerNumber] -= 6;
    325                         ChangePos();
    326                         break;
    327                     case 3: Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[playerNumber]);
    328                         Flags[playerNumber] = true;
    329                         Console.ReadKey(true);
    330                         break;
    331                     case 4: Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[playerNumber]);
    332                         PlayerPos[playerNumber] += 10;
    333                         ChangePos();
    334                         Console.ReadKey(true);
    335                         break;
    336                 }//switch
    337             }//else
    338             ChangePos();//perfect
    339             Console.Clear();
    340             DrawMap();
    341         }
    342         /// <summary>
    343         /// 当玩家坐标发生改变的时候调用
    344         /// </summary>
    345         public static void ChangePos()
    346         {
    347             if (PlayerPos[0] < 0)
    348             {
    349                 PlayerPos[0] = 0;
    350             }
    351             if (PlayerPos[0] >= 99)
    352             {
    353                 PlayerPos[0] = 99;
    354             }
    355 
    356             if (PlayerPos[1] < 0)
    357             {
    358                 PlayerPos[1] = 0;
    359             }
    360             if (PlayerPos[1] >= 99)
    361             {
    362                 PlayerPos[1] = 99;
    363             }
    364         }
    365 
    366 
    367 
    368 
    369 
    370 
    371 
    372     }
    373 }
    View Code

    生成的exe程序:链接: http://pan.baidu.com/s/1boyLE6F 密码: v8ic

  • 相关阅读:
    SharePoint 2013 安装.NET Framework 3.5 报错
    SharePoint 2016 配置工作流环境
    SharePoint 2016 站点注册工作流服务报错
    Work Management Service application in SharePoint 2016
    SharePoint 2016 安装 Cumulative Update for Service Bus 1.0 (KB2799752)报错
    SharePoint 2016 工作流报错“没有适用于此应用程序的地址”
    SharePoint 2016 工作流报错“未安装应用程序管理共享服务代理”
    SharePoint JavaScript API in application pages
    SharePoint 2016 每天预热脚本介绍
    SharePoint 无法删除搜索服务应用程序
  • 原文地址:https://www.cnblogs.com/wsxiao/p/5136003.html
Copyright © 2020-2023  润新知