C#实现飞行棋项目
本文实例为大家分享了C#实现飞行棋项目的具体代码,供大家参考,具体内容如下
1.制作游戏头部:游戏头部介绍
2.绘制地图
使用一维数组装整个地图的路线
如果这个位置是0,绘制普通格子□
如果这个位置是1,绘制幸运轮盘◎
如果这个位置是2,绘制地雷★
如果这个位置是3,绘制暂停▲
如果这个位置是4,绘制时空隧道卍
规划幸运轮盘位置
int[]luckyturn={6,23,40,55,69,83};
规划地雷的位置
int[]landMine={5,13,17,33,38,50,64,80,94};
规划暂停位置
int[]pause={9,27,60,93};
规划时空隧道的位置
int[]timeTunnel={20,25,45,63,72,88,90};
3.设置特殊关卡
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; namespace飞行棋 { classProgram { //////整个地图数组 /// staticint[]Maps=newint[100]; //////玩家的位置 /// staticint[]PlayerPos=newint[2]; //////玩家的姓名 /// staticstring[]PlayerName=newstring[2]; //////记录两名玩家是否可以掷骰子 /// staticbool[]PlayerFlag=newbool[2]; staticvoidMain(string[]args) { //绘制地图头部 ShowTitle(); //输入玩家姓名 Console.WriteLine("请输入玩家A的姓名"); PlayerName[0]=Console.ReadLine(); while(PlayerName[0]=="") { Console.WriteLine("玩家A姓名不能为空,请重新输入"); PlayerName[0]=Console.ReadLine(); } Console.WriteLine("请输入玩家B的姓名"); PlayerName[1]=Console.ReadLine(); while(PlayerName[1]==""||PlayerName[1]==PlayerName[0]) { if(PlayerName[1]=="") { Console.WriteLine("玩家B姓名不能为空,请重新输入"); PlayerName[1]=Console.ReadLine(); } if(PlayerName[1]==PlayerName[0]) { Console.WriteLine("玩家B姓名与玩家A的姓名一致,请重新输入"); PlayerName[1]=Console.ReadLine(); } } //输入完姓名,清空屏幕 Console.Clear(); //重新绘制游戏标题与游戏说明 ShowTitle(); //初始化地图关卡 InitialMap(); //显示地图 DrawMap(); //判断如果没有一个玩家到达终点则一直轮流掷筛子 while(PlayerPos[0]<99&&PlayerPos[1]<99) { if(PlayerFlag[0]==false) { PlayGame(0); } else { PlayerFlag[0]=false; } if(PlayerFlag[1]==false) { PlayGame(1); } else { PlayerFlag[1]=false; } if(PlayerPos[0]==99) { Console.WriteLine("恭喜玩家【{0}】游戏获胜!",PlayerName[0]); break; } if(PlayerPos[1]==99) { Console.WriteLine("恭喜玩家【{0}】游戏获胜!",PlayerName[1]); break; } } Console.ReadLine(); } #region游戏标题 //////设置游戏标题 /// staticvoidShowTitle() { Console.ForegroundColor=ConsoleColor.Blue; Console.WriteLine("************************************"); Console.ForegroundColor=ConsoleColor.Green; Console.WriteLine("************************************"); Console.ForegroundColor=ConsoleColor.Cyan; Console.WriteLine("************************************"); Console.ForegroundColor=ConsoleColor.DarkRed; Console.WriteLine("***************飞行棋***************"); Console.ForegroundColor=ConsoleColor.Cyan; Console.WriteLine("************************************"); Console.ForegroundColor=ConsoleColor.Green; Console.WriteLine("************************************"); Console.ForegroundColor=ConsoleColor.Blue; Console.WriteLine("************************************"); } #endregion #region初始化地图关卡 //////初始化地图关卡 /// staticvoidInitialMap() { //绘制幸运轮盘的位置◎==1 int[]luckyturn={6,23,40,55,69,83}; for(inti=0;i///绘制地图 /// staticvoidDrawMap() { Console.ForegroundColor=ConsoleColor.DarkRed; Console.WriteLine("玩家【{0}】使用A表示:",PlayerName[0]); Console.WriteLine("玩家【{0}】使用B表示:",PlayerName[1]); Console.WriteLine("游戏规则:"); Console.WriteLine(); Console.WriteLine("1.两名玩家轮流掷骰子,规定A玩家先玩掷"); Console.WriteLine("2.踩到□格子安全,没有奖惩!"); Console.WriteLine("3.踩到◎幸运轮盘,可以进行两种选择:a.置换与对方玩家位置;b.进行轰炸对方,是对方倒退6步."); Console.WriteLine("4.踩到★地雷,倒退6步!"); Console.WriteLine("5.踩到▲暂停,下一回合将暂停操作!"); Console.WriteLine("6.踩到卍时空隧道,直接前进10步!"); Console.WriteLine("7.如果踩到对方,则对方直接退6步!"); ///第一横行地图 for(inti=0;i<30;i++) { Console.Write(DrawString(i)); } Console.WriteLine(); ///第一竖行 for(inti=30;i<35;i++) { for(intj=0;j<29;j++) { Console.Write(""); } Console.Write(DrawString(i)); Console.WriteLine(); } ///第二横行 for(inti=64;i>34;i--) { Console.Write(DrawString(i)); } Console.WriteLine(); ///第二竖行 for(inti=65;i<70;i++) { Console.WriteLine(DrawString(i)); } ///第三横行 for(inti=70;i<100;i++) { Console.Write(DrawString(i)); } Console.WriteLine(); } #endregion #region设置地图关卡,玩家初始位置 /// ///设置地图关卡,玩家初识位置 /// ///索引 privatestaticstringDrawString(intpos) { stringstr=""; //判断两个玩家的位置一样,确定两个玩家都在地图中 if(PlayerPos[0]==PlayerPos[1]&&PlayerPos[0]==pos) { Console.ForegroundColor=ConsoleColor.Cyan; str="<>"; } elseif(PlayerPos[0]==pos) { Console.ForegroundColor=ConsoleColor.Cyan; str="A"; } elseif(PlayerPos[1]==pos) { Console.ForegroundColor=ConsoleColor.Red; str="B"; } else { switch(Maps[pos]) { case0: Console.ForegroundColor=ConsoleColor.Blue; str="□"; break; case1: Console.ForegroundColor=ConsoleColor.Cyan; str="◎"; break; case2: Console.ForegroundColor=ConsoleColor.DarkRed; str="★"; break; case3: Console.ForegroundColor=ConsoleColor.DarkCyan; str="▲"; break; case4: Console.ForegroundColor=ConsoleColor.Yellow; str="卍"; break; default: break; } } returnstr; } #endregion #region开始游戏 staticvoidPlayGame(intPlayNum) { Randomr=newRandom(); Console.WriteLine("玩家【{0}】按下任意键掷骰子",PlayerName[PlayNum]); Console.ReadKey(true); intnumber=r.Next(1,7); Console.WriteLine("玩家【{0}】掷出<{1}>点。",PlayerName[PlayNum],number); Console.WriteLine("玩家【{0}】按下任意键进行移动",PlayerName[PlayNum]); Console.ReadKey(true); PlayerPos[PlayNum]+=number; Console.WriteLine("玩家【{0}】移动完成!",PlayerName[PlayNum]); ChangedCheck(); //玩家踩到对方 if(PlayerPos[PlayNum]==PlayerPos[1-PlayNum]) { Console.WriteLine("玩家【{0}】踩到玩家【{1}】,玩家【{1}】退6格",PlayerName[PlayNum],PlayerName[1-PlayNum]); PlayerPos[1-PlayNum]-=6; } else { switch(Maps[PlayerPos[PlayNum]]) { //踩到0普通地板,安全没有奖惩 case0: Console.WriteLine("玩家【{0}】踩到安全地带,没有奖惩!按下任意键继续游戏",PlayerName[PlayNum]); Console.ReadKey(true); break; //踩到1幸运轮盘,选择奖励 case1: Console.WriteLine("玩家【{0}】踩到幸运轮盘,选择奖励:a--->交换位置b--->轰炸对方",PlayerName[PlayNum]); stringinput=Console.ReadLine(); while(true) { if(input=="a") { Console.WriteLine("玩家【{0}】选择与玩家【{1}】交换位置。",PlayerName[PlayNum],PlayerName[1-PlayNum]); inttemp=PlayerPos[PlayNum]; PlayerPos[PlayNum]=PlayerPos[1-PlayNum]; PlayerPos[1-PlayNum]=temp; Console.WriteLine("玩家【{0}】与玩家【{1}】交换位置成功!按下任意键继续游戏",PlayerName[PlayNum],PlayerName[1-PlayNum]); Console.ReadKey(true); break; } elseif(input=="b") { Console.WriteLine("玩家【{0}】选择轰炸玩家【{1}】。",PlayerName[PlayNum],PlayerName[1-PlayNum]); PlayerPos[1-PlayNum]-=6; Console.WriteLine("玩家【{0}】被轰炸倒退6步!按下任意键继续游戏",PlayerName[1-PlayNum]); Console.ReadKey(true); break; } else { Console.WriteLine("选择格式错误,请重新选择!"); input=Console.ReadLine(); } } Console.ReadKey(true); break; //踩到2地雷,倒退6步 case2: Console.WriteLine("玩家【{0}】踩到地雷,倒退6步!按下任意键继续游戏!",PlayerName[PlayNum]); PlayerPos[PlayNum]-=6; Console.ReadKey(true); break; //踩到3暂停,下一回合不能掷骰子 case3: Console.WriteLine("玩家【{0}】踩到暂停,下一回合不能掷骰子!按下任意键继续游戏!",PlayerName[PlayNum]); PlayerFlag[PlayNum]=true; Console.ReadKey(true); break; //踩到4时空穿梭,直接前进10步 case4: Console.WriteLine("玩家【{0}】踩到时空穿梭,直接前进10步!按下任意键继续游戏!",PlayerName[PlayNum]); PlayerPos[PlayNum]+=10; Console.ReadKey(true); break; default: break; } } ChangedCheck(); Console.Clear(); ShowTitle(); DrawMap(); } #endregion staticvoidChangedCheck() { if(PlayerPos[0]<0) { PlayerPos[0]=0; } if(PlayerPos[0]>99) { PlayerPos[0]=99; } if(PlayerPos[1]<0) { PlayerPos[1]=0; } if(PlayerPos[1]>99) { PlayerPos[1]=99; } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。