俄罗斯方块思路.doc_第1页
俄罗斯方块思路.doc_第2页
俄罗斯方块思路.doc_第3页
俄罗斯方块思路.doc_第4页
俄罗斯方块思路.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

以下是我过去做俄罗斯方块的全部思路,虽说每种语言实现的方式不一样,但是制作的思路是大体一样的 俄罗斯方块的思路界面的搭建:游戏区域 panel控件下一个方块的提示显示区域: panel 控件其他控件有button,label,textBox等等游戏实现的主要步骤:方块的动态生成方块的移动方块的变化当每一行填满的时候方块的清除清除后方块的排列方块动态生成的思路以及运用的知识点:PictureBox p=new PictureBox();/动态生成方块p.width=20;/设置方块的属性,对于其他方块必须的属性根据个人要求设置p.height=20;不同方块的生成:由小方块拼接而成方块的移动:当方块的下一个移动区域为空的时候,可以容许方块向下移动,如果条件不成立,就停止方块移动注意:没个方块的向下移动的情况都不相同,只需要根据每个方块的向下移动的可行区域进行判断,如果方块可以往下移动,就容许移动。方块的左右移动判断方块最的左边和右边的方块的坐标+左右移动的位置(像素)y移动条件:如果移动的区域为空的时候,就移动方块,否则不移动方块注意:左右移动的最大区域不可以超过游戏区域,可以根据不同的判断来限定方块越界的问题方块的直接向下移动:只需要加快方块的移动速度就可以达到这个效果方块的变化两种长方形的变化条件判断区域:变化范围=长方形的长*长方形的长的区域如果变化范围条件都为空的时候,就变化其它方块的变化条件:主要思路:判断要变化方块,变化后的区域是否为空, 并且方块变化区域范围是否成立注意:方块变化时的条件,不要忘记如果方块已经停止移动的时候,方块就不再容许变化判断方块如何为填满:可以根据不同的方法来限定:只需要判断当Y坐标一行都为方块的时候,说明这一行方块已经填满,那么就可以清除这一行方块清除后的效果:清除这一行以上的方块的位置都需要往下移动一行,根据消除行数来判断向下移动的位置建议:可以将每一个小方块保存在List集合中,清除时候可以根据填满一行的下标和对象进行删除:对于游戏等级和游戏加分制度可以根据不同的需求来进行设置,最后希望这个方案能给你带来思路,能给你带来帮助,祝愿能早日完成!个人代码提供以及实现步骤: The First Point运用二维数组定义整个游戏界面,定义数组Int, arr=new int21,12;界面赋值For(int i=0;i22;i+)For(int j=0;j12;j+)If( i=20 | j=0 | j=11)Arri,j=-2;/代表障碍ElseArri,j=-1;/代表空格地图大小为200 * 400数组赋值后,值为-1的地方相对于地图界面的空白区域 The Second Point/动态生成方块()/定义方块集合list ls=new list();PictureBox one =new pictureBox();One.width=20;One.height=20;One.image=imagelist.images0;/给图片空间赋值图片One.location=new point(40,0);/给第一张图片定位PictureBox two=new pictureBox();Two.width=20;Two.height=20;Two.image=imagelist.images0;Two.location=new point(60,0);pictureBox three =new pictureBox();three.widht=20;three.height=20;three.image=imagelist.images0;three.location=new point(80,0);pictureBox four=new pictureBox();four.widht=20;four.height=20;four.image=imagelist.images0;four.location=new point(100,0);/将四个设好的图片添加到游戏控件内This.panel.controls.add(one);This.panel.controls.add(two);This.panel.controls.add(three); x 40This.panel.controls.add(four); | 100/将方块添加到集合中 |ls.add(one); y 0ls.add(two); ls.add(three); ls.add(four); 完成后大概图像 /定义变量记录方块下标 _ y 380 sumindex+=4; /方块的移动The Thrid Point /注意判断四个方块同等X坐标移动的Y位置是否为空如:定义X和Y代表方块在panel中的坐标值方块1 x=40, y=0;方块2 x=60,y=0;方块3 x=80,y=0;方块4 x=100,y=0;如果方块每移动一次,Y坐标加20pX的话四个方块的向下移动条件是每个方块同等X坐标下Y+20的地方等于空二维数组中行和列所对应的就是panel中的X和Y坐标只需判断数组中的相应位置来控件方块的移动移动后的图解 赋值后index值 _y 380 0 1 2 3 | x 40arr19,4=indexsum-4;arr19,5=indexsum-3;arr19,6=indexsum-2;arr19,7=indexsum-1; The Fourth Point左移动判断方块X坐标减移动的20Px的地方是否为空,条件成立向左移动4个方块如图 x | - y x=20;y=0;/如果两个白正方块的地方为空的时候,方块可以向左移动一格,x+20,y不变arr1,1=-1 对于的坐标 x=0,y=20;arr0,3=-1 x=40,y=0; x | y右则反之x-1 x变化| |x -y | y+1- -y 变化后 The Fifth Point当一行填满的时候清除这一行方块 for (int i =1; i 20; i+) /判断是哪一行已经填满 string see=已满; for (int j = 1; j 11; j+) if (arri, j = -1)/判断是否有空格 see = 未满; break; if (see = 已满) /判断如果一行填满的时候 int start = lp.Count; for (int b = 1; b 11; b+)/隐藏消除该行 int index = arri, b;/得到消除方块在数组中的下标 lp.RemoveAt(index);/从数组中移除方块this.panel.Controls.RamoveAt(index);/清除控件中的方块 for (int iy = 1; iy 20; iy+)/消除后根据集合的动态维护进行相应的数组改变 for (int ix = 1; ix index) GameHelp.Yarriy, ix = GameHelp.Yarriy, ix - 1; /注动态维护0,1,2,3,4,5,6,7 删除 0 时候 1,2,3,4,5,6,7 index 为 0,1,2,3,4,5,6, 删除为2的时候 0,1,3,4,5,6,7, index 0,1,2,3,4,5,61 indexsum-= 10;/由于集合动态维护,将indexsum-消除行控件的个数 for (int b = 1; b 11; b+)/将隐藏方块的区域赋值为空 GameHelp.Yarri, b = -1;/将数组中消除的区域赋值 int indexof = 0; this.panel1.Controls.Clear();/清除游戏区域的控件,可以不清除 x | foreach (PictureBox pb in lp)/循环遍历整个集合,将集合中的控件重新确定位置 int lx = pb.Location.X;/获取方块的X坐标 int ly = pb.Location.Y;/获取方块的Y坐标 if (ly 0)/当是数组中第二个方块的时候 -1 2 nexty = lpindexof - 1.Location.Y;/获取上一个方块的XY坐标 移动3的时候 nextx = lpindexof - 1.Location.X; -1 2 if (lx = nextx & ly = nexty + 20)/如果上一个方块和这一个方块X相同,并且Y相差20的话 3 GameHelp.Yarrly / 20, lx / 20 + 1 = indexof;/将方块移动到的地方赋值为集合下标值 2 else 2 index -1 GameHelp.Yarrly / 20, lx / 20 + 1 = indexof;/方块移动的地方赋值为集合下标值 3 2 GameHelp.Yarrly / 20 - 1, lx / 20 + 1 = -1;/方块的原始位置赋值为空 3 /集合中3 else /消

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论