电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C++语言课程设计-海底世界

12页
  • 卖家[上传人]:m****
  • 文档编号:479386965
  • 上传时间:2022-08-26
  • 文档格式:DOC
  • 文档大小:1.05MB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、C+语言课程设计一海底世界一、实验内容海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动。要求如下:1、 游戏初始界面如下图。2、 来回游动的四条鱼,从屏幕左边游进来,均已一个随机速度水平游动。从屏幕右侧游出去,很快又从屏幕右侧游出来,就这样来回游动。3、 玩家用WASD键控制一条鱼向上、左、下、右方向游动。松开按键时,玩家的鱼就停止游动。4、 玩家的鱼游到屏幕边界时,不能继续往前游。游戏初始界面二、实验指南实验一开始实验【实验任务】步骤一、打开FunCode,创建一个的C+语言项目;步骤二、导入SeaFish模板。【实验思路】按实验指导完成。【实验指导】1、 打开FunCode,点击“项目”菜单,选择“创建C+工程”注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。2、 点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“SeaFish”模板,点击“导入到工程”按钮,如图二。 图 一 图 二3、 导入成功后的,界面如下图所示:地图不仅包括界面设计,还包括该游戏可能要用到的其他精灵。添加到“场景”中的精灵,都已经取好名称

      2、,并根据程序要求设置好中心点、链接点等,学生只需要直接编程就可以。本实验指导中,精灵的命名名称与模板不相同,可将名称按实验指导设置。实验二让fish游动【实验内容】步骤一、设置fish0往特定方向移动【实验思路】调用SetSpriteLinearVelocity函数设置精灵的移动速度即可。【实验指导】1、 进入LessonX.h中添加如下的成员变量声明:CSprite*m_pFish;2、 在LessonX.cpp中的构造函数里面添加该变量的初始化代码:m_pFish=new CSprite(yu_0);3、 同时修改构造函数中m_iGameState的值为2,这样游戏启动的时候就直接调用GameRun函数使余游动。4、 在GameRun函数里面添加下面一行代码:m_pFish-SetSpriteLinearVelocity(30, 30);这样鱼就能游动了。实验三鱼碰到边界停止游动【实验内容】步骤一、边界检测,鱼碰到边界速度为0【实验思路】当系统检测到鱼碰撞到世界边界的时候调用SetSpriteLinearVelocity函数使鱼的速度为0。【实验指导】1、 进入LessonX.h中

      3、添加如下的成员变量:floatm_fScreenLeft;/ 屏幕左边界值floatm_fScreenRight;/ 屏幕右边界值floatm_fScreenTop;/ 屏幕上边界值floatm_fScreenBottom;/ 屏幕下边界值2、 在LessonX.cpp中的构造函数里面添加以上变量的初始化代码,同时将m_iGameState的值改为1,这样游戏开始直接开始初始化操作:m_iGameState=1;m_fScreenBottom=0.f;m_fScreenLeft=0.f;m_fScreenRight=0.f;m_fScreenTop=0.f;3、 注释掉实验二中gamerun()中添加的那一行代码。在GameInit获取世界边界的值,同时设置鱼的边界限制和初始速度:/ 获取屏幕的边界值m_fScreenLeft = CSystem:GetScreenLeft();m_fScreenRight = CSystem:GetScreenRight();m_fScreenTop = CSystem:GetScreenTop();m_fScreenBottom = CSystem

      4、:GetScreenBottom();/ 设置精灵世界边界m_pFish-SetSpriteWorldLimit(WORLD_LIMIT_NULL, m_fScreenLeft, m_fScreenTop, m_fScreenRight, m_fScreenBottom);m_pFish-SetSpriteLinearVelocity( 15, 0);4、 处理世界边界碰撞,建立自定义函数OnSpriteColWorldLimit(如果系统已声明,则忽略创建函数OnSpriteColWorldLimit的步骤):1) 在LessonX.h中添加该函数的声明:voidOnSpriteColWorldLimit( const char *szName, const int iColSide );2) 在LessonX.cpp中添加该函数的定义代码:void CGameMain:OnSpriteColWorldLimit( const char *szName, const int iColSide )3) 如果系统检测到鱼碰撞了世界边界,则调用SetSpriteLinearVelocity

      5、函数将鱼的速度设置为0,在上面的函数定义里面添加如下的代码:if(strcmp(szName, fish0)=0)m_pFish-SetSpriteLinearVelocity(0, 0);/dSetSpriteFlipX(fish0, true);4) 最后在Main.cpp中的OnSpriteColWorldLimit的函数里添加对自定义函数的调用代码:g_GameMain.OnSpriteColWorldLimit(szName,iColSide);实验四鱼碰到边界后按相反方向游动【实验内容】步骤一、碰撞检测步骤二、设置鱼的速度为反方向【实验思路】当系统检测到鱼碰撞到世界边界的时候调用SetSpriteLinearVelocity函数使鱼的速度为原来速度的相反数,如原来是15.f,碰撞后为-15.f,原来是-15.f,碰撞后为15.f。再调用SetSpriteFlipX函数是鱼的图片翻转,让鱼继续游动即可。【实验指导】1、 在LessonX.cpp中的OnSpriteColWorldLimit函数里面,将原来的代码注释掉。2、 首先检测是否是鱼碰撞到了边界,在该函数里面添加如下代

      6、码,判断碰到世界边界的精灵是否为yu_0:boolbFlip;floatfSpeedX;if(strcmp(szName, yu_0)=0)3、 如果鱼碰撞到的是右边的边界,则图片翻转,鱼的速度为负速度,即反方向速度,在上面的if中添加如下代码:if(iColSide = 1) / 右边bFlip = true;fSpeedX = -15.f;4、 如果碰到的是左边界,则图片不翻转,鱼的速度为正速度:else if(iColSide = 0) / 左边bFlip = false;fSpeedX = 15.f;5、 最后调用函数,使鱼的图片改变,设置鱼的速度:m_pFish-SetSpriteFlipX( bFlip);m_pFish-SetSpriteLinearVelocity(fSpeedX, 0);实验五多条鱼同时来回游动【实验内容】步骤一、通过鱼的模板创建多条鱼的精灵步骤二、鱼碰撞到边界后设置鱼的速度为反方向【实验思路】使用for循环,通过鱼的模板利用CloneSprite函数创建鱼精灵,设置它的边界限制,给它一个初始的速度,最后将该鱼精灵加入到m_vFish向量数组中保存下来

      7、。当系统检测到鱼碰撞到世界边界的时候调用SetSpriteLinearVelocity函数使鱼的速度为原来速度的相反数,如原来是15.f,碰撞后为-15.f,原来是-15.f,碰撞后为15.f。再调用SetSpriteFlipX函数是鱼的图片翻转,让鱼继续游动即可。【实验指导】1、 进入LessonX.h添加如下的成员变量声明,来创建一个保存鱼的容器对象:vectorm_vFish;2、 因为用到vector容器,因此需要在LessonX.h中添加头文件和声明命名空间:#includeusing namespace std;3、 在LessonX.cpp中的GameInit函数里面添加如下的代码:/ 生成多条鱼精灵for(int i=0; iCloneSprite(fish_muban);/创建精灵4、 随机生成鱼的位置,并设置它的世界边界限制。在上面的for循环里添加:fPosX = CSystem:RandomRange(m_fScreenLeft+10.f, m_fScreenRight-10.f);fPosY = CSystem:RandomRange(m_fScreenTop

      8、+10.f,m_fScreenBottom-10.f);tmpSprite-SetSpritePosition(fPosX, fPosY);tmpSprite-SetSpriteWorldLimit(WORLD_LIMIT_NULL, m_fScreenLeft-20.f, m_fScreenTop, m_fScreenRight+20.f, m_fScreenBottom);5、 最后随机生成鱼的速度,并将它放入m_vFish数组中保存:fSpeedX = CSystem:RandomRange(10, 20);tmpSprite-SetSpriteLinearVelocity(fSpeedX, 0);m_vFish.push_back(tmpSprite);push_back函数是c+中vector的内置操作,作用是将元素存放在数组的最后面。6、 处理多条鱼与世界边界的碰撞的问题,需要添加一个自定义查找某条鱼的函数FindSpriteByName1) 在LessonX.h中添加该函数的声明:CSprite*FindSpriteByName(const char* szName);2) 在LessonX.cpp中添加该函数的定义:CSprite* CGameMain:FindSpriteByName(const char* szName)3) 使用for循环遍历数组,找到与传进去的精灵名称相同的鱼并返回即可。在上面的函数定义里面添加如下的代码:for(int i=0;iGetName()=0)return m_vF

      《C++语言课程设计-海底世界》由会员m****分享,可在线阅读,更多相关《C++语言课程设计-海底世界》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.