C#-八码数游戏课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

八码数游戏程序核心代码主要部分:键盘移动事件:主要以交换数组内两个数字的位置为只要方法,交换两个数字在数组内的位置之后,再依次写入label.text以实现主窗体上的数字移动。八码数游戏键盘事件移动数字数组数字随机排列usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespacepuzzle_8{publicpartialclassForm1:Form{//Start方法:返回一组含有9个元素的数组,数组为0~9不重复的且最后一位必须为0的数。publicstaticint[]Start(){//声明9个元素数组,先初始化全为0int[]arr=newint[9]{0,0,0,0,0,0,0,0,0};//对数组的前8个元素进行重新赋值,赋值内容为1~8的随机数,第九个元素不参与以保证第9位数为0。inttemp;Randomr=newRandom();for(inta=0;a8;a++){do{temp=r.Next(1,9);//当赋值第一个元素时不用判断是否有重复直接赋值if(a==0){arr[a]=temp;break;}else//当赋值不为第一元素时将与前面元素逐一比较如有重复重新获取随机数再比较不重复即赋值for(intb=0;ba;b++){if(temp==arr[b])break;if(b==a-1)arr[a]=temp;}}while(arr[a]==0);//当所要赋值的元素值不为0时即可跳出循环开始下一个元素的赋值}returnarr;}//方法:将数组按顺序写入9个label.Text每一次移动数字都要调用一次以更新主窗体上的游戏数据publicstaticvoidMove(int[]arr,Form1frm){inta=0;foreach(Controlconinfrm.Controls){if(conisLabel){if(arr[a]==0)//如果要写入的数字为0则写入为空值.con.Text=;elsecon.Text=arr[a].ToString();a++;}}}//计时变量声明intmin=0;intsec=0;//声明全局变量核心数组int[]arr=newint[9];//初始化数组下标为8的数是0intzero=8;publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){}//键盘事件只对上左下右四个按键做处理(核心算法)privatevoidForm1_KeyDown(objectsender,KeyEventArgse){if(e.KeyData.ToString()==Up){//上:当空值label处在最下排时不作处理否则与比其大3的下标的数交换位置if(zero==6||zero==7||zero==8){return;}else{arr[zero]=arr[zero+3];arr[zero+3]=0;zero=zero+3;Move(arr,this);}}if(e.KeyData.ToString()==Down){//下:当空值label处在最上排时不作处理否则与比其小3的下标的数交换位置if(zero==0||zero==1||zero==2){return;}else{arr[zero]=arr[zero-3];arr[zero-3]=0;zero=zero-3;Move(arr,this);}}if(e.KeyData.ToString()==Left){//左:当空值label处在最右排时不作处理否则与比其大1的下标的数交换位置if(zero==2||zero==5||zero==8){return;}else{arr[zero]=arr[zero+1];arr[zero+1]=0;zero=zero+1;Move(arr,this);}}if(e.KeyData.ToString()==Right){//右:当空值label处在最左排时不作处理否则与比其小1的下标的数交换位置if(zero==0||zero==3||zero==6){return;}else{arr[zero]=arr[zero-1];arr[zero-1]=0;zero=zero-1;Move(arr,this);}}//每次按下键盘移动后判断顺序是否已经摆放正确boolt=false;for(inta=0;a8;a++){if(arr[a]!=a+1)break;if(a==7)t=true;}//如果移动完成跳出游戏所用时间if(t){MessageBox.Show(YOUWIN!\n所用时间:+min.ToString()+:+sec.ToString());timer.Stop();开始ToolStripMenuItem.Text=开始;}}//游戏开始事件获取随机数组对全局数组变量赋值逐一写入主窗体开始游戏计时privatevoid开始ToolStripMenuItem_Click(objectsender,EventArgse){arr=Start();Move(arr,this);timer.Enabled=true;开始ToolStripMenuItem.Text=重新开始;min=0;sec=0;}//游戏计时器privatevoidtimer_Tick(objectsender,EventArgse){sec++;if(sec==60){sec=0;min++;}lblTime.Text=所用时间:+min.ToString()+:+sec.ToString();}}}

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功