C#实现飞行棋项目
本文实例为大家分享了C#实现飞行棋项目的具体代码,供大家参考,具体内容如下
1.制作游戏头部:游戏头部介绍
2.绘制地图
使用一维数组装整个地图的路线
如果这个位置是0,绘制普通格子□
如果这个位置是1,绘制幸运轮盘◎
如果这个位置是2,绘制地雷★
如果这个位置是3,绘制暂停▲
如果这个位置是4,绘制时空隧道卍
规划幸运轮盘位置
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[]timeTunnel={20,25,45,63,72,88,90};
3.设置特殊关卡
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespace飞行棋
{
classProgram
{
///
///整个地图数组
///
staticint[]Maps=newint[100];
///
///玩家的位置
///
staticint[]PlayerPos=newint[2];
///
///玩家的姓名
///
staticstring[]PlayerName=newstring[2];
///
///记录两名玩家是否可以掷骰子
///
staticbool[]PlayerFlag=newbool[2];
staticvoidMain(string[]args)
{
//绘制地图头部
ShowTitle();
//输入玩家姓名
Console.WriteLine("请输入玩家A的姓名");
PlayerName[0]=Console.ReadLine();
while(PlayerName[0]=="")
{
Console.WriteLine("玩家A姓名不能为空,请重新输入");
PlayerName[0]=Console.ReadLine();
}
Console.WriteLine("请输入玩家B的姓名");
PlayerName[1]=Console.ReadLine();
while(PlayerName[1]==""||PlayerName[1]==PlayerName[0])
{
if(PlayerName[1]=="")
{
Console.WriteLine("玩家B姓名不能为空,请重新输入");
PlayerName[1]=Console.ReadLine();
}
if(PlayerName[1]==PlayerName[0])
{
Console.WriteLine("玩家B姓名与玩家A的姓名一致,请重新输入");
PlayerName[1]=Console.ReadLine();
}
}
//输入完姓名,清空屏幕
Console.Clear();
//重新绘制游戏标题与游戏说明
ShowTitle();
//初始化地图关卡
InitialMap();
//显示地图
DrawMap();
//判断如果没有一个玩家到达终点则一直轮流掷筛子
while(PlayerPos[0]<99&&PlayerPos[1]<99)
{
if(PlayerFlag[0]==false)
{
PlayGame(0);
}
else
{
PlayerFlag[0]=false;
}
if(PlayerFlag[1]==false)
{
PlayGame(1);
}
else
{
PlayerFlag[1]=false;
}
if(PlayerPos[0]==99)
{
Console.WriteLine("恭喜玩家【{0}】游戏获胜!",PlayerName[0]);
break;
}
if(PlayerPos[1]==99)
{
Console.WriteLine("恭喜玩家【{0}】游戏获胜!",PlayerName[1]);
break;
}
}
Console.ReadLine();
}
#region游戏标题
///
///设置游戏标题
///
staticvoidShowTitle()
{
Console.ForegroundColor=ConsoleColor.Blue;
Console.WriteLine("************************************");
Console.ForegroundColor=ConsoleColor.Green;
Console.WriteLine("************************************");
Console.ForegroundColor=ConsoleColor.Cyan;
Console.WriteLine("************************************");
Console.ForegroundColor=ConsoleColor.DarkRed;
Console.WriteLine("***************飞行棋***************");
Console.ForegroundColor=ConsoleColor.Cyan;
Console.WriteLine("************************************");
Console.ForegroundColor=ConsoleColor.Green;
Console.WriteLine("************************************");
Console.ForegroundColor=ConsoleColor.Blue;
Console.WriteLine("************************************");
}
#endregion
#region初始化地图关卡
///
///初始化地图关卡
///
staticvoidInitialMap()
{
//绘制幸运轮盘的位置◎==1
int[]luckyturn={6,23,40,55,69,83};
for(inti=0;i
///绘制地图
///
staticvoidDrawMap()
{
Console.ForegroundColor=ConsoleColor.DarkRed;
Console.WriteLine("玩家【{0}】使用A表示:",PlayerName[0]);
Console.WriteLine("玩家【{0}】使用B表示:",PlayerName[1]);
Console.WriteLine("游戏规则:");
Console.WriteLine();
Console.WriteLine("1.两名玩家轮流掷骰子,规定A玩家先玩掷");
Console.WriteLine("2.踩到□格子安全,没有奖惩!");
Console.WriteLine("3.踩到◎幸运轮盘,可以进行两种选择:a.置换与对方玩家位置;b.进行轰炸对方,是对方倒退6步.");
Console.WriteLine("4.踩到★地雷,倒退6步!");
Console.WriteLine("5.踩到▲暂停,下一回合将暂停操作!");
Console.WriteLine("6.踩到卍时空隧道,直接前进10步!");
Console.WriteLine("7.如果踩到对方,则对方直接退6步!");
///第一横行地图
for(inti=0;i<30;i++)
{
Console.Write(DrawString(i));
}
Console.WriteLine();
///第一竖行
for(inti=30;i<35;i++)
{
for(intj=0;j<29;j++)
{
Console.Write("");
}
Console.Write(DrawString(i));
Console.WriteLine();
}
///第二横行
for(inti=64;i>34;i--)
{
Console.Write(DrawString(i));
}
Console.WriteLine();
///第二竖行
for(inti=65;i<70;i++)
{
Console.WriteLine(DrawString(i));
}
///第三横行
for(inti=70;i<100;i++)
{
Console.Write(DrawString(i));
}
Console.WriteLine();
}
#endregion
#region设置地图关卡,玩家初始位置
///
///设置地图关卡,玩家初识位置
///
///索引
privatestaticstringDrawString(intpos)
{
stringstr="";
//判断两个玩家的位置一样,确定两个玩家都在地图中
if(PlayerPos[0]==PlayerPos[1]&&PlayerPos[0]==pos)
{
Console.ForegroundColor=ConsoleColor.Cyan;
str="<>";
}
elseif(PlayerPos[0]==pos)
{
Console.ForegroundColor=ConsoleColor.Cyan;
str="A";
}
elseif(PlayerPos[1]==pos)
{
Console.ForegroundColor=ConsoleColor.Red;
str="B";
}
else
{
switch(Maps[pos])
{
case0:
Console.ForegroundColor=ConsoleColor.Blue;
str="□";
break;
case1:
Console.ForegroundColor=ConsoleColor.Cyan;
str="◎";
break;
case2:
Console.ForegroundColor=ConsoleColor.DarkRed;
str="★";
break;
case3:
Console.ForegroundColor=ConsoleColor.DarkCyan;
str="▲";
break;
case4:
Console.ForegroundColor=ConsoleColor.Yellow;
str="卍";
break;
default:
break;
}
}
returnstr;
}
#endregion
#region开始游戏
staticvoidPlayGame(intPlayNum)
{
Randomr=newRandom();
Console.WriteLine("玩家【{0}】按下任意键掷骰子",PlayerName[PlayNum]);
Console.ReadKey(true);
intnumber=r.Next(1,7);
Console.WriteLine("玩家【{0}】掷出<{1}>点。",PlayerName[PlayNum],number);
Console.WriteLine("玩家【{0}】按下任意键进行移动",PlayerName[PlayNum]);
Console.ReadKey(true);
PlayerPos[PlayNum]+=number;
Console.WriteLine("玩家【{0}】移动完成!",PlayerName[PlayNum]);
ChangedCheck();
//玩家踩到对方
if(PlayerPos[PlayNum]==PlayerPos[1-PlayNum])
{
Console.WriteLine("玩家【{0}】踩到玩家【{1}】,玩家【{1}】退6格",PlayerName[PlayNum],PlayerName[1-PlayNum]);
PlayerPos[1-PlayNum]-=6;
}
else
{
switch(Maps[PlayerPos[PlayNum]])
{
//踩到0普通地板,安全没有奖惩
case0:
Console.WriteLine("玩家【{0}】踩到安全地带,没有奖惩!按下任意键继续游戏",PlayerName[PlayNum]);
Console.ReadKey(true);
break;
//踩到1幸运轮盘,选择奖励
case1:
Console.WriteLine("玩家【{0}】踩到幸运轮盘,选择奖励:a--->交换位置b--->轰炸对方",PlayerName[PlayNum]);
stringinput=Console.ReadLine();
while(true)
{
if(input=="a")
{
Console.WriteLine("玩家【{0}】选择与玩家【{1}】交换位置。",PlayerName[PlayNum],PlayerName[1-PlayNum]);
inttemp=PlayerPos[PlayNum];
PlayerPos[PlayNum]=PlayerPos[1-PlayNum];
PlayerPos[1-PlayNum]=temp;
Console.WriteLine("玩家【{0}】与玩家【{1}】交换位置成功!按下任意键继续游戏",PlayerName[PlayNum],PlayerName[1-PlayNum]);
Console.ReadKey(true);
break;
}
elseif(input=="b")
{
Console.WriteLine("玩家【{0}】选择轰炸玩家【{1}】。",PlayerName[PlayNum],PlayerName[1-PlayNum]);
PlayerPos[1-PlayNum]-=6;
Console.WriteLine("玩家【{0}】被轰炸倒退6步!按下任意键继续游戏",PlayerName[1-PlayNum]);
Console.ReadKey(true);
break;
}
else
{
Console.WriteLine("选择格式错误,请重新选择!");
input=Console.ReadLine();
}
}
Console.ReadKey(true);
break;
//踩到2地雷,倒退6步
case2:
Console.WriteLine("玩家【{0}】踩到地雷,倒退6步!按下任意键继续游戏!",PlayerName[PlayNum]);
PlayerPos[PlayNum]-=6;
Console.ReadKey(true);
break;
//踩到3暂停,下一回合不能掷骰子
case3:
Console.WriteLine("玩家【{0}】踩到暂停,下一回合不能掷骰子!按下任意键继续游戏!",PlayerName[PlayNum]);
PlayerFlag[PlayNum]=true;
Console.ReadKey(true);
break;
//踩到4时空穿梭,直接前进10步
case4:
Console.WriteLine("玩家【{0}】踩到时空穿梭,直接前进10步!按下任意键继续游戏!",PlayerName[PlayNum]);
PlayerPos[PlayNum]+=10;
Console.ReadKey(true);
break;
default:
break;
}
}
ChangedCheck();
Console.Clear();
ShowTitle();
DrawMap();
}
#endregion
staticvoidChangedCheck()
{
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;
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。