![俄罗斯方块实习报告_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/38250e86-f1a7-4d43-ab5c-29f0fdc7d670/38250e86-f1a7-4d43-ab5c-29f0fdc7d6701.gif)
![俄罗斯方块实习报告_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/38250e86-f1a7-4d43-ab5c-29f0fdc7d670/38250e86-f1a7-4d43-ab5c-29f0fdc7d6702.gif)
![俄罗斯方块实习报告_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/38250e86-f1a7-4d43-ab5c-29f0fdc7d670/38250e86-f1a7-4d43-ab5c-29f0fdc7d6703.gif)
![俄罗斯方块实习报告_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/38250e86-f1a7-4d43-ab5c-29f0fdc7d670/38250e86-f1a7-4d43-ab5c-29f0fdc7d6704.gif)
![俄罗斯方块实习报告_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/38250e86-f1a7-4d43-ab5c-29f0fdc7d670/38250e86-f1a7-4d43-ab5c-29f0fdc7d6705.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机实习报告 姓名:刘天班级: 2010211114学号: 10210417小班序号:14指导老师:丘广晖题目:俄罗斯方块 俄罗斯方块实验报告一功能说明1.1总体功能说明 本程序主要是用VC6.0编程软件通过Windows控制台,实现俄罗斯方块这一游戏。本程序实现了俄罗斯方块的随机产生及移动等,玩家在进入游戏界面后,可以通过键盘操作这个游戏。在游戏界面右边,写有玩家分数和一定的操作说明,同时内部也有暂停和退出的设置,在玩家疲惫时,可随时停止游戏。1.2用户界面(1)欢迎界面(2)游戏界面(3)结束界面1.3使用方法 玩家可通过键盘的W、S、A、D键分别控制方块的上下左右,暂停键是E,之后可按
2、任意键继续游戏,退出键则是Q。边框右侧有下一个方块的预告。二程序设计说明2.1 总体设计框架C+程序执行流程(总流程图):开 始 定义一些变量,并将部分变量初始化定义界面函数,旋转函数,移动函数等进入欢迎界面NO按下任意键进入游戏?YES 进入游戏界面停留在游戏界面按下暂停按钮?YESNO 按下退出按钮?结束画面YES2.2 关键算法描述bool table1523=0; 绘制操作面板;bool menu(); 设定游戏的初始界面(欢迎界面);void spin(); 决定方块的旋转;TurnLeft()、TurnRight()、TurnDown()则是俄罗斯方块移动方向的判定; typene
3、xt=rand()%7; 随机数的产生,决定了方块的形状; while(1); 循环的开始;if(kbhit(); 上下左右控制的判定;2.3 程序设计的难点和关键点一、怎样设置方块的状态,变化等;二、怎样使将要产生的方块与预示方块相同;三、方块下落时如何判定下方已存在方块,从而使这个方块不在下落;四、消行的实现。2.4 调试的方法调试中多采用断点调试单步执行的方法来查看和改正错误。2.5 程序性能评价优点:1、 游戏运行流畅,整体较为稳定,不会因为玩家的误操作而出现停滞;2、 游戏说明简单明确,上手容易;3、 采用模块化编程,多个文件组成整个工程;4、 编码中的变量、函数等名称合理而清楚,一
4、目了然;不足:1、 某些细节上还不够精致,可能还存在bug;2、 视觉效果一般。3、 程序代码的格式还不够工整,有待提高。4、 没有多种界面风格,没有等级系统,不够人性化。三心得体会从一开始的手无足措到一步步的攻克困难,从一开始的茫然停滞到如今的清晰明朗,小学期在时间不知不觉的流逝中,就这样结束了。俄罗斯方块从可以随机出现,到可以自动下落,从左右移动,到可以自动旋转,消行,加分 看着一个个下落的方块,兴奋的心情真的难以用语言描述。回忆着小学期的一幕幕,我慢慢的对编程产生了强烈的兴趣,同时,也有了把它做好的信心和决心。我相信,我可以越做越好。附代码:#include"colorCons
5、ole.h"#include <time.h>#include <stdlib.h>#include<windows.h>#include<conio.h>HANDLE handle;WORD wColors2;int x1=1,x2=1,x3=1,x4=1;/int y1=1,y2=1,y3=1,y4=1;/方块坐标int type,typenext,typetemp=0;/目前方块和下一个方块的产生int score=0,speed=10,times=0,level=0;/得分和速度等int key;/按键char scorech1
6、0=0;bool flag=1;/生成新方块判定bool start=1;bool table1523=0; /绘制操作面板bool menu() /游戏的初始界面 (欢迎界面)for(int o=1;o<22;o+)textout(handle,2,o,wColors,1," ");for(int i=21;i>0;i-)for(int j=1;j<14;j+)tableij=0;wColors0=FOREGROUND_BLUE|FOREGROUND_GREEN;textout(handle,6,5,wColors,1,"欢迎进入")
7、;textout(handle,10,6,wColors,1,"俄罗斯方块");textout(handle,6,10,wColors,1,"请按任意键进入游戏");while(start)if(kbhit()start=0; textout(handle,6,5,wColors,1," ");textout(handle,10,6,wColors,1," ");textout(handle,6,10,wColors,1," "); return 0;void erase()/清除textout
8、(handle,x1*2,y1,wColors,1," ");textout(handle,x2*2,y2,wColors,1," ");textout(handle,x3*2,y3,wColors,1," ");textout(handle,x4*2,y4,wColors,1," ");void rewrite()/出现textout(handle,x1*2,y1,wColors,1,"");textout(handle,x2*2,y2,wColors,1,"");text
9、out(handle,x3*2,y3,wColors,1,"");textout(handle,x4*2,y4,wColors,1,"");void spin()/旋转switch(type)case 0:if(typetemp=0)if(tabley2+1x2|tabley2+2x2|tabley2+3x2)=0)x1=x2;x3=x2;x4=x2;y1=y2+1;y3=y2+2;y4=y2+3;typetemp=(typetemp+1)%2;elseif(tabley2x2-1|tabley2x2+1|tabley2x2+2)=0)y1=y2;y3=
10、y2;y4=y2;x1=x2-1;x3=x2+1;x4=x2+2;typetemp=(typetemp+1)%2;break;case 1:break;case 2:switch(typetemp)case 0:if(tabley4x1|tabley4+1x4)=0)y1+;x3=x4;y3=y4+1;typetemp=(typetemp+1)%4;break;case 1:if(tabley4x4+1)=0)y3=y4;x3=x4+1;typetemp=(typetemp+1)%4;break;case 2:if(tabley4+1x4)=0)x1=x4;y1=y4+1;typetemp=(
11、typetemp+1)%4;break;case 3:if(tabley2x2-1|tabley2x2+1)=0)y1=y2;y3=y2;x1=x2-1;x3=x2+1;typetemp=(typetemp+1)%4;break;break;case 3:switch(typetemp)case 0:if(tabley2+1x2|tabley2+2x2)=0)x3=x2;y3=y2+1;x4=x2;y4=y2+2;typetemp=(typetemp+1)%4;break;case 1:if(tabley3x3-1|tabley3x3+1|tabley3-1x3+1)=0)x4=x3-1;y4
12、=y3;x1=x3+1;y1=y3;x2=x3+1;y2=y3-1;typetemp=(typetemp+1)%4;break;case 2:if(tabley4-1x4|tabley4+1x4|tabley4+1x4+1)=0)x1=x4;y1=y4-1;x2=x4;y2=y4+1;x3=x4+1;y3=y4+1;typetemp=(typetemp+1)%4;break;case 3:if(tabley1x1+1|tabley1x1+2)=0)x2=x1+1;y2=y1;x3=x1+2;y3=y1;typetemp=(typetemp+1)%4;break;break;case 4:swi
13、tch(typetemp)case 0:if(tabley4+1x4|tabley4+1x4-1)=0)x2=x4;y2=y4+1;x1=x4-1;y1=y4+1;typetemp=(typetemp+1)%4;break;case 1:if(tabley4x4-1|tabley4x4-2|tabley4-1x4-2)=0)y3=y4;x3=x4-1;y2=y4;x2=x4-2;y1=y4-1;x1=x4-2;typetemp=(typetemp+1)%4;break;case 2:if(tabley1x1+1|tabley2+1x2)=0)y2=y1;x2=x1+1;y3=y1+1;x3=x
14、1;y4=y1+2;x4=x1;typetemp=(typetemp+1)%4;break;case 3:if(tabley2x2+1|tabley2+1x2+1)=0)y3=y2;x3=x2+1;y4=y2+1;x4=x2+1;typetemp=(typetemp+1)%4;break;break;case 5:if(typetemp=0)if(tabley3x3-1|tabley3+1x3-1)=0)x1=x3-1;y1=y3;x4=x3-1;y4=y3+1;typetemp=(typetemp+1)%2;elseif(tabley2x2-1|tabley3x3+1)=0)x1=x2-1;
15、y1=y2;x4=x3+1;y4=y3;typetemp=(typetemp+1)%2;break;case 6:if(typetemp=0)if(tabley4x4+1|tabley4+1x4+1)=0)x2=x4+1;y2=y4;x3=x4+1;y3=y4+1;typetemp=(typetemp+1)%2;elseif(tabley4x4-1|tabley1x1+1)=0)x2=x1+1;y2=y1;x3=x4-1;y3=y4;typetemp=(typetemp+1)%2;break; bool TurnLeft()/左移判定if(tabley1x1-1|tabley2x2-1|tab
16、ley3x3-1|tabley4x4-1)=0) return(true);else return(false);bool TurnRight()/右移判定if(tabley1x1+1|tabley2x2+1|tabley3x3+1|tabley4x4+1)=0)return 1;else return 0;bool TurnDown()/下移判定if(tabley1+1x1|tabley2+1x2|tabley3+1x3|tabley4+1x4)=0)return 1;else return 0;/int main()handle=initiate();wColors0=FOREGROUND
17、_RED|FOREGROUND_BLUE|FOREGROUND_GREEN; wColors1=FOREGROUND_RED; textout(handle,36,15,wColors,1,"操作说明:");textout(handle,36,16,wColors,1,"左: A");textout(handle,36,17,wColors,1,"右: D");textout(handle,36,18,wColors,1,"加速下落:S");textout(handle,36,19,wColors,1,"
18、翻转: W");textout(handle,36,20,wColors,1,"暂停: E");textout(handle,36,21,wColors,1,"退出: Q");textout(handle,36,4,wColors,1,"当前分数:");textout(handle,36,8,wColors,1,"下一块:");srand(time(NULL);textout(handle,0,0,wColors+1,1,"");textout(handle,0,22,wColors+
19、1,1,"");for(int k=1;k<22;k+)textout(handle,0,k,wColors+1,1,"|");textout(handle,28,k,wColors+1,1,"|");wColors0=FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED;for(int m=1;m<23;m+)/table初始化tablem0=1;tablem14=1;for(int n=0;n<15;n+)table22n=1;if(menu()return 0;type
20、next=rand()%7; while(1) / 循环if(flag)/下一个方块flag=0;typetemp=0;type=typenext;switch(type) case 0:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=8;y4=1;break; case 1:x1=6;y1=1;x2=7;y2=1;x3=6;y3=2;x4=7;y4=2;break;case 2:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=6;y4=2;break;case 3:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=5;y4=2;break;
21、case 4:x1=5;y1=1;x2=6;y2=1;x3=7;y3=1;x4=7;y4=2;break;case 5:x1=5;y1=1;x2=6;y2=1;x3=6;y3=2;x4=7;y4=2;break;case 6:x1=6;y1=1;x2=7;y2=1;x3=5;y3=2;x4=6;y4=2;break;rewrite();typenext=rand()%7;switch(typenext)/下一块预览 case 0:textout(handle,36,10,wColors,1,"");textout(handle,36,11,wColors,1,"
22、");break;case 1:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 2:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 3:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wC
23、olors,1," ");break;case 4:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 5:textout(handle,36,10,wColors,1," ");textout(handle,36,11,wColors,1," ");break;case 6:textout(handle,36,10,wColors,1," ");textout(
24、handle,36,11,wColors,1," ");break;if(kbhit()/上下左右按键控制key=getch();switch(key) case 100:/右case 68: if(TurnRight() erase(); x1+;x2+;x3+;x4+;rewrite();break; case 97:/左 case 65:if(TurnLeft()erase();x1-;x2-;x3-;x4-;rewrite();break;case 115:/下 case 83:if(TurnDown() erase();y1+;y2+;y3+;y4+;rewrit
25、e();break; case 119:/上 case 87:erase();spin();rewrite();break; case 69:/暂停 case 101:wColors0=FOREGROUND_RED;textout(handle,0,23,wColors,1," 暂停中. 按任意键继续 ");key=getch();wColors0=FOREGROUND_BLUE|FOREGROUND_GREEN;textout(handle,0,23,wColors,1," ");break; case 113:/退出 case 81:return 0;Sleep(50);times=(times+1)%speed;if(times=0)/自动下移判定if(TurnDown()/下移erase(); y1+;y2+;y3+;y4+; rewrite();else /不下移itoa(score,scorech,10);textout(hand
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 助产师复习试题含答案
- 2025年度智能电网规划设计合同
- 医保协议合同范本
- 农村硅藻泥采购合同范本
- 仪器 借用合同范本
- cng缠绕气瓶合同范本
- 2024年半导体分立器件项目评估报告
- 北京办公装修合同范本
- 楼地面找平工程合同范本
- 会议室使用合同范本
- 杭州市淳安县国有企业招聘笔试真题2024
- 2024政府采购评审专家考试真题库及答案
- 2025年道路货运驾驶员从业资格证模拟考试题
- 数学-安徽省皖南八校2025届高三上学期12月第二次大联考试题和答案
- 退市新规解读-上海证券交易所、大同证券
- 融资报告范文模板
- 桃李面包盈利能力探析案例11000字
- GB/Z 30966.71-2024风能发电系统风力发电场监控系统通信第71部分:配置描述语言
- 脑梗死的护理查房
- 2025高考数学专项复习:概率与统计的综合应用(十八大题型)含答案
- 2024-2030年中国紫苏市场深度局势分析及未来5发展趋势报告
评论
0/150
提交评论