欢迎来到天天文库
浏览记录
ID:58676852
大小:864.50 KB
页数:39页
时间:2020-10-15
《C课程设计俄罗斯方块.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C课程设计俄罗斯方块C#程序设计实训报告题目:俄罗斯方块专业____计算机科学与技术_年级班别___计算机09-2班__学号学生姓名____________指导教师_成绩年1月目录一系统设计要求31.1课题分析错误!未定义书签。1.2设计环境31.3设计思路3二课题总体框架设计32.1程序流程图42.2类的结构图5三课题实现63.1程序主界面63.2开始游戏界面63.3游戏结束界面73.4暂停游戏界面73.5使用说明界面…...………………………………………………83.6关键程序代码8四总结214.1设计总结
2、214.2设计体会22一、系统设计要求1.1课题分析本游戏系统是利用C#实现的,是制作为我们所熟悉的非常简单的俄罗斯方块游戏,该系统能实现的具体功能如下:1).能简便的开始游戏,游戏中的方块的功能与日常我们所熟悉的游戏的功能一致,各种块的设置也一致,包括方块的旋转,加速下降,左右移动,满行消去,满行消去自动加分,以及到顶游戏结束等功能;2).能够经过对话框窗体说明各个功能的使用说明,以及一些其它功能。3).界面简洁美观,简单易用。跟其它一般的游戏相差不大。1.2设计环境本程序选择VisualStudio作为实
3、验环境。1.3设计思路用面向对象的方法分析系统对于俄罗斯方块的程序制作,我们能够定义一个或者几个类,专门来描述俄罗斯方块,在这个类中,包含与之相关的方法、属性和字段,经过封装,实现其业务逻辑。其中,每一个俄罗斯方块都有相同的特征,由4个小正方形构成,有旋转,左右移动,下落的动作,整行被填满除去并计算分数而构成行的小正方体块。基中块的形状类型有7种:田、一、L、倒L、Z、倒Z、上。在窗口中经过调用主窗体Form1当中的菜单栏来设置游戏的开始、暂停、结束、重新开始以及推出程序。还能够经过其菜单中游戏说明选项来查看
4、游戏各个键的使用说明,还可调用帮助菜单来查看版权说明。二、课题总体框架设计2.1、程序流程图开始窗口初始化读取游戏开始游戏开启游戏时钟随机形成方块判断是否可移旋转左移右移加速下降暂停结束绘制方块是否越顶是否满行消行结束加分2.2、类的结构图三、课题实现3.1程序主界面3.2开始游戏界面3.3游戏结束3.4暂停游戏3.5使用说明界面和版权界面3.6关键程序代码1、Form1类1)构造函数,设定当前运行的方块,下一个即将出现的方块,方块产生的位置,玩家积分,游戏开关等。publicpartialclassForm
5、1:Form{privateBlockcurrentBlock;//当前在运行的方块privateBlocknextBlock;//下一个即将出现的方块privatePointstartLocation=newPoint(bianjie.SingleSquareSize*8,0);//方块产生的位置privateintscore=0;//玩家积分privateboolstillRuning=false;//游戏运行开关2)键盘操作:用来选择方块的移动方向,是向右移动,向左移动,向下加速,旋转,还是暂停。/*键
6、盘操作*/privatevoidForm1_KeyDown(objectsender,KeyEventArgse){switch(e.KeyCode){caseKeys.Right:currentBlock.right();break;//向右移动caseKeys.Left:currentBlock.left();break;//向左移动caseKeys.Up:currentBlock.Rotate();break;//旋转caseKeys.Down:while(currentBlock.down());br
7、eak;//向下加速caseKeys.Space://空格:暂停timer1.Enabled=!timer1.Enabled;if(!timer1.Enabled)showMsg("暂停");elsemsg.SendToBack();break;}picBack.Focus();}3)时钟触发处理函数,使方块自动的向下移动,每1秒使方块向下移动一次/*游戏时钟*/privatevoidtimer1_Tick(objectsender,EventArgse){if(!stillRuning)return;//检
8、测是否还能够下移if(!currentBlock.down()){if(currentBlock.Top()==0){//如果到顶则游戏结束showMsg("GameOver!");stillRuning=false;timer1.Stop();return;}//否则计算分数并继续interaseLines=bianjie.CheckLines();if(eraseLines>0){score+=
此文档下载收益归作者所有