欢迎来到天天文库
浏览记录
ID:57784123
大小:317.00 KB
页数:12页
时间:2020-03-28
《陈天楚程序设计基础课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2012年第二阶段课程设计报告实训项目:程序设计基础课程设计学号:姓名:陈天楚专业:计算机科学与技术实训日期:2012年6月28日至2012年7月9日指导教师:焦贤沛实训成绩:江西财经大学信息管理学院一、11一、问题概述俄罗斯方块是一款风靡全球的游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明。游戏在一个m*n的矩形内进行,基本规则是移动、旋转和放置游戏自动输出的方块,使其排列成完整的一行而消去得分。游戏开始后,方块会根据难度的不同而以不同的速度下降,在方块完成下落之前,玩家需要利用左右移动和旋转操作,使方块以最合适的形态下落,方块完成下落后如果拼成了没有间隙的行,这
2、一行就会被消去,为接下来的方块提供空间。如果方块累积到游戏空间的顶层,游戏便失败而无法继续。本项目在传统的俄罗斯方块游戏的基础上,增加了多人游戏功能,多人游戏分时限模式和对战模式两种。在时限模式下,玩家分别进行游戏而不相互干涉,以指定时间内得分最高者为胜。在对战模式下,一个玩家的得分将会令其对手的游戏速度变快,从而加大另一个玩家的游戏难度,给其带来困难,以最晚结束游戏者为胜,具有一定的趣味性。多人游戏中,两个玩家通过操作不同的按键组(W、S、A、D按键组和上、下、左、右按键组)来控制各自的游戏。本项目还实现了排行榜功能,分数排名前十位的用户有机会输入其姓名并登录
3、至排行榜中。排行榜可以在主菜单界面中选择查看。二、系统目标11综合运用所学知识,掌握VisualC++6.0环境下的C程序设计技术、相关库函数的功能及调用方式,完成俄罗斯方块的游戏的设计与实现。实现基本的游戏功能,完成俄罗斯方块游戏的基本算法,允许用户通过按键旋转、移动方块,并检测和预防用户非法的操作。实现多人游戏功能。完成时限模式和对战模式。维护两个玩家各自的游戏状态,并判断胜利者。实现排行榜功能。记录排名前十位的用户并显示,允许用户在将成绩登录到排行榜时输入其姓名。一、设计的过程及步骤1、需求分析所要实现的功能如下:① 实现基本的俄罗斯方块游戏功能。实现方块
4、的随机生成、旋转和移动并判断操作是否可行的功能,实现方块定时自动下落并随时处理玩家的按键操作的功能,实现判断玩家操作是否合法并过滤非法操作的功能,实现消除满行并更新分数的功能,实现无法放下方块时结束游戏的功能。② 实现多人游戏功能。允许两个用户使用不同的按键控制对应的游戏区域,并在游戏结束后判断胜利的一方。实现两种多人游戏模式:时限模式、对战模式。11① 实现计分功能,在方块下落和满行消除成功时分别给用户加上对应的分数,在时限模式中游戏失败后会自动重置并减去特定的分数,分数高的玩家获胜。② 实现难度增加功能,在用户分数改变时修改方块下落的速度,以达到逐渐提高难度
5、的目的,在对战模式中一方得分将会加快另一方玩家的游戏速度。③ 实现排行榜功能,根据用户的成绩计算用户在排行榜中的排名,当用户的排名在前十位之内时,提示用户输入其姓名并显示在排行榜中。排行榜以二进制文件的方式保存。④ 通过输出制表符在控制台中实现对话框、输入提示窗口、排行榜窗口等多种界面,允许用户使用鼠标操作。2、设计文件结构本项目中排行榜数据的结构如下所示:typedefstruct{charname[20];//姓名intscore;//分数}NODE;staticNODEtop[10];top数组以二进制方式保存至文件中,文件路径为当前目录下的toplist
6、.bin。113、设计系统功能图114、函数设计游戏功能模块,实现俄罗斯方块游戏,函数在main.c中实现:voidDrawBox(intx,inty,intv);/*在屏幕指定坐标画出方框图案*/voidsetP(GAME_CONTEXT*c,intx,inty,intv);/*设置一个点并更新到屏幕上*/intgetP(GAME_CONTEXT*c,intx,inty);/*获取一个点的值*/voidRotateBlock(BLOCKa,BLOCK*b);/*旋转一个方块*/intCheckBlock(GAME_CONTEXT*c,BLOCKb,intx,i
7、nty,intp,intclear);/*当p==-1时,检查(x,y)处是否能放下方块b而不被其它方块阻挡当p>=0时,clear==0时,将方块b在map[p]中的(x,y)处清除clear==1时,将方块b放置在map[p]中的(x,y)处*/voidLoadBlockFromPatterns(BLOCK*b,intp);/*从指定的图案中装载一个方块,图案存储在全局变量patterns[]中*/voidUpdateScore(GAME_CONTEXT*c);/*将分数显示在屏幕上,并根据分数计算新的方块下落速度,分数越高,下落速度越快*/intCheck
8、Line(GAME_CO
此文档下载收益归作者所有