C#如何实现简单的飞行棋小游戏
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍了C#如何实现简单的飞行棋小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下1.玩家姓名的输入2.对屏幕
千家信息网最后更新 2025年01月17日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安全错误
数据库的锁怎样保障安全
与数据库相关的热点技术
深圳市聚豪网络技术有限公司
tde数据库加密厂商
网络技术是否属于aid技术
虚拟电厂软件开发
软件开发编程软件
台州电脑软件开发工具
网络安全报告流程
代理服务器能获取密码吗
本地文件连接主机屋数据库
fo4数据库
swich怎么连接ea服务器
数据库脏写
数据库的编译器怎么添加
重庆邮电大学网络技术
网络安全倡议大学生
sql数据库不能联接
mysql 数据库连接时长
刀剑神域服务器维护多久
网络技术论
st单片机软件开发
方舟服务器管理软件
会计人员信息数据库
期待互联网科技有限公司
蓝桥杯java软件开发
庐阳区综合网络技术咨询介绍
分等级的r语言数据库
众筹系统软件开发
网络安全领域的名词解释
南京企业软件开发诚信服务