当前位置:首页 > +c+课程设计打飞碟--大学毕设论文
计算机科学与技术系
课程设计报告
2014~2015学年第二学期
课学学专指
业导
班教生
姓
程 程序设计语言综合设计 名 L 号 级 师
课程设计名称 C++课程设计——打飞碟
2015年6月
功能描述
本游戏源自科学幻想打飞碟!
1、 游戏运行,初试界面出现‘空格开始’的提示。
2、 玩家按空格开始游戏,天上开始向下掉飞碟。
3、 游戏开始后,用户每点击一次鼠标左键,发射一个炮弹。
4、 被打到的飞碟会消失,屏幕上方的总分会加上该飞碟对应的分数。 5、 游戏时长一局共30s。
6、 一局游戏完成后,屏幕重新出现“空格开始”的标志,用户按空格可以继续游戏,如此往复。
数据结构
1、int m_iGameState; // 游戏状态,0:结束或者等待开始;1:初始化;2:游戏进行中
2、int m_iGameScore; // 本局游戏积分
3、float m_fGameTime; // 本局游戏当前已经进行的时间,大于设定的时间之后,游戏结束
4、Float m_fDapaoRotation; //大炮初始位置 5、CSprite* m_pDapao; //大炮精灵 6、CTextSprite* m_pTime; //时间文字显示精灵 7、CTextSprite* m_pScore; //分数文字显示精灵 8、CSprite* m_pKaishi; //空格开始精灵 9、CSprite* m_pZhunxing; //准心精灵
10、Float m_fPaodanLeftTime ;// 记录发射一发炮弹后,距离能发射第二发炮弹还剩多少时间
11、float m_fScreenLeft ;// 屏幕上下左右4个边界值 12、float m_fScreenRight ; 13、float m_fScreenTop ; 14、float m_fScreenBottom ;
15、vector
16、int m_iCount; // 游戏中飞碟出现的架数 17、vector
22、static float m_fSpeed[3] ; // 三种飞碟的速度
23、int m_iShootScore ; // 一局游戏得分 24、static int m_iHighScore[5] ;//分数最高的五个
25、CTextSprite* m_vScoreText[5];//游戏下方的文字显示精灵 26、CEffect* m_pGunFire; 27、CEffect* m_pExplode; 28、CSound* m_pKaipao; 29、CSound* m_pBaozha;
流程图
按空格键开始游戏 通过鼠标控制大炮的炮口朝向和发射,准心精灵随鼠标移动 否 准心是否在飞碟上 是 点击鼠标左键,发射炮弹,获得分数
设计思路
本次实验可分为以下八个小的实验。 实验一:实验的创建 实验内容:
步骤一、打开FunCode,创建一个的C++语言项目; 步骤二、导入UFO模板。
实验思路:导入的模板不仅包括界面设计,还包括该游戏可能要用到的其他精灵。添加到“场景”中的精灵,都已经取好名称,并根据程序要求设置好中心点、链接点等,就可以直接编程了。
实验二: 改变大炮炮口朝向 实验内容:
步骤一、准心随鼠标移动 步骤二、剩余时间显示
步骤三、改变大炮炮口朝向
实验思路:将鼠标的坐标赋给准心,同时隐藏掉鼠标。同时计算大炮炮口和鼠标之间连续与x方向的夹角,以此来设置炮口朝向,具体可以参加实验指导。
实验三: 发射炮弹 实验内容:
步骤一、鼠标单击发射炮弹 步骤二、判断炮弹是否越出世界边界
实验思路:系统捕捉到鼠标单击消息的时候,获取大炮炮口中心点的坐标作为炮弹发射点,通过炮弹模板精灵创建炮弹精灵,使用SpriteMoveTo函数使炮弹移动到鼠标位置也即是准心精灵的位置,这样就实现了发射炮弹的效果了。
实验四: 显示多架飞碟 实验内容:
步骤一、初始化显示飞碟
步骤二、处理飞碟与世界边界的碰撞
实验思路:随机飞碟出现的x坐标位置,以精灵模板ufo_muban0创建飞碟精灵,同时调用SetSpriteLinearVelocityY函数使其运动即可。
实验五: 三种飞碟同时出现 实验内容:
步骤一、分情况创建三种飞碟精灵
步骤二、根据飞碟精灵名称创建节点到链表 步骤三、根据飞碟精灵名称删除链表节点
实验思路:使用一个for循环分别创建不同的飞碟精灵,当循环因子为0的时候通过ufo_muban0创建飞碟精灵,循环因子为1的时候以ufo_muban1创建飞碟,循环因子为2的时候以ufo_muban2创建飞碟精灵。同时调用AddToList函数将精灵名称加入链表中。
使用AddToList创建精灵节点,使用一个while循环遍历链表,判断pNode->pNext为NULL的时候,说明已经遍历到了链表的最后一个位置,此时将新添加的精灵名称赋给pNode->pNext即可。
使用DeleteNode删除精灵名称节点,首先要判断链表是否为空,如果不是则判断表头的精灵名称是否和传入的精灵名称相同,如果相同则删除表头,否则使用一个while循环判断节点中与传入精灵名称相同的节点,删除即可。
实验六: 射击飞碟 实验内容:
步骤一、处理炮弹精灵和飞碟精灵的碰撞 步骤二、记录本局分数
共分享92篇相关文档