奥萨瓦·本·萨卡

导航

C#初学第十天

骑士飞行棋 0.1版本 很多功能并没有实现 ,而且还有很多不足之处。只供参考

 

namespace _927zj
{
enum Mark
{
luckyTurn=1,
landMine,
pause,
timeTunnel
}
class Program
{

public static void ShowTitle()
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine("*****************************");
Console.WriteLine("* *");
Console.WriteLine("* 终 极 骑 士 飞 行 棋 *");
Console.WriteLine("* *");
Console.WriteLine("*****************************");

}
public static void ShiBing(string[]name,int []map,int[]playerPosition)
{
Console.Clear();
ShowTitle();
Console.WriteLine("对战开始...");
Console.Write("{0}的士兵用A表示\t\t",name[0]);
Console.WriteLine("{0}的士兵用B表示",name[1]);
Console.WriteLine("==========================");
Console.WriteLine("图列: 幸运轮盘◎,地雷☆,暂停▲,时空隧道卐");
ShowMap(map, playerPosition);
Random r = new Random();
bool isOver = false;
bool[] isStop = new bool[2] {false,false };
while (true)
{
if (isStop[0]==false)
{
isOver=Play(map,name,playerPosition,0,r,isStop);
}
else
{
isStop[0] = false;
}

if (isOver)
{
break;
}
if (isStop[1]==false)
{
isOver=Play(map, name, playerPosition, 1, r,isStop);
}
else
{
isStop[1] = false;
}

if (isOver)
{
break;
}
}

Console.WriteLine("游戏结束");


}
public static void ShowMap(int[]map,int[]playerPosition)
{
for (int i = 0; i <=29; i++)
{
paint(map[i],i,playerPosition,true);
}
Console.WriteLine();
for (int i = 30; i <=34; i++)
{
for (int j = 0; j < 29; j++)
{
Console.Write(" ");
}
paint(map[i],i,playerPosition,false);
}
for (int i = 64; i >34; i--)
{
paint(map[i],i,playerPosition,true);
}
Console.WriteLine();
for (int i = 65; i <70; i++)
{
paint(map[i],i,playerPosition,false);
}
for (int i = 70; i <=99; i++)
{
paint(map[i],i,playerPosition,true);
}
Console.WriteLine();


}
public static void ShowMap1(int[] map)
{
//用于存储在地图中为地雷的下标
int[] luckyTurn = { 6, 23, 40, 55, 69, 83 }; //幸运轮盘1
int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 }; //地雷2
int[] pause = { 9, 27, 60, 93 }; //暂停的坐标3
int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 }; //时空隧道卐4

