本文实例为大家分享了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# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)
Unity通用泛型单例设计模式(普通型和继承自MonoBehaviour)
网友评论