- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#程序设计实训报告
题目:5. 俄罗斯方块
院 系 信息工程系_______
专 业_____计算机科学与技术_
年级班别_____ ____ ___
学 号
学生姓名_____ ___________
指导教师_____ ___________
成 绩
2011 年 12 月
系统设计要求
需求分析
本系统为一个用C#实现的为我们所熟悉的简单的俄罗斯方块游戏,该系统的具体功能如下:
能简便的开始游戏,游戏中的方块的功能与日常我们所熟悉的游戏的功能一致,各种块的设置也一致,包括块的旋转,加速下降,平移,满行消去,到顶游戏结束功能;
能够自定义游戏中功能键的具体按键,设置游戏的级别,即方块下降的速度等,并在设置后立即生效,在游戏中立刻体现,在下次程序运行时读取上次设置的游戏环境;
显示下一方块提示信息,以及游戏数据的统计,如速度,按键速度,分数行者等等;
游戏有级别设置,级别越高,方块下降的速度越快,当到达一定分数后进入下一级别;
界面要求
要求界面简洁美观,简单易用。
设计环境
本程序选择Visual Studio 2008作为实验环境。
设计思路
用面向对象的方法分析系统
对于俄罗斯方块来说,我们可以定义一个类,专门来描述俄罗斯方块,在这个类中,包含与之相关的方法、属性和字段,通过封装,实现其业务逻辑。其中,每一个俄罗斯方块都有相同的特征,由4个小正方形构成,有旋转,移动,下落的动作,行被填满除去构成行的小正方体块。基中块的形状类型有7种:田、一、L、倒L、Z、倒Z、上。
在主窗口中,通过调用俄罗斯方块类来实现程序的表示层,在该窗口中通过两个Panel控件来实现方块叠放窗口和下一方块信息窗口;调用设置窗口,保存设计窗口类传回的信息,并设置到游戏中去,保存在配置文件中;
在设置窗口中,以良好的界面提供用户自定义快捷键的接口,保存相应设置参数,以提供给调用窗口。
概要设计
根据设计思路,可以为系统设计三个类,实现俄罗斯方块其本块的类RussiaBlock继承Object类,主窗体类MainForm类,设置窗体类SettingForm类。
RussiaBlock类
字段
private int shapeNO;//形状号
private Control con;//绘图控件
private Point[] pos;//当前位置
private Point[] lastPos;//最后位置
private int leftBorder;//左边界
private int bottomBorder;//下边界
private int unitPix;//每块象素数
/// summary
/// 当前块总个数
/// /summary
private int blockNum = 0;//当前块总个数
private int rowDelNum = 0;//已构成满行被消去的行数
private bool[,] aroundExist;//周边的位置是否有块
private Color[,] aroundColor;//周边的着色
private Color color;//当前块颜色
属性
public int RowDelNum//当前块总个数
public int BlockNum//当前块总个数
私有方法
private void SetLastPos()//设置方块的最后位置
private void SetPos(int shapeNO, Point firstPos)//设置方块的当前位置,shapeNO方块号,firstPos初始位置
private bool CanMove(int direction)//块是否还可继续移动包括下和左右
private bool CanRotate(Point[] pos)//判断当前块是否是可以进行翻转,位置确定则不能,还没确定则可以
private void DelRows()//一行中所有格填满,删除该行.
private void DrawOne(int x, int y, Color color, Graphics gra)//在指定的位
文档评论(0)