需求分析

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.设置特殊关卡
代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _01飞行棋
{class Program{/// <summary>/// 整个地图数组/// </summary>static int[] Maps = new int[100];/// <summary>/// 存储玩家的数组/// </summary>static int[] PlayerPos = new int[2];/// <summary>/// 玩家名称的数组/// </summary>static string[] PlayerName = new string[2];static bool[] PlayerFlage = new bool[2];static void Main(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();Console.ReadLine();while (PlayerPos[0]<99&&PlayerPos[1]<99){if (PlayerFlage[0]==false){PlayGame(0);}else{PlayerFlage[0] = false;}if(PlayerFlage[1]==false){PlayGame(1);}else{PlayerFlage[1] = false;}if (PlayerPos[0] == 99){Console.WriteLine("恭喜玩家[{0}]获胜", PlayerName[0]);}if (PlayerPos[1] == 99){Console.WriteLine("恭喜玩家[{0}]获胜", PlayerName[1]);}}}/// <summary>/// 设置游戏标题/// </summary>static void ShowTitle(){//设置颜色Console.ForegroundColor = ConsoleColor.Cyan;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine("***************飞行棋***************");Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.Cyan;Console.WriteLine("************************************");}/// <summary>/// 初始化地图关卡/// </summary>static void InitialMap(){//确定幸运轮盘的位置◎==1int[] luckyturn = { 6, 23, 40, 55, 69, 83 };for (int i=0;i<luckyturn.Length;i++){Maps[luckyturn[i]] = 1;}//确定地雷的位置★==2int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };for (int i=0;i<landMine.Length;i++){Maps[landMine[i]] = 2;}//确定暂停的位置▲==3int[] pause = { 9, 27, 60, 93 };for (int i=0;i<pause.Length;i++){Maps[pause[i]] = 3;}//确定时空隧道的位置卍==4int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };for (int i=0;i<timeTunnel.Length;i++){Maps[timeTunnel[i]] = 4;}}/// <summary>/// 绘制地图/// </summary>static void DrawMap(){Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("玩家[{0}]使用A表示", PlayerName[0]);Console.WriteLine("玩家[{0}]使用B表示", PlayerName[1]);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 (int i=0;i<30;i++){//判断两个玩家的位置一样,确定两个玩家还都在地图中Console.Write(DrawString(i));}Console.WriteLine();///第一竖列for (int i=30;i<35;i++){for (int j=0;j<29;j++){Console.Write(" ");}Console.WriteLine(DrawString(i));}///第二横行for (int i=64;i>34;i--){Console.Write(DrawString(i));}Console.WriteLine();///第二竖列for (int i=65;i<70;i++){Console.WriteLine(DrawString(i));}///第三横行for (int i=70;i<100;i++){Console.Write(DrawString(i));}Console.WriteLine();}/// <summary>/// 判断绘制地图的方法/// </summary>/// <param name="pos"></param>private static string DrawString(int pos){string str = "";if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == pos){Console.ForegroundColor = ConsoleColor.DarkRed;str ="<>";}else if (PlayerPos[0] == pos){Console.ForegroundColor = ConsoleColor.Magenta;str="A";}else if (PlayerPos[1] == pos){Console.ForegroundColor = ConsoleColor.DarkBlue;str ="B";}else{switch (Maps[pos]){case 0:Console.ForegroundColor = ConsoleColor.Cyan;str ="□";break;case 1:Console.ForegroundColor = ConsoleColor.Green;str ="◎";break;case 2:Console.ForegroundColor = ConsoleColor.Red;str ="★";break;case 3:Console.ForegroundColor = ConsoleColor.Blue;str ="▲";break;case 4:Console.ForegroundColor = ConsoleColor.Yellow;str ="卍";break;default:break;}}return str;}//游戏环节static void PlayGame(int playerNum){Random r = new Random();Console.WriteLine("玩家[{0}]按下任意键掷骰子.",PlayerName[playerNum]);Console.ReadKey(true);int number = r.Next(1, 7);Console.WriteLine("玩家[{0}]掷出<{1}>点.",PlayerName[playerNum],number);Console.WriteLine("玩家[{0}]按下任意键进行移动.",PlayerName[playerNum]);Console.ReadKey(true);PlayerPos[playerNum] += number;Console.WriteLine("玩家[{0}]移动完成!",PlayerName[playerNum]);//玩家踩到对方ChangedCheck();if (PlayerPos[playerNum]==PlayerPos[1-playerNum]){Console.WriteLine("玩家[{0}]踩到玩家[{1}],玩家[{1}]退6步", PlayerName[playerNum], PlayerName[1 - playerNum]);PlayerPos[1 - playerNum] -= 6;}else{switch (Maps[PlayerPos[playerNum]]){//踩到普通地板,安全没有奖惩case 0:Console.WriteLine("玩家[{0}]踩到安全地带,没有奖惩!按下任意键继续游戏", PlayerName[playerNum]);Console.ReadKey(true);break;//踩到1幸运轮盘,选择奖励case 1:Console.WriteLine("玩家[{0}]踩到幸运轮盘,请选择:a--交换位置  b--轰炸对方.", PlayerName[playerNum]);string input = Console.ReadLine();while (true){if (input =="a"){Console.WriteLine("玩家[{0}]选择与玩家[{1}]交换位置.",PlayerName[playerNum],PlayerName[1-playerNum]);int temp = PlayerPos[playerNum];PlayerPos[playerNum] = PlayerPos[1 - playerNum];PlayerPos[1 - playerNum] = temp;Console.WriteLine("玩家[{0}]与玩家[{1}]交换位置完成!按下任意键继续游戏", PlayerName[playerNum], PlayerName[1 - playerNum]);Console.ReadKey(true);break;}else if (input == "b"){Console.WriteLine("玩家[{0}]选择轰炸玩家[{1}]", PlayerName[playerNum], PlayerName[1 - playerNum]);PlayerPos[1 - playerNum] -= 6;Console.WriteLine("玩家[{0}]被轰炸倒退6步!按下任意键继续游戏",PlayerName[1-playerNum]);Console.ReadKey(true);break;}else{input = Console.ReadLine();}}break;//踩到2地雷,直接倒退6格case 2:Console.WriteLine("玩家[{0}]踩到地雷,退6格! 按下任意键继续游戏", PlayerName[playerNum]);PlayerPos[playerNum] -= 6;Console.ReadKey(true);break;//踩到3暂停,下个回合暂停case 3:Console.WriteLine("玩家[{0}]踩到暂停,下个回合暂停操作!按下任意键继续游戏", PlayerName[playerNum]);PlayerFlage[playerNum] = true;Console.ReadKey(true);break;//踩到4时空隧道,直接前进10步case 4:Console.WriteLine("玩家[{0}]踩到时空隧道,前进10步!按下任意键继续游戏", PlayerName[playerNum]);PlayerPos[playerNum] += 10;Console.ReadKey(true);break;}}ChangedCheck();Console.Clear();ShowTitle();DrawMap();}static void ChangedCheck(){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;}}}
}

c#飞行棋游戏(控制台)相关推荐

  1. Python飞行棋游戏源代码,基于socket网络通信的小游戏,可设置多个游戏房间及参与飞行棋游戏的玩家

    直接运行ludoServer.py即可,然后用浏览器打开http://127.0.0.1:4399/,完成房间创建.房间设置及玩家设备即可开始游戏 完整程序代码下载地址:Python飞行棋游戏源代码 ...

  2. C#飞行棋游戏源码WinForm版本详细教程

    C#做的飞行棋游戏(WinForm)版本 逻辑不是很难,很好理解,适合新手练手 先看一下游戏规则 两个人轮流掷骰子红人和绿人(必须自定义名称否则无法进行游戏) 投掷出2,4,6点出门,投掷出6点可以在 ...

  3. C#学习编写的飞行棋游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 飞行棋游戏代码(C#)

    220224飞行器v1.0 using System;namespace AeroplaneChess {class Program{//地图static int[] Maps = new int[1 ...

  5. C#基础(10)——飞行棋游戏

    1.打印游戏头 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  6. python飞行棋小游戏

    import random # 地图初始坐标 Maps = [0] *100 # 玩家A和玩家B的初始坐标 PlayerPos = [0]*2 # 存储玩家姓名 playerNames = [&quo ...

  7. 【全栈计划 —— 编程语言之C#】 C# 实现双人飞行棋小游戏

    文章目录 前言 项目结构流程图 项目实现 一.游戏开始界面 二.初始化游戏地图 三.绘制飞行棋地图 四.玩游戏具体逻辑 ① 创建两个玩家角色 ② 具体走到每个关卡触发的结果 ③ 判断胜利 ④ 回首调优 ...

  8. C#-飞行棋小游戏的前识 067

    1) Console.Title 这是Console类的一个属性用于设置控制台的标题 2)Console.Clear() 不用说是一个方法,用于清除控制台屏幕上的文字,只清除该代码中方法前面输出的内容 ...

  9. (c#)小游戏 飞行棋

    飞行棋游戏分为 1.游戏头 2.地图 3.玩家名称 4.行动 这四个 我们先来看游戏头 程序如下 #region 游戏头public static void Youxitou(){Console.Fo ...

最新文章

  1. 跟随美国博导12年,我学到最深刻的不是科研,而是……
  2. 【运维囧事】事先没想到客户光驱坏了,主要原因还是自己当初经验不足
  3. 一个经典的字母排列算法
  4. 郁闷的 ConfigurationManager.OpenExeConfiguration
  5. python中的def语句输出1000以内的回文_各种方法测试回文的性能[Python]
  6. Shell 命令变量去除空格方法
  7. HQChart使用教程70 -通达信语法检测/指标翻译
  8. 计算机网络面经八股文
  9. [HNOI 2015]落忆枫音
  10. 论文阅读-A decade of social bot detection-Communications of the ACM, 2020(机器人检测的十年综述)
  11. matlab单位阶跃响应与单位脉冲响应,python 已知响应函数求单位阶跃响应或脉冲响应...
  12. java食堂外卖系统,校园食堂外卖订餐系统
  13. java做五子棋 视频_java swing实现五子棋小游戏项目源码附带视频指导运行教程...
  14. 鸿蒙首推机型,华为Mate 40成首载鸿蒙机型,花粉终于如愿所偿!
  15. 客户端远程连接MySQL出现2003-Cant connect to MySQL server on xxx
  16. 【密码学Sage代码】椭圆曲线加密/解密(基于《密码编码学与网络安全——原理与实践(第七版)》)
  17. 第一章 开源GIS选型
  18. ESP8266-Arduino编程实例-L9110直流电机风扇传感器模块
  19. Spring Data Neo4j
  20. 转推 最新苹果手机木马分析播报

热门文章

  1. ICML的出版社问题
  2. 百度地图的植入流程介绍
  3. 杭州计算机中级职称评级流程,杭州本地中级工程师****流程
  4. 单向直播面临升级,网易视频云首推多路互动直播
  5. Axure绘制流程图
  6. RNA 25. SCI文章中只有生信没有实验该怎么办?
  7. 电话号码 (哈希表+模拟)
  8. 架构设计:不存在放之四海皆准的解决方案
  9. jasper在JSP中导出pdf和xls
  10. 【转载】计算机视觉研究方向