C#实现飞行棋(Winform)
本文实例为大家分享了C#实现飞行棋的具体代码,供大家参考,具体内容如下
基于Winform框架写的
不足之处请大佬指教
usingSystem;
usingSystem.Drawing;
usingSystem.Windows.Forms;
namespace飞行棋
{
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}
//创建一个数组装游戏地板
int[]mapList=newint[390];
//创建装图片的数组
PictureBox[]mappic=newPictureBox[390];
//创建路的数组
int[]road=newint[100];
//创建地图
Panelmap=newPanel();
intsize=30;
//创建骰子
PictureBoxdice=newPictureBox();
//初始位置的停放区域红色的
Panelplan1=newPanel();
//初始位置的停放区域绿色的
Panelplan2=newPanel();
privatevoidForm1_Load(objectsender,EventArgse)
{
this.Size=newSize(1200,600);
this.FormBorderStyle=FormBorderStyle.FixedSingle;
this.Location=newPoint(250,100);
this.BackColor=Color.Wheat;
map.Size=newSize(30*size,13*size);
map.BorderStyle=BorderStyle.FixedSingle;
map.Location=newPoint(40,160);
this.Controls.Add(map);
//显示图片的方法
Init();
plan1.Size=newSize(100,100);
plan1.Location=newPoint(map.Left,map.Top-120);
plan1.BackgroundImage=Image.FromFile("../../img/circle.png");
plan1.BackgroundImageLayout=ImageLayout.Stretch;
this.Controls.Add(plan1);
plan2.Size=newSize(100,100);
plan2.Location=newPoint(map.Left+120,map.Top-120);
plan2.BackgroundImage=Image.FromFile("../../img/circle.png");
plan2.BackgroundImageLayout=ImageLayout.Stretch;
this.Controls.Add(plan2);
PictureBoxredPlayer=newPictureBox();
redPlayer.Size=newSize(80,80);
redPlayer.Image=Image.FromFile("../../img/red.png");
redPlayer.Location=newPoint(10,10);
redPlayer.SizeMode=PictureBoxSizeMode.StretchImage;
plan1.Controls.Add(redPlayer);
PictureBoxgreenPlayer=newPictureBox();
greenPlayer.Size=newSize(80,80);
greenPlayer.Image=Image.FromFile("../../img/green.png");
greenPlayer.Location=newPoint(10,10);
greenPlayer.SizeMode=PictureBoxSizeMode.StretchImage;
plan2.Controls.Add(greenPlayer);
//创建对话框
tall.Size=newSize(200,500);
tall.Location=newPoint(map.Right+20,50);
tall.ReadOnly=true;
this.Controls.Add(tall);
//玩家一:
name.Size=newSize(100,30);
name.Location=newPoint(45,10);
this.Controls.Add(name);
//玩家二:
names.Size=newSize(100,30);
names.Location=newPoint(160,10);
this.Controls.Add(names);
btn.Location=newPoint(300,10);
btn.Text="开始游戏";
btn.Size=newSize(100,30);
btn.BackColor=Color.Pink;
btn.Click+=Btn_Click;
this.Controls.Add(btn);
//骰子
dice.Size=newSize(80,80);
dice.Image=Image.FromFile("../../img/roll.png");
dice.Location=newPoint(map.Right-160,map.Top-120);
dice.SizeMode=PictureBoxSizeMode.StretchImage;
this.Controls.Add(dice);
dice.MouseClick+=Dice_MouseClick;
}
privatevoidBtn_Click(objectsender,EventArgse)
{
//创建初始的弹框
Tall(string.Format("请两人投掷骰子,{0}先手,点大的先走",name.Text));
playName[0]=name.Text;
playName[1]=names.Text;
tall.Focus();
}
TextBoxname=newTextBox();
TextBoxnames=newTextBox();
Buttonbtn=newButton();
//创键记录的对话框
RichTextBoxtall=newRichTextBox();
//创建随机
Randomr=newRandom();
//轮流投掷骰子0代表红方1代表绿方
bool[]playStart=newbool[2]{true,false};
//记录双方当前的位置
int[]playPosition=newint[2]{-1,-1};
int[]playStand=newint[2]{-1,-1};
//记录骰子的点数
int[]shaizi=newint[2];
string[]playName=newstring[2];
//数组存储点数
int[]num=newint[2];
//1.轮流投掷筛子决定谁先出门
privatevoidDice_MouseClick(objectsender,MouseEventArgse)
{
PlayDice();
PlayGame();
}
privatevoidPlayDice()
{
//红方投掷红方为true投掷完之后变为false绿方投掷
if(playStart[0])
{
shaizi[0]=r.Next(1,7);
Tall(String.Format("{1}投掷出{0}点",shaizi[0],playName[0]));
playStart[0]=!playStart[0];
}
else
{
playStart[0]=!playStart[0];
}
//绿方投掷绿方为false绿方投掷完之后变为true.轮到红方投掷
if(playStart[1])
{
shaizi[1]=r.Next(1,7);
Tall(String.Format("{1}投掷出{0}点",shaizi[1],playName[1]));
playStart[1]=!playStart[1];
}
else
{
playStart[1]=!playStart[1];
}
}
//决定游戏谁先手
privatevoidOutDoor()
{
//红方为true绿方为false的时候一回合完了一回合完之后对应的骰子数都不为0
if(playStart[0]&&!playStart[1]&&(shaizi[0]!=0||shaizi[1]!=0))
{
if(shaizi[0]==shaizi[1])
{
Tall("双方点数相同,请重新投掷");
}
else
{
//第二回合
st=false;
if(shaizi[0]>shaizi[1])
{
Tall(String.Format("{0}点数较大,先行一步,{0}投掷",name.Text));
playStart[0]=true;
playStart[1]=false;
}
if(shaizi[0]
///双方轮流游戏
///
///传入参数index0为红方1为绿方
bool[]re=newbool[2]{false,false};
privatevoidPlayReturn(intindex)
{
//都没出门
if(playPosition[index]==-1)
{
switch(shaizi[index])
{
case2:
case4:
Tall(String.Format("{0}可以起步",playName[index]));
playPosition[index]=0;
playStand[index]=0;
//如果两个位置相等
if(playPosition[1]==playPosition[0])
{
mappic[road[playPosition[index]]].Image=imageList1.Images[2];
}
else
{
mappic[road[playPosition[index]]].Image=imageList1.Images[index];
}
break;
case6:
playStart[index]=true;
playStart[1-index]=false;
Tall(String.Format("{0}可以起步",playName[index]));
playPosition[index]=0;
playStand[index]=0;
if(playPosition[1]==playPosition[0])
{
mappic[road[playPosition[index]]].Image=imageList1.Images[2];
}
else
{
mappic[road[playPosition[index]]].Image=imageList1.Images[index];
}
Tall(String.Format("请{0}投掷骰子",playName[index]));
break;
default:
Tall(String.Format("很遗憾,{0}投掷出{1}点无法起步,轮到{2}投掷",playName[index],shaizi[index],playName[1-index]));
break;
}
if(playPosition[0]!=-1)
{
plan1.Controls.Clear();
}
if(playPosition[1]!=-1)
{
plan2.Controls.Clear();
}
}
else
{
//改变位置之前记录好之前的位置
playStand[index]=playPosition[index];
playPosition[index]+=shaizi[index];
if(playPosition[index]>=99)
{
MessageBox.Show(playName[index]+"获胜");
playPosition[index]=99;
//改变图片
Change(index);
return;
}
Tall(string.Format("{0}移动了{1}步",playName[index],shaizi[index]));
//改变图片
Change(index);
//判断移动完成之后的位置是如何
if(playPosition[index]==playPosition[1-index])
{
playPosition[1-index]=0;
playStand[1-index]=playPosition[1-index];
Tall(String.Format("厉害!{0}精准的将{1}踩回原点,{0}当前的位置是{2},{1}当前的位置是{3},",playName[index],playName[1-index],playPosition[index],playPosition[1-index]));
mappic[road[playPosition[index]]].Image=imageList1.Images[index];
mappic[road[playPosition[1-index]]].Image=imageList1.Images[1-index];
Tall(string.Format("{0}开始投掷",playName[1-index]));
}
switch(mapList[road[playPosition[index]]])
{
case1:
Tall(string.Format("{0}安全到达!当前位置是{1}",playName[index],playPosition[index]));
Tall(String.Format("{0}开始投掷!",playName[1-index]));
break;
case2:
Tall(string.Format("很不幸,{0}踩中了香蕉皮,后退6步,当前位置是{1}",playName[index],playPosition[index]));
playStand[index]=playPosition[index];
playPosition[index]-=6;
Change(index);
/*Tall(string.Format("{0}当前位置是{1}",playName[index],playPosition[index]));*/
Tall(string.Format("{0}开始投掷",playName[1-index]));
break;
case3:
Tall(String.Format("恭喜!{0}踩中时空隧道,前进6步!当前位置是{1}",playName[index],playPosition[index]));
playStand[index]=playPosition[index];
playPosition[index]+=6;
Change(index);
/*Tall(string.Format("{0}当前位置是{1}",playName[index],playPosition[index]));*/
Tall(string.Format("{0}开始投掷",playName[1-index]));
break;
case4:
Tall(string.Format("好可惜,{0}踩中了陷阱,暂停一回合",playName[index]));
re[index]=true;
re[1-index]=false;
break;
case5:
Tall(string.Format("真好,{0}踩中幸运星,在玩一回合!当前位置是{1}",playName[index],playPosition[index]));
playStart[index]=true;
playStart[1-index]=false;
Tall(string.Format("{0}继续投掷!",playName[index]));
break;
case6:
Tall(string.Format("真好!{0}踩中秘籍,请选择措施!当前位置是{1}",playName[index],playPosition[index]));
DialogResultresult=MessageBox.Show("是否与对方更换位置!","移魂大法",MessageBoxButtons.YesNo);
if(result==DialogResult.Yes)
{
inttemp=playPosition[index];
playPosition[index]=playPosition[1-index];
playPosition[1-index]=temp;
playStand[index]=playPosition[index];
playStand[1-index]=playPosition[1-index];
mappic[road[playPosition[index]]].Image=imageList1.Images[index];
mappic[road[playPosition[1-index]]].Image=imageList1.Images[1-index];
}
Tall(string.Format("{0}当前位置是{1},{2}的位置是{3}",playName[index],playPosition[index],playName[1-index],playPosition[1-index]));
Tall(string.Format("{0}开始投掷。",playName[1-index]));
break;
case7:
Tall(string.Format("幸运!{0}获得手枪,可选择击退对方3步!当前位置是{1}",playName[index],playPosition[index]));
DialogResultres=MessageBox.Show("是否选择击退对方三步!","手枪!",MessageBoxButtons.YesNo);
if(res==DialogResult.Yes)
{
playStand[1-index]=playPosition[1-index];
playPosition[1-index]-=3;
mappic[road[playPosition[1-index]]].Image=imageList1.Images[1-index];
Change(1-index);
}
/*Tall(string.Format("{0}被击退对方3步!当前位置是{1}",playName[1-index],playPosition[1-index]));*/
Tall(string.Format("{0}开始投掷。",playName[1-index]));
break;
default:
break;
}
if(re[index]&&!re[1-index])
{
playStart[index]=true;
playStart[1-index]=false;
re[index]=false;
re[1-index]=false;
}
}
}
privatevoidChange(intindex)
{
//如果移动完之后再同一个位置
if(playPosition[1]==playPosition[0])
{
mappic[road[playPosition[index]]].Image=imageList1.Images[2];
}
else
{//移动完成之后显示对应玩家的图片
mappic[road[playPosition[index]]].Image=imageList1.Images[index];
}
//原本位置图片的显示,如果两人在同一个位置站着,并且都在路上自己离开之后,留下对方的图片在原地在起点的时候
if(playStand[0]==playStand[1]&&playStand[0]!=-1&&playStand[1]!=-1&&playPosition[1-index]==0)
{
mappic[road[playStand[index]]].Image=imageList1.Images[1-index];
mappic[road[playPosition[index]]].Image=imageList1.Images[index];
}
else//如果两人不再同一位置判断之前的脚下是什么
{
switch(mapList[road[playStand[index]]])
{
//整个地图的图片
case0:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/water.gif");
break;
//游戏区域的路
case1:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/grass.png");
break;
case2:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/sk.jpg");
break;
case3:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/xj.jpg");
break;
case4:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/xianjing.jpg");
break;
case5:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/xx.jpg");
break;
case6:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/jh.jpg");
break;
case7:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/sq.jpg");
break;
case10:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/start.png");
break;
case11:
mappic[road[playStand[index]]].Image=Image.FromFile("../../img/end.bmp");
break;
}
}
}
voidTall(stringstr)
{
MessageBox.Show(str);
tall.AppendText(str+"\r\n");
}
//创建一个显示所有图片的方法
voidInit()
{
//先调用地图的
CreateMap();
//在调用道具的先有地图再有道具
CreateGear();
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。