2026/1/27 9:45:53
网站建设
项目流程
广州站到广州南站地铁要多久,wordpress注册评论,邮箱域名是什么,网站家建设培训学校自走棋我们学习C#这么多天了#xff0c;是不是该做一个小项目给自己展示一下学习成果#xff0c;那就来做一个自走棋的游戏吧游戏头我们先做游戏头的代码#xff0c;做一个方法在main函数里面去调用static void InitGameShow()
{ConsoleColor orginalConsoleColor.Foregroun…自走棋我们学习C#这么多天了是不是该做一个小项目给自己展示一下学习成果那就来做一个自走棋的游戏吧游戏头我们先做游戏头的代码做一个方法在main函数里面去调用static void InitGameShow() { ConsoleColor orginalConsoleColor.ForegroundColor; Console.ForegroundColorConsoleColor.Green; Console.WriteLine(*****************************); Console.ForegroundColorConsole.Color.Red; Console.WriteLine(*****************************); Console.ForegroundColorConsole.Color.Red; Console.WriteLine(*********飞行棋游戏1.0版本***********); Console.ForegroundColorConsole.Color.Blue; Console.WriteLine(*****************************); Console.ForegroundColorConsole.Color.Yellow; Console.WriteLine(*****************************); Console.ForegroundColororiginal; }定义玩家接着我们定义玩家用一个长度为2的数组来表示索引值为0表示玩家1索引值为2表示玩家2public static string []Namenew string[2];//存储玩家姓名的字符串数组 static void InitPlay() { Console.WriteLine(请输入玩家A的名字); Name[0]Console.ReadLine();//把玩家添加到数组里面 while(Name[0]) { Console.WriteLine(输入玩家名字不能为口请重新输入); Name[0]Console.ReadLine(); } Console.WriteLine(请输入玩家B的名字); Name[1]Console.ReadLine(); while(Name[1]||Name[0]Name[1])//如果为空 或者玩家A和玩家B的名字一样 { if(Name[1]) { Console.WriteLine(输入玩家名字不能为空请重新输入); Name[1]Console.ReadLine(); } else { Console.WriteLine(不能重名请重新输入); Name[1]Console.ReadLine(); } }画图我们用数组的方式去画图如int[100]表示有100个格子而我们没有去定义数组里面的元素所以说里面的每个元素都为0数组的默认值为0事件格子我们可以用1234去表示public static int[]Mapsnew int[100];//100个格子默认值[0,0,0,0,0...] //初始化地图 static void InitMap() { //地图格子100格 //幸运格子位置的数组 int[]lucknew int[] {6,10,28,40,68,81};//第几个格子就是幸运格 for(int i0;iluck.Length;i) { Maps[luck[i]1;//[0,0,0,0,0,1,0] } int[] landMine { 5, 13, 48,54, 80, 94 };//地雷 for (int i 0; i landMine.Length; i) { Maps[landMine[i]] 2;//地雷对应的类型为2 } int[] pause { 9, 27, 60, 93 };//暂停 for (int i 0; i pause.Length; i) { Maps[pause[i]] 3;//暂停对应的类型是3 } int[] timeTunnel { 20,66, 90 };//时空跳跃 for (int i 0; i timeTunnel.Length; i) { Maps[timeTunnel[i]] 4;//时空跳跃对应类型是4 } }玩家位置用一个数组来存储玩家的位置然后在地图上进行表示public static int[] PlayPos new int[2];//存储玩家位置第一个元素存储玩家A的位置如PlayPos[0]90,代表玩家A走到90格 static string DrawGezi(int i)//DrawGezi(30)绘制第30格位置的图形 { string s; //确定A和B是不是在同一位置 if(PlayPos[0]playPos[1]PlayPos[1]i)//在同一位置 PlayPos[1]i 确定玩家在地图上 { Console.ForegroundColorConsoleColor.Red; sI ; } else if(PlayPos[0]i)//如果玩家在地图上显示A { Console.ForegroundColor ConsoleColor.Red; s ; } else if(PlayPos[1]i)//如果玩家B在地图上显示B { Console.ForegroundColor ConsoleColor.Red; s ; }else//其余格子 { //开始绘制道具和地图格子 //根据map数组里面的元素绘制不同事件 //Map[30]的值是01234哪一个 switch(Maps[i]) { case 0: Console.ForegroundColor ConsoleColor.White; s O ; break; case 1: Console.ForegroundColor ConsoleColor.Blue ; s L ;//幸运 break; case 2: Console.ForegroundColor ConsoleColor.DarkMagenta; s D ;//地雷 break; case 3: Console.ForegroundColor ConsoleColor.Green ; s P ;//暂停 break; case 4: Console.ForegroundColor ConsoleColor.Yellow; s C ;//传送 break; default: break; } } return s; }绘制地图static void DrawMap() { Console.WriteLine(图例幸运轮盘L 地雷D 暂停P 时空隧道C ); //第一行绘制30个格子 for(int i0;i30;i) { //30个正常图像还可以能有道具 //Map[i]Maps[0] Console.Write(DrawGezi(i)); } Console.WriteLine(); //第二次绘制 for(int i30;i35;i)//外层循环创建几行正方形5行 { for(int j0;j29;j)//一行前29个全是空格 { Console.Write( ); } Console.WriteLine(DrawGezi(i));//第30个绘制对应图像 } //第三次绘制倒着绘制 for(int i64;i35;i--) { Console.Write(DrawGezi(i)); } Console.WriteLine(); //第四次绘制 for(int i65;i70;i) { Console.WriteLine(DrawGezi(i)); } //第五次绘制 for (int i 70; i 100; i) { Console.Write(DrawGezi(i)); } Console.WriteLine();游戏内容该区域写掷骰子踩到事件格子的情况static void PlayerShow() { Console.WriteLine($玩家{Name[0]}用A表示); Console.WriteLine($玩家{Name[1]}用B 表示); } static void PlayGame(int num) { Random randomnew Random(); int n1random.Next(1,7);//骰子 //提示玩家开始投骰子 Console.WriteLine($玩家{Name[num]}开始掷骰子按下任意键开始); Console.ReadLine(true);//按下任意键 //显示玩家点数 Console.WriteLine($玩家{Name[num]}掷出了{n1}); PlayPos[num] n1; //行动 Console.WriteLine($玩家{Name[num]}行动完了按下任意键继续); Console.ReadKey(true);//按下任意键 //判断踩到的道具根据Maps数组里面的元素是01234来进行判断 int pos PlayPos[num]99?99:PlayPos[num]//取出当前玩家位置 switch(Maps[pos]) { case 0: Console.WriteLine($玩家{Name[num]}无事发生请按下任意键继续); Console.ReadKey(true);//按下任意键 break; case 1://幸运 Console.WriteLine($玩家{Name[num]}踩到了狗屎运喵请选择以下选项\n1交换位置2对手后退4格); string s Console.ReadLine(); while (true)//玩家在输入字符不符合一直输入 { if( s 1)//交换位置 { //PlayPos[num]当前玩家 playpos[1-num]另外玩家 int temp PlayPos[num]; PlayPos[num] PlayPos[1 - num]; PlayPos[1 - num] temp; Console.WriteLine(交换成功咯咯咯按下任意键继续游戏); Console.ReadKey(true); break ; } else if( s 2) { PlayPos[1 - num] - 4; Console.WriteLine(对方后退咯加油按下任意键继续游戏); Console.ReadKey(true); break; } else { Console.WriteLine(输入的指令不对请重新输入); s Console.ReadLine(); } } break; case 2://地雷 Console.WriteLine($玩家{Name[num]}踩到地雷了砰~后退3格请按下任意键继续); //玩家位置减3 PlayPos[num] -3;//当前玩家 另外一个玩家playpos[1-num] Console.ReadKey(true);//按下任意键 break; case 3://暂停 Console.WriteLine($玩家{Name[num]}看到了美杜莎的眼睛石化一回合请按下任意键继续); Console.ReadKey(true);//按下任意键 isPause[num]true;//修改指定玩家的状态 break; case 4://传送 Console.WriteLine($玩家{Name[num]}踩到了一个神奇的格子前进了4格请按下任意键继续); PlayPos[num] 4; Console.ReadKey(true);//按下任意键 break; default: break; } if (PlayPos[0] 0) { PlayPos[0] 0; } if (PlayPos[0] 99) { PlayPos[0] 99; } if (PlayPos[1] 0) { PlayPos[1] 0; } if (PlayPos[1] 99) { PlayPos[1] 99; } //清空控制台 //Console.Clear(); //玩家走完之后需要重新绘制地图 InitGameShow();//游戏头 PlayerShow(); DrawMap(); }调方法public static bool[]isPausenew bool[2];//bool数组元素1 玩家1的状态元素2玩家2的状态默认值为[false,false] static void Main(string[] args) { //1显示游戏头 InitGameShow(); //2初始化玩家姓名 InitPlayer(); //3初始化格子地图种类 InitMap(); //4初始化绘制地图 DrawMap(); //5展示玩家 PlayerShow(); //6开始游戏 //玩家1和玩家2都没有到终点的时候 开始玩PlayPos[0]玩家1的位置;PlayPos[1]玩家2的位置 while(PlayPos[0]99PlayPos[1]99) { //显示玩家位置 Console.WriteLine($玩家1:{PlayPos[0]}); Console.WriteLine($玩家2:{PlayPos[1]}); //玩家通过isPause数组进行状态判断根据bool值判断是否可以玩 //对玩家1进行判断 if(isPause[0]false) { PlayGame(0); } else//isPause[0]true(踩到暂停键 { isPause[0] false;//走到else 证明isPause[1]true 还必须把状态在修改成false状态让if条件成立 } //对玩家1是否到达终点判断 if (PlayPos[0]99) { Console.WriteLine($玩家{Name[0]}战胜了{Name[1]}); break; } //对玩家2的判断 if (isPause[1] false) { PlayGame(1);//可以玩调用玩游戏的方法 } else//isPause[1]true踩到暂停键 { isPause[1] false;//走到else 证明isPause[1]true 还必须把状态在修改成false状态让if条件成立 } if (PlayPos[1] 99) { Console.WriteLine($玩家{Name[1]}战胜了{Name[0]}); } } }