版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、双人版俄罗斯方块实验报告北京邮电大学信息与通信工程学院程序设计实践设计报告课题名称 : 双人版俄罗斯方块 学生姓名: 王子轩 班 级: 2014211118 班内序 号 : 02 学 号: 2014210504 日 期: 6/30第1页北京邮电大学信息与通信工程学院1( 课题概述1.1 课题目标和主要内容本课题在控制台下设计并实现一个俄罗斯方块的游戏。这是一款桌面游戏,最 终要写成一个双人模式和选择难度的俄罗斯方块游戏,涉及到了控制台图形界面和 多线程编程。对于每个俄罗斯方块模块来说,中间是工作区,右边是记录当前游戏 的级别和分数。游戏开始后,自动播放背景音乐,通过键盘的W、S、A、D 和上、
2、下、左、右来控制方块的旋转、下移、左移、右移,ESC键退出。本课题的开发环境为 Visual Studio 2012 集成开发环境,工程类型为 Win32 Console Application 。1.2 系统的主要功能基本功能 : 双人版俄罗斯方块扩展功能 : 背景音乐、游戏分级、存储显示最高分2. 系统设计2.1 系统总体框架开始界面 ?打开背景音乐 ?显示两个游戏界面 ?初始化各项数值 ( 分数和等 级)? 两位玩家操作游戏 ?一个玩家失败时游戏结束2.2 系统详细设计1 模块划分图及描述1. void Init(int, int mapMAPHMAPW);初始化给定的工作区并调用 sh
3、ow函数。 2. void Turn(int mapMAPHMAPW, int a4, int w, int h, int *x, int y);实现方块的旋转。3. bool IsAvailable(int mapMAPHMAPW, int a, int x, int y, int w, int h);判断方块在工作区的下一个位置上是否存在其他方块,若不存在则返回TRUE,否则返回 FALSE。4. void DrawBlocks(int a, int w, int h, int x, int y, WORD wColors, int nColors,int dx, int dy);显示方块
4、和边界。5. void ClearSquare(int a, int w, int h, int x, int y, int dx, int dy); 实现擦第2页北京邮电大学信息与通信工程学院 除方块的功能。6. void GameOver(); 实现游戏结束界面的相关功能。实现方块7. void DeleteLine(int mMAPW, int row, int dx, int dy);满一行后消除一行的效果。8. int main() 主函数,启动整个程序。9. DWORD WINAPI WriteThread(LPVOID IpParam)线程 1,用于显示玩家 1 的界 面,处理玩
5、家1 的游戏进程,包括方块下落、变换、消行、更新分数、技能效果等。包括 处理玩家二的键盘输入信息。10. DWORD WINAPI WriteThread1(LPVOID lpParam)线程 2,用于显示玩家 2 的 界面,处理玩家 2 的游戏进程,包括方块下落、变换、消行、更新分数、技能效果等。包 括处理玩家二的键盘输入信息。2 类关系图及描述3 程序流程图及描述第3页北京邮电大学信息与通信工程学院第4页北京邮电大学信息与通信工程学院龜'M-.U*"rth FCEW; 'I 1第5页北京邮电大学信息与通信工程学院2.3关键算法分析第6页北京邮电大学信息与通信工程学
6、院算法 1:bool IsAvailable1 算法功能判断方块是否可以移动2 算法基本思想TRUE判断方块在工作区的下一个位置上是否存在其他方块,若不存在则返回否则返回FALSE3 算法空间、时间复杂度分析4 代码逻辑 (可用伪代码描述 )bool IsAvailable(int a,int x,int y,int w,int h)for(int i=y;i<y+h;i+)for(int j=x;j<x+w;j+)if(mapij && aw*(i-y)+j-x)return 0;return 1;算法 2: void DrawBlocks1 算法功能显示边界和方
7、块2 算法基本思想遍历数组的每一个元素,若元素值不是 0,则显示一个基本方块,否则不显 示,同时根据计算出来的 temp 值决定显示方块还是边界。3 算法空间、时间复杂度分析4 代码逻辑 (可用伪代码描述 )void DrawBlocks(int a,int w,int h,int x,int y,WORD wColors,intnColors)int temp;for(int i=0;i<h;i+)第7页北京邮电大学信息与通信工程学院for(int j=0;j<w;j+)if(temp=ai*w+j)&&y+i>0)if(temp=-3) textout(h
8、andle,2*(x+j)+dx,y+i+dy,wColors,nColors,"?");else if(temp=-2) textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"?");else if(temp=-1) textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"?");else if(temp>=1) textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"?")
9、;算法 3: void Turn1 算法功能旋转方块2 算法基本思想按行从下向上,按列从左往右扫描,如果是有效点则进行 90 度翻转,即行列 对调3 算法空间、时间复杂度分析4 代码逻辑 (可用伪代码描述 )void Turn(int a4,int w,int h,int *x,int y) int b44=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;int sign=0,line=0;for(int i=h-1;i>=0;i-)for(int j=0;j<w;j+)if(aij)第8页北京邮电大学信息与通信工程学院 bjline=aij;sign=1;if(s
10、ign)line+;sign=0;for(int i=0;i<4;i+)if(IsAvailable(b0,*x-i,y,w,h)*x-=i;for(int k=0;k<h;k+)for(int j=0;j<w;j+)akj=bkj;break;算法 4: void ClearSquare1 算法功能擦除方块2 算法基本思想与 Drawblocks 类似,只不过不显示方块而是显示空格。3 算法空间、时间复杂度分析4 代码逻辑 ( 可用伪代码描述 ) void ClearSquare(int *a,int w,int h,int x,int y)第9页北京邮电大学信息与通信工程
11、学院WORD wColors1=0;for(int i=0;i<h;i+)for(int j=0;j<w;j+)if(ai*w+j>0 && (i+y>0)textout(handle,2*(x+j)+dx,y+i+dy,wColors,1," ");算法 5: void DeleteLine1 算法功能消除一行2 算法基本思想按行扫描,利用 clearsquare 实现擦除3 算法空间、时间复杂度分析4 代码逻辑 (可用伪代码描述 )void DeleteLine(int mMAPW,int row) WORD wColors1=F
12、OREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY; textout(handle,2+dx,row+dy,wColors,1,","); _sleep(100);for(int i=row;i>1;i-)ClearSquare(&mi1,MAPW-2,1,1,i);for(int j=1;j<MAPW-1;j+)第 10 页北京邮电大学信息与通信工程学院mij=mi-1j;if (mij = 0)wColors0 = 0;elsewColors0 = SQUARE_COLORmij-1;DrawBlo
13、cks(&mij,1,1,j,i,wColors,1);for(int i=1;i<MAPW-1;i+)m1i=0;算法 6: void GameOver1 算法功能实现结束界面2 算法基本思想利用记录分数的变量 score1 和 score2 来打印比分和比赛结果。3 算法空间、时间复杂度分析4 代码逻辑 (可用伪代码描述 )void GameOver()WORD wColors1=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY;textout(handle,7+dx,10+dy,wColors,1,"GAM
14、E OVER"); exit(EXIT_SUCCESS);3. 程序运行结果分析 包括输入数据来源和格式、输出显示方式、主要界面、操作流程、响应时间, 运行效果等。第 11 页北京邮电大学信息与通信工程学院第12页北京邮电大学信息与通信工程学院4总结4.1课题的难点和关键点在写本程序的过程中,出现了许多问题,如方块位置不对,方块冲突,方块卡 住不动,线程没有反应等等,在调试时使用了逐过程调试的方法,一一解决了这些 问题。同时,为了实现资源最大利用,调试方法、程序优化和改进等方面也需要去 考虑。4.2本课题的评价本课题实现了简单的俄罗斯方块游戏,能够实现不同颜色、不同形状的方块, 加强了游戏性,游戏流畅,且基本没有 bug。但是我的文件只能实现背景音乐和游 戏选级两个附加功能,以后有时间会继续完善。4.3心得体会通过本次实验我学习了在 Win32控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年顺德职业技术学院单招职业适应性考试题库及参考答案详解
- 2025年广州市白云区中小学校校园“优才备考题库”招聘140人(上海考点)有答案详解
- 2026黑龙江双鸭山市友谊县招聘公益性岗位人员20人考试备考题库及答案解析
- 2026年青海建筑职业技术学院单招综合素质考试题库含答案详解(夺分金卷)
- 2026年青岛求实职业技术学院单招职业倾向性考试题库附答案详解(满分必刷)
- 2026年青海柴达木职业技术学院单招职业技能测试题库含答案详解(突破训练)
- 2026年阿勒泰职业技术学院单招综合素质考试题库附参考答案详解(黄金题型)
- 2025年九江市融资担保集团有限公司招聘备考题库(含答案详解)
- 2026年长治职业技术学院单招职业适应性测试题库附答案详解(综合题)
- 中翼航空投资有限公司(北京航食)2026届高校毕业生校园招聘10人备考题库及参考答案详解
- (正式版)SHT 3115-2024 石油化工管式炉轻质浇注料衬里工程技术规范
- 5年级多届YMO数学初选试卷汇编
- 水泥混凝土路面修复施工方案
- 智慧物流实训-全套课件
- 《心流 发现心流 套装全2册 》读书笔记思维导图PPT模板下载
- 苏少版五年级美术下册全册教案
- GB/T 4604.1-2012滚动轴承游隙第1部分:向心轴承的径向游隙
- 外科学-第六十二章-脊柱、脊髓损伤课件
- 南信大第二章-土壤农化分析实验室基本知识课件
- 健康主题班会 《预防疾病 享受生活》教学课件
- 分析化学(第6版)全套课件完整版电子教案最新板
评论
0/150
提交评论