控制台程序源碼-飛行棋

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace test03
{class Program{//用靜態字段模擬全局變量public static int[] Maps = new int[100];//聲明一個靜態數組用來存儲玩家A和玩家B的坐標static int[] PlayerPos = new int[2];//存储两个玩家的姓名static string[] PlayerNames = new string[2];//存儲兩個人的狀態==關於是否執行static bool[] Falgs = new bool[2];static void Main(string[] args){Show();#region 輸入玩家姓名Console.WriteLine("請輸入玩家A的姓名");PlayerNames[0] = Console.ReadLine();while (PlayerNames[0] == " "){Console.WriteLine("玩家的姓名不能為空,請再次輸入");PlayerNames[0] = Console.ReadLine();}Console.WriteLine("請輸入玩家B的姓名");PlayerNames[1] = Console.ReadLine();while (PlayerNames[1] == " " || PlayerNames[1] == PlayerNames[0]){if (PlayerNames[1] == " "){Console.WriteLine("玩家的姓名不能為空,請再次輸入");PlayerNames[0] = Console.ReadLine();}Console.WriteLine("兩名玩家的姓名不能一樣,再從新輸入玩家B的姓名");PlayerNames[0] = Console.ReadLine();}#endregion//輸入姓名完成後清屏  然後從新打印遊戲頭Console.Clear();Console.WriteLine("{0}的戰士用A表示,{1}的戰士用B表示", PlayerNames[0], PlayerNames[1]);InitailMap();DrawMap();while (PlayerPos[0] < 99 && PlayerPos[1] < 99){if (Falgs[0] == false){PalyGame(0);}else{Falgs[0] = false;}if (PlayerPos[0] >= 99){Console.WriteLine("   ");Console.WriteLine("玩家{0}無恥的贏了玩家{1}", PlayerNames[0], PlayerNames[1]);break;}if (Falgs[0] == false){PalyGame(1);}else{Falgs[1] = false;}if (PlayerPos[1] >= 99){Console.WriteLine("   ");Console.WriteLine("玩家{0}無恥的贏了玩家{1}", PlayerNames[1], PlayerNames[0]);break;}}//while結尾Console.WriteLine("GAME OVER");Console.ReadKey();}//遊戲頭public static void Show(){Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine("***************************");Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine("***************************");Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("*****快樂的飛行棋小遊戲****");Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("***************************");Console.ForegroundColor = ConsoleColor.DarkBlue;Console.WriteLine("***************************");Console.ForegroundColor = ConsoleColor.Green;}//加載地圖设置地图难度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 = { 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 void DrawMap(){Console.WriteLine("普通路:□ 幸運輪盤:☆ 地雷:● 暫停:▲ 時空隧道:◎");#region //第一行for (int i = 0; i < 30; i++){Console.Write(DrawStringMap(i));}//forConsole.WriteLine();#endregion #region //第二行竖行for (int i = 30; i < 35; i++){for (int j = 0; j <= 28; j++){Console.Write("  ");}Console.Write(DrawStringMap(i));Console.WriteLine();}#endregion#region 第三行for (int i = 64; i >= 35; i--){Console.Write(DrawStringMap(i));}Console.WriteLine();#endregion#region //第四行竖行for (int i = 65; i < 70; i++){Console.Write(DrawStringMap(i));Console.WriteLine();}#endregion#region //第五行竖行for (int i = 70; i < 100; i++){Console.Write(DrawStringMap(i));}#endregion }//DrawMap方法的结尾/// <summary>/// 从画图的方法中抽象的一个方法/// </summary>/// <param name="i">需要传进去的变量</param>/// <returns>是那些需要画出来的字符符号</returns>//画笔特殊字符public static string DrawStringMap(int i){string str = "";//如果AB坐標一致,並且都在地圖上,畫<>if (PlayerPos[0] == PlayerPos[1] && PlayerPos[0] == i){str = "<>";}else if (PlayerPos[0] == i){//全角的Astr = "A";}else if (PlayerPos[1] == i){//全角的Bstr = "B";}else{switch (Maps[i]){case 0:Console.ForegroundColor = ConsoleColor.Yellow;str = "□";break;case 1:Console.ForegroundColor = ConsoleColor.DarkCyan;str = "☆";break;case 2:Console.ForegroundColor = ConsoleColor.Red;str = "●";break;case 3:Console.ForegroundColor = ConsoleColor.DarkGreen;str = "▲";break;case 4:Console.ForegroundColor = ConsoleColor.DarkMagenta;str = "◎";break;}//switch}//elsereturn str;}/// <summary>/// 玩遊戲/// </summary>public static void PalyGame(int playerNumber){Random r = new Random();int rNumber = r.Next(1, 7);//產生1-6的隨機數Console.WriteLine(" ");Console.WriteLine("{0}按任意鍵開始擲骰子", PlayerNames[playerNumber]);Console.ReadKey(true);Console.WriteLine("{0}擲出了{1}", PlayerNames[playerNumber], rNumber);PlayerPos[playerNumber] += rNumber;ChangPos();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},玩家{2}退六格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerNames[playerNumber]);PlayerPos[1 - playerNumber] -= 6;ChangPos();Console.ReadKey(true);}else//踩到了關卡{switch (Maps[PlayerPos[playerNumber]])//0 1 2 3 4{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},玩家{2}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber], PlayerPos[1 - playerNumber]);Console.ReadKey(true);PlayerPos[1 - playerNumber] -= 6;ChangPos();Console.WriteLine("玩家{0}退了6格", PlayerPos[1 - playerNumber]);Console.ReadKey(true);break;}else{Console.WriteLine("只能輸入1或者2 1---交換位置  2---轟炸對方");input = Console.ReadLine();}}break;case 3:Console.WriteLine("玩家{0}踩到了暫停,休息一回合", PlayerNames[playerNumber]);Falgs[playerNumber] = true;Console.ReadKey(true);break;case 4:Console.WriteLine("玩家{0}踩到了時空隧道,前進10格", PlayerNames[playerNumber]);Console.ReadKey(true);PlayerPos[playerNumber] += 10;ChangPos();break;}//swith結尾}//else結尾ChangPos();Console.Clear();DrawMap();}/// <summary>/// 當玩家坐標發生改變的時候調用/// </summary>public static void ChangPos(){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;}}}
}

控制台程序源碼-飛行棋相关推荐

  1. Visual Studio 控制台程序世界杯足球C语言版(附源码)

    Visual Studio 控制台程序世界杯足球C语言版 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 一年一度的世界杯如期而至,相信很多球迷小伙伴们一定不会错过这个难得 ...

  2. WCF服务以控制台程序为宿主时的跨域访问问题(附源码)

    前几天研究SilverLight时碰到了这个问题,本以为很轻松的试验结果很不顺利,查了很多资料才解决了这个问题,在此把解决问题的方法写出来,也方便其它朋友借鉴. 问题是这样产生了,我在测试Silver ...

  3. Android小項目之---時間線程應用(附源碼)

    进程 在Android 中,进程是应用程序的完整实现,而不是用户通常了解的那样.他们主要用途很简单: • 提高稳定性和安全性,将不信任或者不稳定的代码移动到其他进程. • 可将多个.apk 包运行在同 ...

  4. service 层注入不同的数据源_.NET 理论基础+实战控制台程序实现AutoFac注入

    (给DotNet加星标,提升.Net技能) 转自:在7楼 cnblogs.com/RayWang/p/11128554.html 简介 该系列共5篇文章,旨在以实战模式,在.NET下的 控制台程序 F ...

  5. 【半小时大话.net依赖注入】(一)理论基础+实战控制台程序实现AutoFac注入

    第一章|理论基础+实战控制台程序实现AutoFac注入 第二章|AutoFac的常见使用套路 第三章|实战Asp.Net Framework Web程序实现AutoFac注入 第四章|实战Asp.Ne ...

  6. Android小項目之---吃飯選哪?--》選擇對話框(附源碼)

    還記得早先我們做的記算器的例子嗎?當中的驗證判斷用到了對話框,今天我們來做一個不一樣的對話框,要做的這個小例子是一個可供選擇效果的對話框 即層層迭迭的Alert Dialog:界面方面我們擺放一個Bu ...

  7. 使用C++控制台程序或Python调用Dll创建Qt界面(dll中创建QApplication,qtwinmigrate的使用)

    目录 理论 构建DLL 使用Python进行调用 使用C++控制台程序进行调用 理论 在Windows下,可能要用MFC或C#或Java,python调用一个插件,这个插件是一个dll,可以弄一个Qt ...

  8. 如何编写Ruby控制台程序(一)

    如何编写Ruby控制台程序(一) By YUANYI ZHANG | Published: JUNE 24, 2007 这是来自O'Reilly Network的一篇关于如何如何使用Ruby及Acti ...

  9. java毕业设计——基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码)——愤怒的小鸟游戏

    基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Java awt+swing的愤怒的小鸟游戏设计与实现,文章末尾附有本毕 ...

