课程论文(设计)课程名称《数据结构》课程设计指导老师所在学院专业年级提交日期成绩小组成员表姓名学号承担任务俄罗斯方块的基本算法实现系统调试游戏场景的规划与实现游戏得分算法分析、游戏后期测试开场动画制作ppt游戏结束条件判断游戏得分算法分析、游戏后期测试开场动画制作ppt课程设计实验起止日期:2012-2013学年第二学期系别班级学号姓名实验题目俄罗斯方块小游戏■设计性□综合性自我评价在本次课程设计中,我负责编写游戏的界面和场景。这是很重要的工作,直接关系到玩家的游戏体验和对游戏的评价。所以我充分发挥想象力和创造力在场景位置安排上下了一番苦工,也和组内成员进行过多次的探讨,最终写出了一个具有美感的游戏场景,力求让用户在游戏中体验到给多的快感。更重要的是在此次程序设计中与组员在游戏框架上的讨论中学到了很多新知识,对数据结构的理解也在实践中得到了提高。教师评语能够实现实验要求的功能□全部□部分算法有新意□有□一般程序运行通过□全部□部分算法注释说明□完善□仅有功能说明接口参数说明□有□无按期上交打印文档资料及源程序□所有□部分综合设计说明报告结构□合理□不合理用户使用说明□完整□不全现场演示操作有准备□有□无问题解答流畅□流畅□不流畅独立完成实验□能□不能体现团队合作精神。□能够□不能成绩一、需求分析我们对俄罗斯方块这个游戏一点也不陌生,知道游戏的玩法和实现后,我们很快就着手开干。游戏要有出现场景、方块、消除方块得分、判断游戏结束等几个大功能。结构清晰简洁便于分工。二、算法原理介绍游戏主要使用了数组这个数据结构。不过与以往的程序不同,这个游戏有一个大数组包含很多个小数组,大数组不断的吸收小数组内的元素,达到条件得分。三、概要设计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("YourScor...