1405012曾浩然俄罗斯方块课程设计文档格式.docx
- 文档编号:17397585
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:22
- 大小:165.41KB
1405012曾浩然俄罗斯方块课程设计文档格式.docx
《1405012曾浩然俄罗斯方块课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《1405012曾浩然俄罗斯方块课程设计文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
俄罗斯方块数组数据结构算法
序言
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾造成的轰动与造成的经济价值可言说是游戏史上的一件大事。
这款游戏最初是由苏联的游戏制作人AlexPajitnov制作的,它看似简单但却变化无穷,令人上瘾。
相信大多数用户都还记得为它痴迷得茶饭不思不想的那个俄罗斯方块时代。
俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。
现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。
对于一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,俄罗斯方块游戏现在基本上是每个手机必备的游戏,种类千变万化,多种多样俄罗斯方块是个老幼皆宜的小游戏,是经久不衰的一款游戏,自从它诞生那天起就一直深受人们的喜爱。
几乎每个人都玩过这个游戏,也是人们接触最多的一款游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停得产生,用户根据键盘的四个方向翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键实现)。
然后程序根据这七种方块堆叠成各种不停得模型,可以吸引更多的小玩家,让人觉得更加的有趣,使人的视觉得到冲击,更加的轻松.
人员分工安排
(1)小组负责人:
曾浩然
分工:
调试与检查
(2)小组成员1:
曾浩然
界面设计
(3)小组成员2:
曾浩然
方块的设计与变形
1、需求分析
1.1游戏方块需求
随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关.
1.2游戏控制的需求
游戏控制分为多个方面,包括画面绘制,控制命令的获取,控制命令的分配、控制命令的处理,方块的绘制,方块的移动,方块的旋转,方块下落和消层以及计分等。
2、设计思路
方块要实现变形,要能通过键盘接收变形指令(即上键),将所得信号传递给信号接收函数,再通过信号处理函数改变当前方块的ID值,最后根据新的ID值画出新的图形,此时即实在了方块的变形。
2.1方块:
每个方块都要记录自己的ID、形状。
形状采用4对整数坐标来表示,分别记录其4个小方块的相对位置(以方块内或旁边任一点为中心,称为参考点)。
建议可以在方块类中定义一个或多个数组,将每种ID的方块的形状数据存储好(都是一些固定的数据),这样产生一个方块时只需要提供其ID即可。
为了处理方块的旋转,我们不能只记录上述。
7种方块,而应该把它们旋转后产生的每种形状都认为是一种不同的方块(因为它们的4对坐标都不同),然后在方块ID之间建立映射关系,即哪种ID的方块旋转后变成哪种ID的方块,只要求处理一个方向的旋转。
这个映射关系也可以用c数组来实现。
此外,方块还要记录自己的参考点在指定的游戏区域中的位置。
2.2主要操作:
填充:
把自己填充到指定的游戏区域中。
返回填充成功或失败的信息。
清除:
把自己从指定的游戏区域中清除。
移动:
在指定的游戏区域中移动,包括向左、右、下移动,以1个单元格为单位。
如果可以移动,则修改参考点的位置,并在指定的游戏区域中重新填充自己(先清除、然后修改参考点位置,再填充)。
返回是否移动成功的信息。
旋转:
在指定的游戏区域中旋转一次,此时参考点位置不变,但要改变自己的ID,然后在指定的游戏区域中重新填充自己(先清除、然后修改参考点位置,再填充)。
资数
源据
消息控制信息
显数
示据
3-1设计思路图
3、详细设计
3.1设计流程图
否
是
3-1设计流程图
3.2函数功能图
3-2函数功能图
4、运行调试与分析讨论
4.1游戏界面
图4-1游戏开始界面
图4-2游戏运行界面
图4-3游戏结束界面
5、设计体会与小结
本次课程设计,用c语言实现了一个简易的俄罗斯方块游戏。
了解了c语言的强大特性,游戏是在速度上的高效性,是其他编程语言无法企及的。
需求分析,概要设计,详细设计在编程中的重要性是不言而喻的。
正确、高效的分析、设计为后面的编程打下了坚实的基础,后面的工作就顺利成章了。
当然,在需求分析、概要设计、详细设计阶段是需要通过不断的讨论、论证来对项目进行更改的代码实现阶段就是软件的具体实现,通过编码来实现需求中的功能。
在代码实现阶段可能会遇到各种问题,此时有可能就要对需求设计乃至需求分析进行更改。
测试阶段同样重要。
在本次软件设计中,在测试阶段就发现了游戏测试错误问题。
后来想到了通过修改程序
for(j=0;
j<
3;
j++)
{
if(l[i][j]==1)
{
gotoxy(x+j,y+i);
printf("
%c"
TUAN);
}
else
continue;
}
}
}
void_L(intx,inty)//摸去该方块
{
inti,j;
for(i=0;
i<
i++)
{
"
);
{
if(l[i][j]==1)
{
if(biaoji[y+i+1][x+j]==1)
d=1;
}
}
}
if(y+c+1==Ymap||d==1)
{
L(x,y);
break;
y++;
L(x,y);
break;
Sleep(25);
_L(x,y);
if(y+c+1==Ymap||d==1)
y--;
}
biaoji[y+i][x+j]=1;
voidI_move()//同L_move
intx=Xmap/2-1;
inty=0;
inta,b;
intc,d,e,f;
c=0;
d=0;
e=0;
y++;
O(x,y);
Sleep(times);
for(i=0;
2;
for(j=0;
if(o[i][j]==1)
c=i;
if(j>
=e)
e=j;
if(biaoji[y+i+1][x+j]==1)
d=1;
if(y+c+1==Ymap||d==1)
break;
_O(x,y);
while(_kbhit()==1)
f=0;
key=keydown();
switch(key)
caseLEFT:
for(i=0;
for(j=0;
if(o[i][j]==1)
if(biaoji[y+i][x+j-1]==1)
f=1;
if(x-1==0||f==1)
O(x,y);
x--;
O(x,y);
caseRIGHT:
if(biaoji[y+i][x+j+1]==1)
if(x+e+1==Xmap||f==1)
x++;
caseDOWN:
_O(x,y);
if(o[i][j]==1)
voidZ_move()//同L_move
Z(x,y);
Sleep(500);
_Z(x,y);
while
(1)
Z(x,y);
if(z[i][j]==1)
_Z(x,y);
if(z[i][j]==1)
Z(x,y);
//此函数操作游戏进程。
voidyouxiguocheng()
intj;
intqueue[2]={0,0};
Wall();
queue[0]=rand()%5+1;
=Xmap;
if(biaoji[1][j]==1)
if(biaoji[1][j]==1)
queue[1]=rand()%5+1;
switch(queue[1])
case1:
L(Xmap+4,Ymap/4+5);
case2:
I(Xmap+4,Ymap/4+5);
case3:
O(Xmap+4,Ymap/4+5);
case4:
Z(Xmap+4,Ymap/4+5);
case5:
T(Xmap+4,Ymap/4+5);
switch(queue[0])
L_move();
xiaochu();
I_move();
O_move();
Z_move();
T_move();
queue[0]=queue[1];
_L(Xmap+4,Ymap/4+5);
_I(Xmap+4,Ymap/4+5);
_O(Xmap+4,Ymap/4+5);
_Z(Xmap+4,Ymap/4+5);
_T(Xmap+4,Ymap/4+5);
//此函数用于操作初始化界面。
voidchushihua()
inti;
gotoxy(5,1);
70;
printf("
="
gotoxy(5,2);
*"
gotoxy(31,4);
printf("
欢~迎~来~到~"
gotoxy(30,5);
《俄罗斯方块》"
gotoxy(5,7);
gotoxy(5,8);
gotoxy(4,10);
按任Enter键开始游戏。
\n\n↑变换,↓加速下移,←左移,→右移。
"
gotoxy(45,23);
----七组:
姜志康、王世超、李向伟"
getchar();
system("
CLS"
//此函数用于操作结束界面。
voidgameover()
#################"
gotoxy(30,6);
####"
gotoxy(30,7);
##GAMEOVER##"
gotoxy(30,8);
gotoxy(30,9);
gotoxy(30,11);
您的得分为:
%d"
chenji);
gotoxy(30,13);
欢迎下次再来~~~"
gotoxy(30,15);
请按Enter键退出!
intmain()
HideCursor();
srand((int)time(NULL));
chushihua();
youxiguocheng();
gameover();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1405012 浩然 俄罗斯方块 课程设计