C#如何实现简单的飞行棋小游戏
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了C#如何实现简单的飞行棋小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下1.玩家姓名的输入2.对屏幕
千家信息网最后更新 2025年11月07日C#如何实现简单的飞行棋小游戏
这篇文章主要介绍了C#如何实现简单的飞行棋小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体内容如下
1.玩家姓名的输入
2.对屏幕进行清屏
3.初始化地图
4.玩家A和玩家B玩游戏
using System;namespace homework{ class data { //静态字段来模拟全局变量 static int[] Maps = new int[100]; //声明一个静态数组用来存储玩家A跟玩家B的坐标 static int[] PlayerPos = new int[2]; static string[] PlayerNames = new string[2]; //两个玩家的标记 static bool[] Flags = new bool[2];//flags[0]默认是false public static void Main(String[] args) { GameShow(); //玩家姓名的输入 #region Console.WriteLine("请输入玩家A的姓名:"); PlayerNames[0] = Console.ReadLine(); while (PlayerNames[0] == "") { Console.WriteLine("玩家A的姓名不能为空,请重新输入"); PlayerNames[0] = Console.ReadLine(); } Console.WriteLine("请输入玩家B的姓名:"); PlayerNames[1] = Console.ReadLine(); while (PlayerNames[1] == "" || PlayerNames[1] == PlayerNames[0]) { if (PlayerNames[0] == "") { Console.WriteLine("玩家A的姓名不能为空,请重新输入"); PlayerNames[1] = Console.ReadLine(); } else { Console.WriteLine("玩家B的姓名不能与玩家A相同"); PlayerNames[1] = Console.ReadLine(); } } #endregion //对屏幕进行清屏 #region Console.Clear();//清屏 GameShow(); Console.WriteLine("{0}的士兵用A表示", PlayerNames[0]); Console.WriteLine("{0}的士兵用B表示", PlayerNames[1]); #endregion //画地图之前 初始化地图 #region InitailMap(); DrawMap(); #endregion //当玩家A跟玩家B没有一个人在终点时候 两个玩家不停地去玩游戏 #region while (PlayerPos[0] < 99 && PlayerPos[0] < 99) { if (Flags[0] == false) { PlayGame(0); } else { Flags[0] = false; } if (PlayerPos[0] > 99) { Console.WriteLine("玩家{0}赢了玩家{1}", PlayerNames[0], PlayerNames[1]); break; } if (Flags[1] == false) { PlayGame(1); } else { Flags[1] = false; } if (PlayerPos[0] > 99) { Console.WriteLine("玩家{0}赢了玩家{1}", PlayerNames[0], PlayerNames[1]); break; } }//while #endregion Console.WriteLine("游戏结束!!!"); Console.ReadLine(); } //画地图头 #region public static void GameShow() { Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("*************************************"); Console.WriteLine("*************************************"); Console.WriteLine("****************飞行棋***************"); Console.WriteLine("*************************************"); Console.WriteLine("*************************************"); } #endregion //初始化地图 #region public static void InitailMap() { int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘 for (int i = 0; i < luckyturn.Length; i++) { Maps[luckyturn[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 = { 2,3,4,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; } } #endregion //画地图 #region public static void DrawMap() { Console.WriteLine("图例:幸运圆圈:○ 地雷:☆ 暂停:▽ 时空隧道:◎"); //第一横行 for (int i = 0; i < 30; i++) { //如果玩家A跟玩家B的坐标相同,画一个尖括号 Console.Write(DrawStringMap(i)); }//for Console.WriteLine(); // 第一竖行 for (int i = 30; i < 35; i++) { for (int j = 0; j <= 28; j++) { Console.Write(" "); } Console.WriteLine(DrawStringMap(i)); } //第二横行 for (int i = 64; i >= 35; i--) { Console.Write(DrawStringMap(i)); } //画第二行 需要进行换行 Console.WriteLine(); //第二竖行 for (int i = 65; i <= 69; i++) { Console.WriteLine(DrawStringMap(i)); } //第三横行 for (int i = 70; i <= 99; i++) { Console.Write(DrawStringMap(i)); } Console.WriteLine(); } #endregion //画地图中抽象出一个方法 #region public static string DrawStringMap(int i) { string str = ""; if (PlayerPos[0] == PlayerPos[1] && PlayerPos[1] == i) { str = "<>"; } else if (PlayerPos[0] == i) { str = "A"; } else if (PlayerPos[1] == i) { str = "B"; } else { switch (Maps[i]) { case 0: str = "□"; break; case 1: str = "○"; break; case 2: str = "☆"; break; case 3: str = "▽"; break; case 4: str = "◎"; break; }//switch }//else return str; } #endregion //双方掷骰子过程 #region public static void PlayGame(int playerNumber) { Random r = new Random(); int rNumber = r.Next(1, 7); Console.WriteLine("{0}按人任意键开始掷骰子", PlayerNames[playerNumber]); Console.ReadKey(true); Console.WriteLine("{0}掷骰子掷出了{1}", PlayerNames[playerNumber], rNumber); PlayerPos[playerNumber] += rNumber; Console.ReadKey(true); Console.WriteLine("{0}按任意键开始行动", PlayerNames[playerNumber]); Console.ReadKey(true); Console.WriteLine("{0}行动完了", PlayerNames[playerNumber]); Console.ReadKey(true); //玩家A有可能踩到了玩家B 方块 幸运玩家 地雷 暂停 时空隧道 if (PlayerPos[playerNumber] == PlayerPos[1 - playerNumber]) { Console.WriteLine("玩家{0}踩到了玩家{1},玩家{1}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]); PlayerPos[1 - playerNumber] -= 6; Console.ReadKey(true); } else//踩到关卡 { //玩家坐标 switch (Maps[PlayerPos[playerNumber]]) { case 0: Console.WriteLine("玩家{0}踩到了方块,安全", PlayerNames[playerNumber]); Console.ReadKey(true); break; case 1: Console.WriteLine("玩家{0}踩到幸运圆圈,请选择1--交换位置 2--轰炸对方", PlayerNames[playerNumber]); string input = Console.ReadLine(); while (true) { if (input == "1") { Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]); Console.ReadKey(true); int temp = PlayerPos[playerNumber]; PlayerPos[playerNumber] = PlayerPos[1 - playerNumber]; PlayerPos[1 - playerNumber] = temp; Console.WriteLine("交换完成!!!按任意键继续游戏!!!"); Console.ReadKey(true); break; } else if (input == "2") { Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{1}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]); Console.ReadKey(true); PlayerPos[1] -= 6; Console.WriteLine("玩家{0}退了6格", PlayerNames[1 - playerNumber]); Console.ReadKey(true); break; } else { Console.WriteLine("只能输入1或者2 1--交换位置 2--轰炸对方"); input = Console.ReadLine(); } } Console.ReadKey(true); break; case 2: Console.WriteLine("玩家{0}踩到了地雷,退6格", PlayerNames[playerNumber]); Console.ReadKey(true); PlayerPos[1 - playerNumber] -= 6; Console.WriteLine("玩家{0}退了6格", PlayerNames[playerNumber]); Console.ReadKey(true); break; case 3: Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[playerNumber]); Flags[playerNumber] = true; Console.ReadKey(true); break; case 4: Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[playerNumber]); Console.ReadKey(true); PlayerPos[playerNumber] += 10; break; }//switch }//else ChangePos(); Console.Clear(); DrawMap(); } #endregion //当玩家坐标发生改变需要判断两者是否超出范围 #region public static void ChangePos() { 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; } } #endregion }}感谢你能够认真阅读完这篇文章,希望小编分享的"C#如何实现简单的飞行棋小游戏"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
玩家
地图
姓名
输入
幸运
地雷
坐标
时空
篇文章
隧道
飞行棋
飞行
位置
骰子
轰炸
选择
小游戏
C#
相同
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ipad苹果服务器出错怎么办
mssql数据库主从同步
手机服务器故障维修
网络安全问题手抄报二年级
交通数据库系统
做软件开发笔记本配置
数据库表的列级约束有哪六种
网络安全文艺汇演
明远软件开发案例
软件开发模型简单介绍
沉迷网络维护网络安全的
网络安全职业技能大赛训练题
斩月屠龙的服务器
服务器怎么远程放资料
遍历接收到的数据库
云服务器企业价格实惠
关于网络安全小卫士的知识
重大网络安全事件数据
沈阳哪有软件开发学校
sql数据库名称重复
2014年绿色发展数据库
企业密信怎么看服务器号
呼和浩特市软件开发培训
秦皇岛软件开发应用范围
万方数据库收不到验证码
云南专业模具软件开发费用
数据库恢复的主要技术是
速达数据库字典
数据库数字类型大全
手机软件开发需要多少