c语言数据结构程序设计俄罗斯方块.docx
- 文档编号:1386730
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:22
- 大小:26.63KB
c语言数据结构程序设计俄罗斯方块.docx
《c语言数据结构程序设计俄罗斯方块.docx》由会员分享,可在线阅读,更多相关《c语言数据结构程序设计俄罗斯方块.docx(22页珍藏版)》请在冰豆网上搜索。
c语言数据结构程序设计俄罗斯方块
课程名称《数据结构》课程设计
指导老师
所在学院
专业年级
提交日期
成绩
小组成员表
姓名
学号
承担任务
俄罗斯方块的基本算法实现
系统调试
游戏场景的规划与实现
游戏得分算法分析、游戏后期测试
开场动画
制作ppt
游戏结束条件判断
游戏得分算法分析、游戏后期测试
开场动画
制作ppt
课程设计实验
系别
班级
学号
姓名
实
验
题
目
俄罗斯方块小游戏
■设计性□综合性
自
我
评
价
在本次课程设计中,我负责编写游戏的界面和场景。
这是很重要的工作,直接关系到玩家的游戏体验和对游戏的评价。
所以我充分发挥想象力和创造力在场景位置安排上下了一番苦工,也和组内成员进行过多次的探讨,最终写出了一个具有美感的游戏场景,力求让用户在游戏中体验到给多的快感。
更重要的是在此次程序设计中与组员在游戏框架上的讨论中学到了很多新知识,对数据结构的理解也在实践中得到了提高。
教
师
评
语
能够实现实验要求的功能□全部□部分
算法有新意□有□一般
程序运行通过□全部□部分
算法注释说明□完善□仅有功能说明
接口参数说明□有□无
按期上交打印文档资料及源程序□所有□部分
综合设计说明报告结构□合理□不合理
用户使用说明□完整□不全
现场演示操作有准备□有□无
问题解答流畅□流畅□不流畅
独立完成实验□能□不能
体现团队合作精神。
□能够□不能
成绩
1、需求分析
我们对俄罗斯方块这个游戏一点也不陌生,知道游戏的玩法和实现后,我们很快就着手开干。
游戏要有出现场景、方块、消除方块得分、判断游戏结束等几个大功能。
结构清晰简洁便于分工。
二、算法原理介绍
游戏主要使用了数组这个数据结构。
不过与以往的程序不同,这个游戏有一个大数组包含很多个小数组,大数组不断的吸收小数组内的元素,达到条件得分。
三、概要设计
1、功能块各函数列表
2、场景的设置
intmap[28][17]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1},
{0,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1},
{0,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1},
{0,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
voidshowmap()
{
inti,j;
for(i=5;i<28;i++)
{
for(j=1;j<17;j++)
{
gotoxy(2*j,i);
if(j==1||j==2||j==15||j==16)
{printf("┃");}
elseif(i==26||i==27)
{printf("━");}
elseif(map[i][j]==1)printf("■");
elseif(map[i][j]==0)printf("□");
}
}
}
3、其余功能的实现(如方块的出现下落旋转得分计算游戏结束条件判断等)
(1)旋转
voidroll()
{inti,j;
p_xnext=p_x;
p_ynext=p_y;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
box_next_step[4-j][i]=box[i][j];
}
}
(2)得分计算
voidscore()
{
inti,j,k;
for(i=25;i>5;i--)
{
for(j=3;j<15;j++)
{
if(map[i][j]==1)flags=1;
else{
flags=0;
break;
}
}
if(flags==1)
{
pointrank++;
for(j=3;j<15;j++)
{
for(k=i;k>5;k--)
{
map[k][j]=map[k-1][j];
}
}
i++;
}
}
switch(pointrank)
{
case1:
scores=scores+10;break;
case2:
scores=scores+25;break;
case3:
scores=scores+40;break;
case4:
scores=scores+60;break;
default:
scores=scores+0;
}
gotoxy(40,15);
printf("YourScore:
%d",scores);
pointrank=0;
showmap();
Sleep(300);
}
(3)游戏结束判断
intgameover()
{
inti;
for(i=3;i<15;i++)
{
if(map[5][i]==1)
return1;
}
return0;
}
四、测试分析
1、游戏开始界面。
2、游戏进行中,操作键为键盘数字2、4、6、8,其中2为加速下落,4为左移,6为右移,8为旋转。
3、游戏介绍,按任意键退出游戏。
游戏结束条件:
当方块高度到达顶部时,游戏自动停止,并提示GameOver。
总结:
需求分析方面:
我们对俄罗斯方块这个游戏一点也不陌生,知道游戏的玩法和实现后,我们很快就着手开干。
游戏要有出现场景·方块·消除方块得分·判断游戏结束等几个大功能。
结构清晰简洁便于分工。
问题:
设计过程中遇到了些许难题,那就是如何才能可以在屏幕上指定位置显示内容。
一开始发现很困难,不过在和组员讨论过后,我们发现gotoxy()函数,十分简单的就解决了这个难题。
数据结构:
游戏主要使用了数组这个数据结构。
不过与以往的程序不同,这个游戏有一个大数组包含很多个小数组,大数组不断的吸收小数组内的元素,达到条件得分。
代码
#include
#include
#include
#include
#include
#defineMAX_BOX7
intp_x=5,p_y=1,map_x=1,map_y=1,p_xnext=5,p_ynext=1,scores=0,key1=0,flags=0,gamespeed=200,gamespeed1=200,pointrank=0;
intMAX_X=17,MAX_Y=28;
charkey;
intbox[5][5]={0};
intbox_next_step[5][5]={0};
intnextbox[5][5]={0};
intboxtype[MAX_BOX][5][5]={
{
{0,0,0,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0}
},
{
{0,0,0,0,0},
{0,0,1,0,0},
{0,1,1,1,0},
{0,0,0,0,0},
{0,0,0,0,0}
},
{
{0,0,0,0,0},
{0,1,1,0,0},
{0,0,1,1,0},
{0,0,0,0,0},
{0,0,0,0,0}
},
{
{0,0,0,0,0},
{0,0,1,1,0},
{0,1,1,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
},
{
{0,0,0,0,0},
{0,0,1,1,0},
{0,0,1,1,0},
{0,0,0,0,0},
{0,0,0,0,0}
},
{
{0,0,0,0,0},
{0,0,1,0,0},
{1,1,1,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
},
{
{0,0,0,0,0},
{0,0,1,0,0},
{0,0,1,1,1},
{0,0,0,0,0},
{0,0,0,0,0}
}
};
intmap[28][17]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1},
{0,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1},
{0,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1},
{0,1,1,-1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据结构 程序设计 俄罗斯方块