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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。