欢迎来到天天文库
浏览记录
ID:53806966
大小:146.50 KB
页数:11页
时间:2020-04-07
《实验报告终极版.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、程序设计实训报告[黄金矿工]10一、系统界面图1开始游戏图2,游戏进行时10二、功能描述玩家通过键盘的按键控制矿工抓取金块,将钩子碰触到的金块抓取过来。要求如下:1.游戏的初始界面如图1,单机键盘上的空格键进入游戏,进入后界面如图2,金块的总数是20,大小位置是随机的。2.在没有抓取状态下,钩子左右摆动,此时矿工的是静止的。当钩子摆动到一定角度,玩家可以单击键盘上的上下左右键中的下方向键控制矿工伸出长钩,抓取金子,此时矿工是向下摇动转轴。获取到金子往回拉后,矿工是不断转动转轴,知道金子拉动到钩子初始处,矿工恢复静止,钩子继续
2、左右摇摆,直到玩家再次单击向下方向键。3.伸出的钩子如果碰触到金子,则钩子和金子一起往回拉,回收的速度根据抓取到的金子的大小变化而变化,金子越大,回拉的速度越慢,反之亦然。如果钩子没有碰触到金子,而是碰触到左右和下的边界,则钩子保持原来的速度往回收。4.抓取到的金子拉回到转轴处消失,此时金子数目减少一个。如果玩家将所有金子抓取完,游戏返回到如图1的初始界面。开始三、流程图伸出钩子显示金块使钩子旋转按空格隐藏判断金块是否与钩子碰撞金块与钩子碰撞拉回并删除金块否是如果抓取金子个数等于20钩子与边界碰撞并弹回10四、数据结构(说明
3、:主要写用到的各类型的全局变量、含义)1.g_iGameState表示游戏状态,初始状态g_iGameState=0.2.g_fHookStartPosX存储钩子的初始X位置。3.n控制金块生成,初始化为1.4.g_fHookStartPosY存储钩子的初始X位置。5.szGotGoldName[20]当前抓到金子的名称6.count抓取到金子的个数。7.iSize金子的尺寸。8.g_fHookRotation钩子与地面的夹角。9.g_iHookRotToLeft控制钩子转向,1——从右向左2——从左向右。10.g_fGol
4、dBornMinX,g_fGoldBornMaxX,g_fGoldBornMinY,g_fGoldBornMaxY分别代表左右上下的值。11.g_iGoldCount金子的个数,初始化为20.12.g_fEmptyHookSpeed钩子发出时速度。13.fRotateSpeed钩子旋转速度。五、算法描述游戏状态g_iGameState分为三种状态0,1,2,其中0表示游戏结束状态,1表示游戏初始化,2则表示游戏运行状态;键盘控制:1.空格按下精灵隐藏2.游戏有结束状态转为初始化状态3.钩子开始转动,金块也显示出来4.利用A,
5、D键控制钩子左右摇摆或“↓”释放钩子5.游戏自动进入运行状态钩子旋转:1.利用fHookRotatio记录钩子的角度,flag控制钩子的旋转方向,fRotateSpeed控制钩子的摇摆速度2.利用fThisRotate=fRotateSpeed*fTimeDelta和g_fHookRotation+=fThisRotate使钩子角度发生变化3.利用A键使钩子角度向左增加30度(源代码g_fHookRotation+=30)利用D键使钩子角度向右增加30度(源代码g_fHookRotation-=30)4.设置钩子旋转的角度范
6、围0~1805.使用dSetSpriteRotation函数控制钩子的位置10金块显示:1.iSize标记金块尺寸,g_iGoldCount标记金块个数2.使用名为dMakeSpriteName的数组储存金块3.使用dCloneSprite复制金块4.使用dSetSpriteWidth和dSetSpriteHeight分别控制金块的宽度和高度5.使用dSetSpritePosition函数设置金块位置绳子连接:使用dDrawLine函数将钩子与矿工用绳子连接起来并设置绳子的粗细和颜色精灵碰撞:调用dOnSpriteColSp
7、rite函数实现钩子与金块碰撞之后的连接拉回边界碰撞:调用dOnSpriteColWorldLimit函数实现钩子与边界碰撞之后的弹回六、源代码//-----------------------------------------------------------------------------////-----------------------------------------------------------------------------#include"CommonAPI.h"intg_iGameSt
8、ate=0;//游戏状态intn=1;//控制生成金子的循环intcount=0;记录钩子抓取金子的数量intiSize=4;//金子的大小intflag=1;//控制钩子是否旋转floatg_fHookRotation=0.f;//钩子与地面的夹角intg_iHookRotToLeft=
此文档下载收益归作者所有