首先先来附图一张,程序的实现图和程序的大致流程图。飞行棋是基础C#以来,第一个稍微大一点的程序,刚刚接触可能会感觉很麻烦,学习起来很吃力,但是飞行棋程序整体来说就是结合了C#视频前几章的基础,将前面的Console.Writeline;console.write;还有方法、数组等一些基础性的知识,将所有基础性的知识整合打包,最后形成了所谓的飞行棋程序。
飞行棋所涉及的知识点:
注释,变量声明,“++(--)”,关系运算符,If结构,switch……case结构,while循环,for循环,break,countion, try……catch ,z最重要的就是方法。
方法名 | 参数 | 返回值 | 功能 |
---|---|---|---|
showui() | 无 | 无 | 显示游戏头 |
initMap() | 无 | 无 | 初始化地图 |
DrawMap() | 无 | 无 | 画地图 |
RowTouZi() | int playpos | 无 | 掷骰子 |
CheckPos() | 无 | 无 | 判断是否出界 |
DrawMapLeftToRight | int left , int right | 无 | 画地图一三行 |
DrawStringMap | int pos | string | 画标识和玩家 |
Readint | string msg int min ,int max | int | 踩到轮盘选择 |
接下来展示几个稍微简单的代码:
1.初始化地图
public static void InitMap()//初化地图
{
//初始化地图
//用0表示普通,1表示祥云轮盘,2代表地雷3代表暂停,4代表时空隧道
int[] luckyturn = { 6, 25,30, 48, 56, 65,72,85, 91 };//幸运轮盘
int[] landMine = { 5, 17, 34, 46, 62,70, 81};//地雷
int[] pause = { 9, 27,37,50, 56, 72 };//暂停
int[] timeTunnel = { 20,40,47, 58, 67,76, 82, 93 };//时空隧道
for (int i = 0; i < luckyturn.Length; i++)//
{
// int temp = luckyturn[i];
//map[temp] = 1;
map[luckyturn[i]] = 1;//luckyturn索引的下标志都变为1;
}
for (int i = 0; i < pause.Length; i++)//
{
map[pause[i]] = 3;//luckyturn索引的下标志都变为3;
}
for (int i = 0; i < landMine.Length; i++)//
{
map[landMine[i]] = 2;//luckyturn索引的下标志都变为2;
}
for (int i = 0; i < timeTunnel.Length; i++)//
{
map[timeTunnel[i]] = 4;//luckyturn索引的下标志都变为4;
}
}
2.掷骰子
public static void RowTouZi(int playerpos)
{
Random r = new Random();
int num = r.Next(1, 7);
//while (PlayerPos[0] <= 99 && PlayerPos[1] <= 99)
//{
string msg = "";
Console.WriteLine("{0}按任意键开始掷骰子", playername[playerpos]);
Console.WriteLine("{0}掷出了{1}", playername[playerpos], 4);
Console.WriteLine("{0}按任意键开始行动……", playername[playerpos]);
Console.ReadKey(true);//使字母不显示(readkey中默认的为False)
PlayerPos[playerpos] += num;
checkpos();
if (PlayerPos[playerpos] == PlayerPos[1 - playerpos])
{
msg = string.Format("玩家{0}踩到了玩家{1},玩家{2}退6格", playername[playerpos], playername[1 - playerpos], playername[1 - playerpos]);
PlayerPos[1 - playerpos] -= 6;
checkpos();
}
else
{
switch (map[PlayerPos[0]])
{
case 0: //Console.WriteLine("行动完了"); break;
msg = "行动完了"; break;
case 1: //Console.WriteLine("走到了幸运轮盘"); break;
msg = string.Format("{0}走到了幸运轮盘,请选择 1----交换位置,2----轰炸对方", playername[playerpos]);
int number = ReadInt(msg, 1, 2);
if (number == 1)
{
int temp = 0;
temp = PlayerPos[playerpos];
PlayerPos[playerpos] = PlayerPos[1 - playerpos];//如果playerpos代表玩家1 ,则一减变为玩家0,反之一样
PlayerPos[1 - playerpos] = temp;
msg = string.Format("玩家{0}选择了与玩家{1}交换位置", playername[playerpos], playername[1 - playerpos]);
}
else
{
PlayerPos[1 - playerpos] = 0;
msg = string.Format("玩家{0}选择轰炸玩家{1}", playername[playerpos], playername[1 - playerpos]);
}
break;
case 2: //Console.WriteLine("猜到地雷了"); break;
//踩到地雷了
msg = "恭喜你,能踩到地雷,百年不遇,退6格";
PlayerPos[playerpos] -= 6;
checkpos();
break;
case 3: //Console.WriteLine("猜到暂停了"); break;
msg = "踩到暂停了";
flag[playerpos] = true;
break;
case 4: //Console.WriteLine("踩到时空隧道了"); break;
msg = "恭喜你,这个猥琐家伙竟然穿越了10步";
PlayerPos[playerpos] += 10;
checkpos();
break;
}
}
Console.Clear();
Console.WriteLine("对战开始……");
Console.WriteLine("{0}的士兵用A表示", playername[0]);
Console.WriteLine("{0}的士兵用B表示", playername[1]);
DrawMap();
Console.WriteLine("行动完毕……");
//}
Console.ReadKey();
}