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

下载本文档

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

文档简介

俄罗斯方块设计书1 项目开发目的1.1 熟练掌握已经学习的C语言基础,利用项目开发巩固已学习的知识;1.2 扩展C语言知识:在完成项目的同时学习更高级的C语言知识,仅仅掌握课堂所学内容是远远不够的,需要通过项目扩展自己的C语言知识库;1.3 掌握规范编码的基本要求,养成良好的编码习惯;1.4 学习一个项目的基本开发过程,练习开发文档的编写;2 需求说明本项目主要开发一个功能简单的俄罗斯方块游戏。开发环境如下:Win-TC开发工具俄罗斯方块需求如下:2.1 界面需求分析2.1.1 界面分辨率大小测定2.1.2 界面设计2.2 功能需求分析2.2.1 初始化游戏开始时,初始化屏幕、记分牌、级别、速度。2.2.2 设定游戏级别和速度等待玩家设置游戏级别和速度,给出开始按键提示,具体要求如下:a) 通过下划线闪烁提示玩家正在修改的是级别还是速度,利用左键和右键在两者之间进行切换;b) 通过上下键改变级别和速度:按上键数字变小,按下键数字变大,当数字由0变-1时,修改-1为9,当数字由9变10时,修改10为0;c) 打印提示语:press ENTER to play,提示玩家按回车键开始游戏;d) 按下回车,下划线不再闪烁,屏幕上显示已设定的级别和速度;e) 按其他键无效,保持按键前的状态。2.2.3 根据游戏级别初始化方块布局当回车键按下开始游戏后,需要根据设定的游戏级别初始化游戏池中的方块布局,当级别为0时,池中为空,无预先放置的随机生成的方块,每增加一个级别,在初始的游戏池中就增加一行不完整的方块组,以增加游戏难度,最多有9行。2.2.4 绘制各种俄罗斯方块每个俄罗斯方块由4个小方块组成,总共有直线形、田字形、丁字形、Z字形、7字形五类俄罗斯方块,除了田字形其他各类俄罗斯方块都可以变形,因此可以得出共有19种形状的方块,而且每一种形状经过变形后只能变换到另一种形状的方块。2.2.5 时钟中断处理程序通过时钟中断处理程序控制程序的等待时长、方块移动的速度等。2.2.6 检测该位置是否可以放置方块当一类方块到达某个位置时判断该位置是否为空,可不可以放置该类方块。2.2.7 标记下降的方块已落位当一个下降的方块停止时,标记该方块所处位置,以标明游戏池中该位置的四个小方块已被占用,后续方块到达不了这些位置。2.2.8 修改速度游戏进行过程中当得分符合某一规则时,增加速度一级2.2.9 修改得分游戏进行过程中当一次性消去若干行(14行)后,根据行数得到相应的分数,并在记分牌上增加显示,并在提示框中显示“Good!”之类的词。2.2.10 消行当方块下降停止后判断该行以下4行是否有满行,有则消去,没有则继续下一个方块。2.2.11 控制方块移动、变形在方块下降的过程中通过按键控制方块的移动和变形,具体如下:a) 按一下左右方向键,先判断移动后的位置是否可以放置方块,若可以则方块向左右移动一格,若不可以则不改变状态,继续下降;b) 按一下向上键,方块变形;c) 按一下向下键,速度变为最大,时钟计时时间到时恢复速度到按键前,等待下一个按键事件;2.2.12 刷新屏幕对游戏池中标记为存在方块的位置绘制小方块,并重绘游戏池边框。3 功能模块设计3.1 系统初始化功能模块3.1.1 界面设计游戏界面力求界面友好、色彩丰富、布局合理、显示清晰易懂,要有必要的提示,方便玩家轻松入门掌握。函数模块:/*初始化游戏界面、记分牌、级别、速度等信息*/void init(void)/*绘制设计好的界面(点、线、圆、矩形等)*/*显示记分牌、级别、速度等数值和必要的提示*/3.1.2 设定游戏级别和速度初始化界面后,等待玩家设定游戏级别level和速度speed。程序流程图:函数模块:/*游戏开始前设定游戏的级别和速度*/void adjustment(void)/*打印提示信息*/while(1)if(TimerCounter8)/*用下划线闪烁提示玩家正处于修改状态的是级别还是速度*/if(bioskey(1)key=bioskey(0);/*等待接收键盘信息,根据收到的信息作出相应的处理*/*保存设定的级别和速度值,消去下划线和提示语*/3.1.3 初始化游戏池根据游戏级别初始化游戏池。函数模块:/*根据设定的级别(0)随机放置小方块*/void level_change(void)/*在行内随机产生的位置上绘制小方块*/3.2 对俄罗斯方块操作功能模块3.2.1 绘制小方块函数模块:/*在给定的位置(x,y)上绘制一个外方内圆的小方块*/void draw_little_block(int x, int y)/*增加边界判断,在游戏池内则绘制,否则不做*/3.2.2 绘制俄罗斯方块函数模块:定义俄罗斯方块的结构体数组:struct shapeint xy8,next;/*x1,y1,x2,y2,x3,y3,x4,y4 指四个小方块的相对坐标,next指此方块变形后应变为哪个小方块 x1,y1,x2,y2,x3,y3,x4,y4,next*/struct shape shapes19=0,-2,0,-1,0,0,1,0,1,-1,0,0,0,1,-1,1,0,2,0,-2,1,-2,1,-1,1,0,3,-1,-1,-1,0,0,-1,1,-1,0,0,-2,0,-1,0,0,1,-2,5,-1,-1,0,-1,1,-1,1,0,6,0,0,1,-2,1,-1,1,0,7,-1,-1,-1,0,0,0,1,0,4,-1,0,0,-1,0,0,1,0,9,0,-2,0,-1,0,0,1,-1,10,-1,-1,0,-1,1,-1,0,0,11,0,-1,1,-2,1,-1,1,0,8,-1,0,0,-1,0,0,1,-1,13,0,-2,0,-1,1,-1,1,0,12,-1,-1,0,-1,0,0,1,0,15,0,-1,0,0,1,-2,1,-1,14,0,-3,0,-2,0,-1,0,0,17,-1,0,0,0,1,0,2,0,16,0,-1,0,0,1,-1,1,0,18;/*根据所给俄罗斯方块类型(数组下标)在结构体数组中找到对应的俄罗斯方块,用它的4个小方块坐标绘制出俄罗斯方块*/void draw_block(int x,int y,int style,int way) /*此x,y为虚拟坐标,style为19中形式中的一种:018中的一个;x,y为10*20的方格的坐标,下标从1开始;way为1表填充,为0表清除*/3.2.3 检测俄罗斯方块/*此处检查在(x,y)处放置一方块是否可以,若是,则返回1,否则返回0*/int check_block(int x,int y,int style)/*将该方块的四个小方块的坐标与所处游戏池中的位置进行比较,判断是否可以将该方块移至此处*/3.2.4 标记俄罗斯方块/*当一方块停止时,将该方块在游戏池中的所占位置标记为1*/void fill_board(int x,int y, int style)/*对style类型的方块在游戏池中所给(x,y)起始的四个点标记为1,表示该四个位置已经被占用*/3.3 控制功能模块3.3.1 控制方块移动、变形int change(int i,int j,int key)/*根据所获得的按键信息作出相应的处理*/*按键类型为上下左右键、ENTER键、ESC键,其中ENTER键起到暂停的作用*/3.3.2 修改速度、得分void speed_chan

温馨提示

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

评论

0/150

提交评论