飞行棋项目
代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 飞行棋
{
class Program
{
public static int[] map = new int[100];//默认都是0
//0表示方块,1,表示幸运轮盘,2,表示暂停 3,表示地雷,4,表示时空隧道
public static int A = 0;
public static int B = 0;
public static string AName = "";
public static string BName = "";
public static bool AFlag = true;
public static bool BFlag = true;
static void Main(string[] args)
{
GameShow();
#region 输入玩家姓名
Console.WriteLine("请输入玩家A的姓名:");
AName = Console.ReadLine();
while(AName == "")
{
Console.WriteLine("玩家的姓名不能为空,请重新输入");
AName = Console.ReadLine();
}
Console.WriteLine("请输入玩家B的姓名:");
BName = Console.ReadLine();
while (BName == AName||BName == "")
{
if(BName == "")
{
Console.WriteLine("玩家的姓名不能为空,请重新输入");
}
else
{
Console.WriteLine("玩家的B姓名不能和A相同,请重新输入");
}
BName = Console.ReadLine();
}
#endregion
Console.Clear();
GameShow();
Console.WriteLine("{0}的士兵用A表示。\n{1}的士兵用B表示。", AName, BName);
InitMap();
ShowMap();
while(A<=99&&B<=99)
{
if(AFlag)
{
PlayGame(true, out A, out B, AName, BName, out AFlag);
}
else
{
AFlag = true;
}
if(A == 99)
{
Console.WriteLine("玩家A胜利了");
break;
}
if(BFlag)
{
PlayGame(false, out B, out A, BName, AName, out BFlag);
}
else
{
BFlag = true;
}
if (B == 99)
{
Console.WriteLine("玩家B胜利了");
break;
}
}//while
win();
Console.ReadKey();
}
/// <summary>
/// 画游戏头
/// </summary>
public static void GameShow()
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("**********************");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("**********************");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("**********************");
Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine("********飞行棋********");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("**********************");
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine("**********************");
}
/// <summary>
/// 给地图数组初始化
/// </summary>
public static void InitMap()
{
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[] timTurnnel = { 20, 25, 45, 63, 72, 88, 90 };
for (int i = 0; i < luckyturn.Length; i++)
{
int n = luckyturn[i];
map[n] = 1;
}
for (int i = 0; i < landMine.Length; i++)
{
int n = landMine[i];
map[n] = 2;
}
for (int i = 0; i < pause.Length; i++)
{
int n = pause[i];
map[n] = 3;
}
for (int i = 0; i < timTurnnel.Length; i++)
{
int n = timTurnnel[i];
map[n] = 4;
}
}
/// <summary>
/// 绘制地图
/// </summary>
public static void ShowMap()
{
Console.WriteLine("图例:幸运轮盘:◎\t暂停:★\t地雷:▲\t时空隧道:卐");
#region //第一横行
for (int i = 0; i < 30; i++)
{
if (i != A && i != B)
{
if (map[i] == 0)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("□");
}
else if (map[i] == 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("◎");
}
else if (map[i] == 2)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("▲");
}
else if (map[i] == 3)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.Write("★");
}
else if (map[i] == 4)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("卐");
}
}
else if (i == A && i != B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("A");
}
else if (i != A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("B");
}
else if (i == A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("<>");
}
}
#endregion
//第一竖
Console.Write("\n");
#region //第一竖
for (int i = 30; i < 35; i++)
{
Console.Write(" ");
if (i != A && i != B)
{
if (map[i] == 0)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("□\n");
}
else if (map[i] == 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("◎\n");
}
else if (map[i] == 2)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("▲\n");
}
else if (map[i] == 3)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.Write("★\n");
}
else if (map[i] == 4)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("卐\n");
}
}
else if (i == A && i != B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("A\n");
}
else if (i != A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("B\n");
}
else if (i == A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("<>\n");
}
}
#endregion
#region //第二横行
for (int i = 64; i > 34; i--)
{
if (i != A && i != B)
{
if (map[i] == 0)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("□");
}
else if (map[i] == 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("◎");
}
else if (map[i] == 2)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("▲");
}
else if (map[i] == 3)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.Write("★");
}
else if (map[i] == 4)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("卐");
}
}
else if (i == A && i != B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("A");
}
else if (i != A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("B");
}
else if (i == A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("<>");
}
}
#endregion
Console.Write("\n");
#region //第二竖
for (int i = 65; i < 70; i++)
{
if (i != A && i != B)
{
if (map[i] == 0)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("□\n");
}
else if (map[i] == 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("◎\n");
}
else if (map[i] == 2)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("▲\n");
}
else if (map[i] == 3)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.Write("★\n");
}
else if (map[i] == 4)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("卐\n");
}
}
else if (i == A && i != B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("A\n");
}
else if (i != A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("B\n");
}
else if (i == A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("<>\n");
}
}
#endregion
#region //第三横行
for (int i = 70; i < 100; i++)
{
if (i != A && i != B)
{
if (map[i] == 0)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("□");
}
else if (map[i] == 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("◎");
}
else if (map[i] == 2)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("▲");
}
else if (map[i] == 3)
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.Write("★");
}
else if (map[i] == 4)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("卐");
}
}
else if (i == A && i != B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("A");
}
else if (i != A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("B");
}
else if (i == A && i == B)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write("<>");
}
}
#endregion
Console.Write("\n");
}
public static void PlayGame(bool k,out int a,out int b,string aName,string bName,out bool flag)
{
if(k)
{
a = A;
b = B;
flag = AFlag;
}
else
{
a = B;
b = A;
flag = BFlag;
}
Random r = new Random();
int rNum = r.Next(1, 7);
Console.WriteLine("玩家{0}按任意键开始掷骰子", aName);
Console.ReadKey(true);
Console.WriteLine("玩家{0}掷出了{1}", aName, rNum);
a += rNum;
ChangNum();
Console.ReadKey(true);
Console.WriteLine("玩家{0}按任意键开始行动", aName);
Console.ReadKey(true);
Console.WriteLine("玩家{0}行动完成", aName);
Console.ReadKey(true);
if (a == b)
{
Console.WriteLine("玩家{0}踩到玩家{1},玩家{1}退六格", aName, bName);
b -= 6;
ChangNum();
Console.ReadKey(true);
}
else if (map[a] == 0)
{
Console.WriteLine("玩家{0}踩到方块,没有事情发生", aName);
Console.ReadKey(true);
}
else if (map[a] == 1)
{
Console.WriteLine("玩家{0}踩到幸运轮盘,请选择1---交换位置,2---轰炸对方", aName);
string input = Console.ReadLine();
while (true)
{
if (input == "1")
{
Console.WriteLine("玩家{0}选择和玩家{1}交换位置", aName, bName);
int temp = a;
a = b;
b = temp;
Console.WriteLine("交换成功!请按任意键继续游戏!");
Console.ReadKey(true);
break;
}
else if (input == "2")
{
Console.WriteLine("玩家{0}选择轰炸玩家{1}", aName, bName);
Console.ReadKey(true);
b -= 6;
ChangNum();
Console.WriteLine("轰炸成功,玩家{0}后退六步。", bName);
Console.ReadKey(true);
break;
}
else
{
Console.WriteLine("请输入1或者2,不能输入不相关字符");
input = Console.ReadLine();
}
}
}
else if (map[a] == 2)
{
Console.WriteLine("玩家{0}踩到地雷,玩家后退六步", aName);
a -= 6;
ChangNum();
Console.ReadKey(true);
}
else if (map[a] == 3)
{
Console.WriteLine("玩家{0}踩到暂停,玩家停玩一轮。", aName);
flag = false;
Console.ReadKey(true);
}
else if (map[a] == 4)
{
Console.WriteLine("玩家{0}踩到时空隧道,玩家前进10格。", aName);
a += 10;
ChangNum();
Console.ReadKey(true);
}
ChangNum();
Console.Clear();
ShowMap();
}
/// <summary>
/// 当玩家坐标改变的时候
/// </summary>
public static void ChangNum()
{
if(A<0)
{
A = 0;
}
if(A>99)
{
A = 99;
}
if (B < 0)
{
B = 0;
}
if (B > 99)
{
B = 99;
}
}
public static void win()
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(" ■■■■ ■ ■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■ ■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■■■■■■ ■■■ ■ ■ ■");
Console.WriteLine(" ■■■■■ ■ ■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■ ■■■■■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■■■■■■ ■■■ ■ ■ ■");
Console.WriteLine(" ■■■■ ■ ■ ■ ■ ■ ■ ■");
Console.WriteLine(" ■ ■ ■ ■ ■ ");
Console.WriteLine(" ■ ■■ ■ ■ ■■ ■");
Console.WriteLine(" ■ ■ ■■■■■■ ■ ■ ■");
}
}
}
运行的结果图如下: