2015~2016
《Windows程序设计》期末考查
设计、实现、使用文档
姓名: 学号: 201405010 班级: 计算机141 指导教师: 杜 日期: 2016/6/12
考查题目: 丛林探险
一、题目要求(程序背景、意义、相关功能介绍) 程序背景:考察Windows面向程序化设计;
意义:可以锻炼学生能力,激发学生学习的乐趣;
相关功能:通过鼠标,键盘完成一些功能,产生;一些游戏功能; 二、程序的设计(如:总体设计结构,用到的数据结构、类图等) 菜单设计:开始游戏,选择关卡,放烟花; 城镇设计:可以走路演示技能;
BUFF售货机设计:可以买复活药水,无限购买; 选择地图设计,鼠标选择地图进入相关地图; 上下左右键控制人物移动;
A,S,D,F,Q,W,E各种小技能,对怪物造成伤害; R大招,40秒冷却,30秒持续,对野怪双倍伤害;
兔子精灵:随机移动,夏娜靠近时会进入防御状态,夏娜近身有概率对她发动攻击;
BOSS火龙:原定站在,人物近身会攻击,有两种技能,死后会掉落装备 任务完成放烟花;
有用到双缓冲,游戏循环等
三、程序的实现过程(用文字或流程图说明完成程序的步骤,可附些关键代码)
利用BitBlt完成对背景图的插入
利用TransparentBlt完成对人物的插入,并且通过相关变量控制人物运动 利用srand(time(0)),rand(),来控制怪物的随机运动,
利用case WM_LBUTTONDOWN:case WM_KEYDOWN: case WM_CHAR:响应键盘鼠标控制人物怪物的相关运动 利用TextOut进行文字输出 利用RoundRect设计血条
利用PlaySound()播放背景音乐
游戏循环关键代码:GetMessage(&Msg,NULL,NULL,NULL); while( Msg.message!=WM_QUIT ) {
if( PeekMessage( &Msg, NULL, 0,0 ,PM_REMOVE) ) {
TranslateMessage( &Msg ); DispatchMessage( &Msg ); }
else { tNow = GetTickCount(); if(tNow-tPre >= 100) //当此次循环运行与上次绘图时间相差0.1秒时再进行重绘操作 mypaint(Hdc); }
}
逻辑处理不做一一分析
四、程序的运行结果(可通过文字和截图说明)
游戏开始界面
城镇界面
商店界面
选择地图界面
第一关页面
怪物防御状态
怪物攻击
人物血条
传送门,怪物全部消失后出现
Boss关卡界面
游戏结束界面
人物技能不方便截图,可以游戏看具体效果。 五、总结与心得
这次课程设计所用的时间还是比较多的,虽然磕磕碰碰,但是最终自己做出点东西还是很欣慰的,通过课程设计也学到了不少东西,比如说游戏循环,双缓冲我本来是不会的,在同学的帮助下也用起来了,但是问题还是很多,比如说人物与怪物的碰撞问题,我没有去解决,而且不会设计小窗口,3D等,以后还需继续努力。