InsertMap(map, luckyTurn,Mark.luckyTurn);
InsertMap(map,landMine,Mark.landMine);
InsertMap(map,pause,Mark.pause);
InsertMap(map,timeTunnel,Mark.timeTunnel);

}
public static void InsertMap(int[] map,int[] mark,Mark m)
{
for (int i = 0; i < mark.Length; i++)
{
map[mark[i]] = (int)m;
}
}
public static void paint(int context,int i,int[]playerPosion,bool isRow)
{
string temp = "";
if (playerPosion[0] == playerPosion[1] && playerPosion[0] == i)
{
Console.ForegroundColor = ConsoleColor.DarkGray;
temp = "<>";
}
else if (playerPosion[0] == i)
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
temp = "A";
}
else if (playerPosion[1]==i)
{
Console.ForegroundColor = ConsoleColor.DarkRed;
temp = "B";
}
else
{
switch (context)
{
case 1: Console.ForegroundColor = ConsoleColor.Blue;
temp = "◎";
break;
case 2: Console.ForegroundColor = ConsoleColor.Green;
temp = "☆";
break;
case 3: Console.ForegroundColor = ConsoleColor.Yellow;
temp = "▲";
break;
case 4: Console.ForegroundColor = ConsoleColor.Red;
temp = "卐";
break;
default: Console.ForegroundColor = ConsoleColor.White;
temp = "□";
break;
}
}
if (isRow)
{
Console.Write(temp);
}
else
{
Console.WriteLine(temp);
}
}
public static bool Play(int[]map,string[] name, int[] playerPosition, int num, Random r,bool[] isStop)
{
int sum=0;
int playerState=0;
bool isBack;
bool isOver = false;
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine("由{0}按任意键子开始掷骰子", name[num]);
ConsoleKeyInfo key = Console.ReadKey(true);
if (key.Key==ConsoleKey.Z)
{
if (Console.ReadKey(true).Key==ConsoleKey.H)
{
if (Console.ReadKey(true).Key==ConsoleKey.U)
{
sum = 50;
}
}
}
if(sum==0)
{
sum = r.Next(1,7);
}
playerPosition[num] += sum;
isBack=playerPosition[num]==playerPosition[1-num];
if (playerPosition[num] < 0)
{
playerPosition[num] = 0;
}
if (playerPosition[num] >= 99)
{
playerPosition[num] = 99;
isOver = true;
}
if (isBack)
{
playerPosition[1 - num] = 0;
}
else if (map[playerPosition[num]]==1)
{
playerState = 1;
}
else if (map[playerPosition[num]]==2)
{
playerPosition[num] -= 6;
playerState = 2;
}
else if (map[playerPosition[num]]==3)
{
isStop[num] = true;
playerState = 3;
}
else if (map[playerPosition[num]]==4)
{
playerPosition[num] += 10;
playerState = 4;
}
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine("{0}玩家扔出了{1}点按任意键继续", name[num], sum);
Console.ReadKey(true);
Console.Clear();
ShowTitle();
Console.WriteLine("对战开始...");
Console.WriteLine("==========================");
Console.WriteLine("图列: 幸运轮盘◎,地雷☆,暂停▲,时空隧道卐");
ShowMap(map, playerPosition);
if (isBack)
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine("你被重新投胎了,哈哈...");
}
else if (playerState==1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("{0}踩到了幸运轮盘,0选择交换位置,1选择轰炸对方",name[num]);

int res = InPut(0, 1);
if (res == 0)
{
playerState = 5;
int temp = playerPosition[num];
playerPosition[num] = playerPosition[1 - num];
playerPosition[1 - num] = temp;
}
else
{
playerState = 6;
playerPosition[1 - num] -= 6;
}
if (playerState==5)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("{0}选择交换位置",name[num]);
}
if (playerState==6)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("{0}选择轰炸对方,{1}后退6格",name[num],name[1-num]);
}
}
else if (playerState == 2)
{
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("{0}踩到了地雷,你今天可别出门啊!!!退后6格", name[num]);
}
else if (playerState == 3)
{
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("{0}踩到了暂停一次,很不幸!!!", name[num]);
}
else if (playerState == 4)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("{0}踩到了时空隧道你前进10格,真走运!!!", name[num]);
}
return isOver;
}
public static int InPut(int min, int max)
{
int num;
while (true)
{
Console.WriteLine("请输入一个数字");
if (int.TryParse(Console.ReadLine(),out num))
{
if (num<min||num>max)
{
Console.WriteLine("输入超出范围了,傻帽");
continue;
}
break;
}
Console.WriteLine("你输入有问题,不明白什么是数字吗");
}
return num;
}
static void Main(string[] args)
{
string []playname=new string[2];
int []map=new int[100];
int []playerPosition=new int[2];
ShowTitle();
while (true)
{
Console.WriteLine("请输入A玩家的姓名");
playname[0] = Console.ReadLine();
if (playname[0] != "")
{
break;
}
Console.WriteLine("玩家姓名不能为空");
}
while (true)
{
Console.WriteLine("请输入B玩家的姓名");
playname[1]=Console.ReadLine();
if (playname[1]!="")
{
if (playname[0]==playname[1])
{
Console.Write("玩家B的姓名不能与玩家{0}的姓名相同",playname[0]);
continue;
}
break;
}
Console.WriteLine("玩家姓名不能为空");

}


ShowMap1(map);
ShowTitle();
ShiBing(playname, map,playerPosition);
Console.ReadKey();
}

}
}

posted on 2011-11-21 22:21  奥萨瓦·本·萨卡  阅读(243)  评论(0编辑  收藏  举报