C#控制台实现飞行棋游戏
本文实例为大家分享了C#实现飞行棋游戏的具体代码,供大家参考,具体内容如下
游戏截图:
管理类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class ProgramManage { //随机数 public static Random rd = new Random(); //定义地图大小 public static int[] Maps = new int[100]; // public static bool[] PlayerPause = {false,false }; //定义玩家A和玩家B的坐标,0是玩家A的坐标;1是玩家B的坐标 public static int[] PlayerPos = new int[2]; //存储两个玩家的姓名 public static string[] PlayerName = new string[2]; //定义名字错误类型 public static string[] Error = {"正确","不能有数字","重名了","不能为空" }; //画游戏头 public static void GanmeShow() { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("*************************"); Console.WriteLine("********飞行棋游戏*******"); Console.WriteLine("*************************"); Console.ForegroundColor = ConsoleColor.Green; } //定义地图关卡布局 public static void InitailMap() { int[] luckturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘◎ for (int i = 0; i < luckturn.Length; i++) { Maps[luckturn[i]] = 1; } int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷× for (int i = 0; i < landMine.Length; i++) { Maps[landMine[i]] = 2; } int[] pause = { 9, 27, 60, 93 };//暂停▲ for (int i = 0; i < pause.Length; i++) { Maps[pause[i]] = 3; } int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道卍 for (int i = 0; i < timeTunnel.Length; i++) { Maps[timeTunnel[i]] = 4; } } //定义地图元素。输入坐标值,方法内部判断当前坐标应当放什么符号,返回符号值 public static string MapElement(int i) { string Element = "0"; //如果玩家AB坐标相同并都在当前位置则画一个“<>” if (PlayerPos[0] == i && PlayerPos[1] == i) { Element="<>"; } //有A画A,有B画B,都没有画地图 else if (PlayerPos[0] == i) { Element="A"; } else if (PlayerPos[1] == i) { Element="B"; } else { switch (Maps[i]) { case 0: Element = "□"; break; case 1: Element = "◎"; break; case 2: Element = "×"; break; case 3: Element = "▲"; break; case 4: Element = "卍"; break; } } return Element; } //绘制地图 public static void DrawMap() { Console.ForegroundColor = ConsoleColor.White; //第一横行 for (int i = 0; i < 30; i++) { Console.Write(MapElement(i)); } //第一竖行 for (int i = 30; i < 35; i++) { Console.WriteLine(); Console.Write(" "); Console.Write(MapElement(i)); } //第二横行 Console.WriteLine(); for (int i = 64; i > 34; i--) { Console.Write(MapElement(i)); } //第二竖行 for (int i = 65; i < 70; i++) { Console.WriteLine(); Console.Write(MapElement(i)); } //第三横行 Console.WriteLine(); for (int i = 70; i < 100; i++) { Console.Write(MapElement(i)); } Console.WriteLine(); } //判断姓名是否符合要求 public static int NameJudge(string str) { int result = 0; //判断是否为空 if (str == "") { result = 3; return result; } else { result = 0; } //判断是否是字符串 for (int i = 0; i < str.Length; i++) { if (char.IsNumber(str,i)) { result = 1; return result; } else { result = 0; } } //判断是否重名 for (int i = 0; i < PlayerName.Length; i++) { if (PlayerName[i]==str) { result = 2; return result; } else { result = 0; } } return result; } //投骰子 public static void Play(int player) { PlayerPos[player] += rd.Next(1, 7); } //坐标不能出地图 public static void Limit(int player) { if (PlayerPos[player] < 0) { PlayerPos[player] = 0; } else if (PlayerPos[player] > 99) { PlayerPos[player] = 99; } } //执行规则 public static void GameRule(int player) { //踩到对手 if (PlayerPos[player]==PlayerPos[1-player]) { PlayerPos[1 - player] -= 6; Console.WriteLine("{0}踩到对手,对手退6格", PlayerName[player]); } //什么也没踩到 else if (Maps[PlayerPos[player]] == 0) { Console.WriteLine("{0}玩家前进了,什么也没踩到",PlayerName[player]); } //幸运轮盘 else if (Maps[PlayerPos[player]] == 1) { Console.WriteLine("1,与对手交换位置。2,让对手退回原点"); string chose; while (true) { chose = Console.ReadLine(); if (chose == "1") { int tem = PlayerPos[player]; PlayerPos[player] = PlayerPos[1 - player]; PlayerPos[1 - player] = tem; Console.WriteLine("{0}与对手交换了位置", PlayerName[player]); break; } else if (chose == "2") { PlayerPos[1 - player] = 0; Console.WriteLine("{0}把对手打回原位", PlayerName[player]); break; } else { Console.WriteLine("请重新输入"); } } } //地雷 else if (Maps[PlayerPos[player]] == 2) { PlayerPos[player] -= 6; Console.WriteLine("{0}踩到地雷了,倒退6格", PlayerName[player]); } //暂停 else if (Maps[PlayerPos[player]] == 3) { PlayerPause[player] = true; Console.WriteLine("{0}暂停一回合", PlayerName[player]); } //时空隧道 else if (Maps[PlayerPos[player]] == 4) { PlayerPos[player] += 10; Console.WriteLine("{0}前进10格", PlayerName[player]); } } //判断输赢 public static string Winner() { if (PlayerPos[0]>PlayerPos[1]) { return PlayerName[0]; } else { return PlayerName[1]; } } } }
实现类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { //初始化标题 ProgramManage.GanmeShow(); //初始化地图关卡 ProgramManage.InitailMap(); //输入名字 string name; for (int i = 0; i < ProgramManage.PlayerName.Length; i++) { Console.WriteLine("请输入玩家{0}的名字", i+1); name = Console.ReadLine(); while (ProgramManage.NameJudge(name)!=0) { Console.WriteLine("名字格式不对,{0},请重新输入", ProgramManage.Error[ProgramManage.NameJudge(name)]); name = Console.ReadLine(); } ProgramManage.PlayerName[i] = name; } //刷新界面 Console.Clear(); ProgramManage.GanmeShow(); Console.WriteLine("玩家A名字是{0},玩家B名字{1}", ProgramManage.PlayerName[0], ProgramManage.PlayerName[1]); ProgramManage.DrawMap(); //游戏主循环 //初始化玩家A开始 int player = 0; //两个玩家都没在终点的时候不停的玩游戏 while (ProgramManage.PlayerPos[0]<99&&ProgramManage.PlayerPos[1]<99) { //判断当前玩家是否暂停,如果暂停了就停一回合 if (ProgramManage.PlayerPause[player]==false) { Console.WriteLine("轮到玩家{0}敲回车投骰子", ProgramManage.PlayerName[player]); Console.ReadKey(); //玩家player投骰子 ProgramManage.Play(player); ProgramManage.Limit(player); //清空界面 Console.Clear(); //执行规则,如果踩到了关卡,一直执行,直到踩到空白点位置 while (true) { if (ProgramManage.Maps[ProgramManage.PlayerPos[player]] != 0) { ProgramManage.GameRule(player); ProgramManage.Limit(player); } ProgramManage.GameRule(player); break; } ProgramManage.Limit(player); //变化玩家 player = 1 - player; //刷新地图 ProgramManage.DrawMap(); } else { //当前玩家恢复暂停 ProgramManage.PlayerPause[player] = false; //下一回合让给另一个玩家 player = 1 - player; continue; } } //游戏结束 Console.WriteLine("玩家{0}赢了", ProgramManage.Winner()); Console.ReadKey(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
上一篇:c#实现图片的平移和旋转示例代码
栏 目:C#教程
本文标题:C#控制台实现飞行棋游戏
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/4684.html
您可能感兴趣的文章
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新闻效果的方法
- 01-10C#实现清空回收站的方法
- 01-10C#实现读取注册表监控当前操作系统已安装软件变化的方法
- 01-10C#实现多线程下载文件的方法
- 01-10C#实现Winform中打开网页页面的方法
- 01-10C#实现远程关闭计算机或重启计算机的方法
- 01-10C#自定义签名章实现方法
- 01-10C#文件断点续传实现方法
- 01-10winform实现创建最前端窗体的方法
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 01-10delphi制作wav文件的方法
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 04-02jquery与jsp,用jquery
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10C#中split用法实例总结
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-11ajax实现页面的局部加载
- 01-10SublimeText编译C开发环境设置