您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 俄罗斯方块C++课程设计报告
v1.0可编辑可修改00课程设计报告题目:基于C++俄罗斯方块学院:专业:学号:姓名:二○一三年十二月v1.0可编辑可修改11经典小游戏设计-俄罗斯方块一、需求分析。、游戏需求随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,若在游戏中各形状填满了给定区域,为输者,弹出相应提示。、游戏界面需求良好的用户界面,有关信息显示(如操作方法、等级等)。让方块在一定的区域内运动和变形,该区域用一种颜色表明,即用一种颜色作为背景,本游戏的背景设为黑色。还需用另一种颜色把黑色围起来,宽度适中,要实现美感。而不同的方块用不同的着色表示,使游戏界面更加清晰、有条理。消层时采用一定的时间延迟,增加视觉消行的感官效果。、游戏方块需求良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、L字形、反L形、T字型)以及另外本程序另外加入的点形方块,各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。为体现游戏的趣味性和扩展性,本游戏象征性的增加了点形方块,其他更多形状的方块可用类似方法增加。、游戏控制的需求游戏控分为多个方面,包括画面绘制,控制命令的获取,控制命令的分配、控制命令的处理,方块的绘制,方块的移动,方块的旋转,方块下落和消层以及计分等。对各个命令的合理处理和综合控制十分重要,一旦出错可能导致整个程序的崩溃,因此需要小心设计。v1.0可编辑可修改22二、系统设计。、程序流程图:、游戏设计概述从整体上而言,在该游戏可设计一个方块类,其中包括对方块的信息描述(如:ID)、方块的操作(如:旋转、下沉)。再设计一个控制类,实现各种控制(如:获取控制信号,分发控制信号)。另定义一个游戏区类,用以处理游戏区绘制等内容。框图如下:方块类(GAME_BLOCK)游戏区类(Window)BLOCKINFOg_CurBlock;Private:无v1.0可编辑可修改33Private:(新方块)BLOCKINFOg_NextBlock;(下一方块)Public:VoidInitWindow()Public:GAME_BLOCK(){}~GAME_BLOCK(){}voidNewBlock();v1.0可编辑可修改44ir[];while((c&0xF)==0){;c=4;}ir[];intx,y;for(inti=0;i16;i++,b=1)if(b&0x8000){x=+i%4;v1.0可编辑可修改55y=-i/4;if(yHEIGHT)DrawUnit(x,y,g_Blocks[].color,_draw);}}ir[];intx,y;for(inti=0;i16;i++,b=1)if(b&0x8000){x=+i%4;y=-i/4;if((x0)||(x=WIDTH)||(y0))returnfalse;if((yHEIGHT)&&(g_World[x][y]))returnfalse;}returntrue;}ir[];for(i=0;i16;i++,b=1)if(b&0x8000){if-i/4=HEIGHT){//如果方块的固定位置超出高度,结束游戏GameOver();v1.0可编辑可修改66return;}elseg_World[+i%4][-i/4]=1;}//检查是否需要消掉行,并标记BYTEremove=0;//低4位用来标记方块涉及的4行是否有消除行为for(y=;y=max-3,0);y--){i=0;for(x=0;xWIDTH;x++)if(g_World[x][y]==1)i++;if(i==WIDTH){remove|=(1-y));setfillcolor(LIGHTGREEN);setlinecolor(LIGHTGREEN);setfillstyle(BS_HATCHED,HS_DIAGCROSS);fillrectangle(0,(HEIGHT-y-1)*UNIT+UNIT/2-5,WIDTH*UNIT-1,(HEIGHT-y-1)*UNIT+UNIT/2+5);setfillstyle(BS_SOLID);}}if(remove)//如果产生整行消除{v1.0可编辑可修改77//延时300毫秒Sleep(300);//擦掉刚才标记的行IMAGEimg;for(i=0;i4;i++,remove=1){if(remove&1){for(y=-i+1;yHEIGHT;y++)for(x=0;xWIDTH;x++){g_World[x][y-1]=g_World[x][y];g_World[x][y]=0;}getimage(&img,0,0,WIDTH*UNIT,(HEIGHT--i+1))*UNIT);putimage(0,UNIT,&img);score++;outtextxy(50,150,_T(score));}}}//产生新方块NewBlock();}四、测试结果。v1.0可编辑可修改88程序完成后运行如下,达到预期结果,运行效果良好。成功地完成了方块的显示、旋转、消行功能,游戏可玩性强,且具有封装性、通用性、容错性。五、实验总结。本次C++课程设计前期准备阶段,设想一些构想和主要任务;后期则是具体功能的实现。这次设计中我遇到了不少困难,本来设想实现双人版对战,美化界面和增加背景音乐等功能,可是由于时间的短促,最终没能实现,心里不免有些遗憾,在实现类的封装和类的继承和多态性时,也遇到了不少问题,通过大家的一起探讨和分析,问题最终一个个迎刃而解,系统开发基本完毕。通过这次课程设计,使我懂得了不少东西。我们在日常的学习中应该注意对所学知识的实践运用,在学习时,应该深入的了解,体会知识,这对我们今后的学习和工作会有很大的帮助。通过此次的实践,我体会到学以致用的乐趣,收获了很多。
本文标题:俄罗斯方块C++课程设计报告
链接地址:https://www.777doc.com/doc-6526244 .html