C#飞行棋小程序设计代码
飞行棋游戏大家应该都玩过吧,如何使用C#语言进行编写,本文实例就为大家分享了飞行棋C#实现代码,供大家参考,具体内容如下
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespacePachee
{
classProgram
{
#region静态字段
//关卡数量
publicstaticint[]Maps=newint[100];
//玩家坐标
publicstaticint[]PlayerPos=newint[2];
//玩家名称
publicstaticstring[]PlayerNames=newstring[2];
//判断玩家是否暂停
publicstaticbool[]Flags=newbool[2];
#endregion
///<summary>
///输出游戏头
///</summary>
publicstaticvoidShowGame()
{
Console.ForegroundColor=ConsoleColor.Green;
Console.WriteLine("****************************");
Console.ForegroundColor=ConsoleColor.Blue;
Console.WriteLine("****************************");
Console.ForegroundColor=ConsoleColor.White;
Console.WriteLine("***C#基础练习:飞行棋项目***");
Console.ForegroundColor=ConsoleColor.Yellow;
Console.WriteLine("****************************");
Console.ForegroundColor=ConsoleColor.Red;
Console.WriteLine("****************************");
}
///<summary>
///接受用户输入的游戏名称,判断是否合法
///</summary>
///<returns>游戏名称</returns>
publicstaticstring[]InputPlayerNames()
{
PlayerNames[0]="";
PlayerNames[1]="";
Console.ForegroundColor=ConsoleColor.White;
while(PlayerNames[0]=="")
{
Console.Write("PleaseenterthenameofgameAplayer:");
PlayerNames[0]=Console.ReadLine().Trim();
if(PlayerNames[0]=="")
{
Console.WriteLine("Aplayernamecannotbeempty,pleaseenteragain.");
continue;
}
break;
}
while(PlayerNames[1]==""||PlayerNames[0]==PlayerNames[1])
{
Console.Write("PleaseenterthenameofgameBplayer:");
PlayerNames[1]=Console.ReadLine().Trim();
if(PlayerNames[1]=="")
{
Console.WriteLine("Bplayernamecannotbeempty,pleaseenteragain.");
continue;
}
elseif(PlayerNames[1]==PlayerNames[0])
{
Console.WriteLine("TheplayernamecannotbethesameastheplayerAB,pleaseenteragain.");
continue;
}
break;
}
returnPlayerNames;
}
///<summary>
///初始化地图,改变默认的地图坐标类型
///0:方块
///1:轮盘
///2:地雷
///3:暂停
///4:隧道
///</summary>
publicstaticvoidInitailMap()
{
#region轮盘
int[]luckTrun={6,23,40,55,69,83};
for(inti=0;i<luckTrun.Length;i++)
{
Maps[luckTrun[i]]=1;
}
#endregion
#region地雷
int[]landMine={5,13,17,33,38,50,64,80,94};
for(inti=0;i<landMine.Length;i++)
{
Maps[landMine[i]]=2;
}
#endregion
#region暂停
int[]pause={9,27,60,93};
for(inti=0;i<pause.Length;i++)
{
Maps[pause[i]]=3;
}
#endregion
#region隧道
int[]timeTunnel={20,25,45,63,72,88,90};
for(inti=0;i<timeTunnel.Length;i++)
{
Maps[timeTunnel[i]]=4;
}
#endregion
}
///<summary>
///设定当前坐标的类型
///</summary>
///<paramname="i">坐标</param>
///<returns>坐标类型</returns>
publicstaticstringDrawStringMap(inti)
{
stringstr=null;
if(PlayerPos[0]==PlayerPos[1]&&PlayerPos[0]==i)
{
str="<>";
}
elseif(PlayerPos[0]==i)
{
str="A";
}
elseif(PlayerPos[1]==i)
{
str="B";
}
else
{
switch(Maps[i])
{
case0:
Console.ForegroundColor=ConsoleColor.Yellow;
str="□";
break;
case1:
Console.ForegroundColor=ConsoleColor.Blue;
str="◎";
break;
case2:
Console.ForegroundColor=ConsoleColor.Green;
str="☆";
break;
case3:
Console.ForegroundColor=ConsoleColor.Red;
str="▲";
break;
case4:
Console.ForegroundColor=ConsoleColor.Cyan;
str="卐";
break;
}
}
returnstr;
}
///<summary>
///生成所有坐标
///</summary>
publicstaticvoidDrawMap()
{
Console.WriteLine("Legend:LuckTrun<◎>landMine<☆>Pause<▲>timeTunnel<卐>");
#region第一橫行
for(inti=0;i<30;i++)
{
Console.Write(DrawStringMap(i));
}
Console.WriteLine();
#endregion
#region第一竖行
for(inti=30;i<35;i++)
{
for(intj=0;j<=28;j++)
{
Console.Write("");
}
Console.Write(DrawStringMap(i));
Console.WriteLine();
}
#endregion
#region第二橫行
for(inti=64;i>=35;i--)
{
Console.Write(DrawStringMap(i));
}
Console.WriteLine();
#endregion
#region第二竖行
for(inti=65;i<70;i++)
{
Console.WriteLine(DrawStringMap(i));
}
#endregion
#region第三橫行
for(inti=70;i<=99;i++)
{
Console.Write(DrawStringMap(i));
}
Console.WriteLine();
#endregion
}
///<summary>
///判断坐标是否超出范围
///</summary>
publicstaticvoidChangePos()
{
#regionPlayerA
if(PlayerPos[0]<0)
{
PlayerPos[0]=0;
}
if(PlayerPos[0]>99)
{
PlayerPos[0]=99;
}
#endregion
#regionPlayerB
if(PlayerPos[1]<0)
{
PlayerPos[1]=0;
}
if(PlayerPos[1]>99)
{
PlayerPos[1]=99;
}
#endregion
}
///<summary>
///踩到轮盘时,选择功能
///</summary>
///<paramname="input">玩家的选择</param>
///<paramname="player">玩家标示</param>
publicstaticvoidPlayerSelect(stringinput,intplayer)
{
while(true)
{
if(input=="1")
{
Console.WriteLine("Player{0}selectand{1}swapplaces.",PlayerNames[player],PlayerNames[1-player]);
inttemp=PlayerPos[player];
PlayerPos[player]=PlayerPos[1-player];
PlayerPos[1-player]=temp;
Console.WriteLine("Swapcomplete,pressanykeycontinue.");
Console.ReadKey(true);
break;
}
elseif(input=="2")
{
Console.WriteLine("Player{0}selectbombing{1},Player{2}backto6.",PlayerNames[player],PlayerNames[1-player],PlayerNames[1-player]);
PlayerPos[1-player]-=6;
Console.ReadKey(true);
break;
}
else
{
Console.WriteLine("Canonlyselect:1--Swapplaces2--bombing:");
input=Console.ReadLine();
}
}
}
///<summary>
///进行游戏
///</summary>
///<paramname="player">玩家标示位</param>
publicstaticvoidPlayGame(intplayer)
{
Randomr=newRandom();
intnext=r.Next(1,7);
Console.WriteLine("{0}pressanykeytostartrollingthedice.",PlayerNames[player]);
Console.ReadKey(true);
Console.WriteLine("{0}Throwoutof{1}",PlayerNames[player],next);
PlayerPos[player]+=next;
ChangePos();
Console.ReadKey(true);
Console.WriteLine("{0}pressanykeytostartaction.",PlayerNames[player]);
Console.ReadKey(true);
Console.WriteLine("{0}actioncomplete.",PlayerNames[player]);
Console.ReadKey(true);
//PlayerA有可能踩到:PlayerB、方块、轮盘、地雷、暂停、隧道
if(PlayerPos[player]==PlayerPos[1-player])
{
Console.WriteLine("Player{0}stepon{1},{2}backto6.",PlayerNames[player],PlayerNames[1-player],PlayerNames[1-player]);
PlayerPos[1-player]-=6;
Console.ReadKey(true);
}
else
{
switch(Maps[PlayerPos[player]])
{
case0:
Console.WriteLine("Player{0}steponSquare,safe.",PlayerNames[player]);
Console.ReadKey(true);
break;
case1:
Console.WriteLine("Player{0}steponaLuckTrun,pleaseselect:1--Swapplaces2--bombing:",PlayerNames[player]);
stringinput=Console.ReadLine().Trim();
PlayerSelect(input,player);
Console.ReadKey(true);
break;
case2:
Console.WriteLine("Player{0}steponaLandMine,backto6",PlayerNames[player]);
PlayerPos[player]-=6;
Console.ReadKey(true);
break;
case3:
Console.WriteLine("Player{0}steponaPause,tosuspendaround.",PlayerNames[player]);
Console.ReadKey(true);
Flags[player]=true;
break;
case4:
Console.WriteLine("Player{0}steponaTimeTunnel,forward10.",PlayerNames[player]);
PlayerPos[player]+=10;
Console.ReadKey();
break;
}
}
ChangePos();
Console.Clear();
DrawMap();
}
staticvoidMain(string[]args)
{
ShowGame();
InputPlayerNames();
Console.WriteLine("Player{0}isA.",PlayerNames[0]);
Console.WriteLine("Player{0}isB.",PlayerNames[1]);
InitailMap();
DrawMap();
while(PlayerPos[0]<99&&PlayerPos[1]<99)
{
#regionA
if(Flags[0]==false)
{
PlayGame(0);
}
else
{
Flags[0]=false;
}
#endregion
#regionB
if(Flags[1]==false)
{
PlayGame(1);
}
else
{
Flags[1]=false;
}
#endregion
}
#region判断玩家胜利
if(PlayerPos[0]==99)
{
Console.Clear();
Console.WriteLine("Player{0}Win.",PlayerNames[0]);
}
if(PlayerPos[1]==99)
{
Console.Clear();
Console.WriteLine("Player{0}Win.",PlayerNames[1]);
}
#endregion
Console.ReadKey();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。