ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:136KB ,
资源ID:2793054      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2793054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C俄罗斯方块课程设计.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

C俄罗斯方块课程设计.doc

1、俄罗斯方块设计俄罗斯方块设计 11 系统设计要求 12 设计思路 13 系统功能实现 24 总结 111 系统设计要求1.1 需求分析本系统为一个用 C#实现的为我们所熟悉的简单的俄罗斯方块游戏,该系统的具体功能如下:1) 能简便的开始游戏,游戏中的方块的功能与日常我们所熟悉的游戏的功能一致,各种块的设置也一致,包括块的旋转,加速下降,平移,满行消去,到顶游戏结束功能;2) 能够自定义游戏中功能键的具体按键,显示下一方块提示信息,以及游戏数据的统计;3) 考虑需要解决的问题:怎么样设置图形显示;怎样获取鍵盘输入;怎样控制方块的移动;怎样控制时间间隔(用于游戏中控制形状的下落);游戏中的各种形状

2、及整个游戏空间怎么用数据表示;游戏中怎么判断左右及向下移动的可能性;游戏中怎么判断某一形状旋转的可能性;按向下方向键时加速某一形状下落速度的处理;怎么判断某一形状已经到底;怎么判断某一已经被填满;怎么消去已经被填满的一行;怎么消去某一形状落到底后能够消去的所有的行;(如长条最多可以消去四行)怎样判断游戏结束,关于“下一个”形状取法的问题。2 设计思路2.1 用面向对象的方法分析系统从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,在设计中在一个图片框中构造了一个 20*20(像素)的小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,总共设计了 7 中造型,每种造型又

3、可以通过旋转而变化出 2 到 4 种形状,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的。俄罗斯方块游戏设计主要包括以下 10 个方面:1) 游戏界面的设计。2) 俄罗斯方块的实现。3) 键盘输入信息的获取。4) 俄罗斯方块的移动(向左,向右和向下) 。5) 俄罗斯方块的变换。6) 方块自动下落与速度的选择。7) 慢行的判断与消行。 8) 游戏结束判断。9) 用户配置保存。在主窗口中,通过调用俄罗斯方块类来实现程序的表示层,在该窗口中通过两个 Panel 控

4、件来实现方块叠放窗口和下一方块信息窗口;调用设置窗口,保存设计窗口类传回的信息,并设置到游戏中去,保存在配置文件中;在设置窗口中,以良好的界面提供用户自定义快捷键的接口,保存相应设置参数,以提供给调用窗口。2.2 运用的控件和主要对象 在设计过程中主要用到的控件有:PictureBox 控件,MenuStrip 控件,Button控件,Label 控件,Timer 控件,winmm 组件,DirectSound 等等。 3 系统功能实现3.1 屏幕信息初始化用来显示状态信息的框private System.Windows.Forms.GroupBox statusBox;开始按钮private

5、 System.Windows.Forms.Button btnStart;显示“下一块”的标签private System.Windows.Forms.Label label3;显示“分数”的标签private System.Windows.Forms.Label label2;显示“等级”的标签private System.Windows.Forms.Label label1;用来画下一块方块的区域private System.Windows.Forms.PictureBox panel1;游戏区域private System.Windows.Forms.PictureBox gameAr

6、ea;实现如下主界面效果图(图 3-1):图 3-13.2 方块的实现在程序中每一个方块都是一个 Block 类的实例。Block 包括的参数有方块的宽度,高度,最左端横坐标,最上端纵坐标,方块的数组表示。其中一共有 7 中形状的方块,以数组表示为:11 11 1 11 010 10 0101 10 1 11 111 11 1101 10 1 01 101方块的 7 种形状分别以数字 0-6 来代表,在构造函数中,随机生成 0-6中数字,以此来随机生成方块的形状。用来在界面上显示方块的贴图也以0-6 的数字来代表,同样以随机数的形式来随机的现实方块的颜色。3.3 键盘输入事件处理因为在界面上有

7、一个按钮,并且只有一个按钮,所以该按钮在通常情况下都是默认为焦点。在这种情况下按下某些键,比如空格,就会产生出发按钮事件的情况。因此必须重载整个 WinForm 的 ProcessCmdKey 来避免这样的问题。当按向左,向右及旋转按钮时,只要相应的处理方块的位置或者形状即可,但是当按向下或者立即下落时,需要不同的处理。向下移动时,如果移动到最底部但还未固定,则需要重新设置计时器间隔时间,从而使自动下落时,底部未固定的方块到固定的时间相同。如果方块在最底部而未固定的时候,向下移动,则立即固定。这两种情况,当方块固定后,都需要判断是否消行,立即下落时,需要判断是否消行。3.4 方块的移动游戏中方

8、块的移动分为向左移动,向右移动,向下移动和立即落下。向左移动:public void MoveLeft() int xPos = runBlock.XPos-1;int yPos = runBlock.YPos;for (int i = 0; i _width-1)/如果超出右边界则失败return;if (!coorArrxPos + runBlocki.X, yPos - runBlocki.Y.IsEmpty)/如果右边有东西挡则失败return;runBlock.erase(gpPaltte);/擦除原来位置的转块runBlock.XPos+;runBlock.Paint(gpPalt

9、te);/在新位置上画转块向下移动:public void Drop() timerBlock.Stop();while (Down() ;timerBlock.Start();3.5 方块的变换public void DeasilRotate() /顺时针旋转for (int i = 0; i _width - 1)/如果超出左右边界,则失败return;if (y _height - 1)/如果超出上下边界,则失败return;if (!coorArrx, y.IsEmpty)/如果旋转后的位置上有转块,则失败return;runBlock.erase(gpPaltte);/擦除原来位置的

10、转块runBlock.DeasilRotate();runBlock.Paint(gpPaltte);/在新位置上画转块public void ContraRotate() /逆时针旋转for (int i = 0; i _width - 1)/如果超出左右边界,则失败return;if (y _height - 1)/如果超出上下边界,则失败return;if (!coorArrx, y.IsEmpty)/如果旋转后的位置上有转块,则失败return;runBlock.erase(gpPaltte);/擦除原来位置的转块runBlock.ContraRotate();runBlock.Pai

11、nt(gpPaltte);/在新位置上画转块3.6 判断方块是否到底public void CheckAndOverBlock()/检查转块是否到底,如果到底则把当前转块归入coorArr,并产生新的转块bool over = false;/设置一个当前运行转块是否到底的标志for (int i = 0; i y)y = runBlocki.Y;runBlock.YPos = y;/检查新生成的转块所占用的地方是否已经有转块存在,如果有,游戏结束for (int i = 0; i highRow)highRow = y;bool repaint = false;/判断是否重画标志for (int i = lowRow; i 0; k-) /把第 n 行的值用 n-1 行的值来代替for (int j = 0; j 虽然简单明了,但是对于机制原理的解释和说明过少,因此,学习的时候应该不只满足于这本书中的内容,应该多找一些书籍进行知识的扩展了加深。开发一个工程时,应该先制定好程序的框架,规划好相应的功能模块,使程序模块化,易于日后的扩展和完善。其次是程序的数据结构,良好的数据结构能使程序高效化,功能强大。本次实现中最重要的是方块类的编写,其定义的好坏和封装性的良好是整个程序运行的基础,属于程序的业务逻辑功能块,主框架中通过调用该类,实现程序的表示层。再之,优秀的算法能提高程序的效率。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报