最新文章

  1. 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
  2. Oracle推出轻量级Java微服务框架Helidon
  3. arg是什么函数_C 语言编程 — 函数
  4. 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践
  5. Angular rxjs fromEvent使用的一个例子
  6. mapreduce 算法_MapReduce算法–顺序反转
  7. Windows CE下流驱动的动态加载
  8. SQL2005学习(三十二),Group by
  9. docker 容器无法连接外网
  10. 硕士转计算机科学,普利茅斯大学计算机科学(转专业)理学硕士研究生申请要求及申请材料要求清单...
  11. kangle安装php7.0_搭建Kangle+EasyPanel对接SWAP IDC虚拟主机自助开通完整教程
  12. Unity Shader - Rendering Mode 渲染模式
  13. 论成长型思维的重要性
  14. 流氓软件自动安装恶意插件导致浏览器闪退问题
  15. 牧原面试(销售部-统计分析)总结
  16. 台式计算机怎么进入bios,台式机电脑win7怎么进入bios教程
  17. MySQL精品学习资源合集 | 含学习教程笔记、运维技巧、图书推荐
  18. 开发板FPGA电机控制源码(verilog+nios2架构)FPGA电机控制源码
  19. 汉语言文学在电视新闻解说词的应用
  20. html写轮眼动画效果,写轮眼动态效果图 如何自己制作写轮眼变轮回眼动态图?...

热门文章

  1. 软件保护技术----网络验证
  2. Ubuntu安装MSF
  3. java遍历数组与集合之增强for循环
  4. 虾皮的权重结构-扬帆际海
  5. 计算机谱子泡沫,邓紫棋《泡沫》简谱
  6. uni-app中如何引入阿里iconfont图标字体(详细教程)
  7. 什么是Transformer?| 小白深度学习入门
  8. 同时掌握c 和java_怎么在必须同时学习C语言和Java时把两者学好?
  9. 微信小程序发送模板消息demo
  10. [转载]【资料收藏】这些描写雨的诗词句文,您读了么?