C语言课程设计桌球.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言课程设计桌球

C语言课程设计--桌球 一、实验内容 玩家通过移动球杆到单一的桌球处碰撞桌球运动,当桌球于一定速度通过桌面右方的同样颜色的球洞后,则该球进洞,在桌面左边重新分配新球开始游戏。要求如下: 游戏的初始界面如下,其中左边有一个体积较小的桌球,其x方向位置固定,y方向位置随机。右边有八个颜色不一样,体积较大的球洞,游戏的目的是使用左边的桌球以一定小的速度穿过右边同样颜色的球洞就算桌球进洞,然后重新分配新球。 球杆随鼠标运动而运动,单击球杆,桌球获取一个前进的速度同时往前有运动。桌球的前进方向有一段指示球运动方向的虚线。 右侧的球洞以移动的频率不断更换位置。球洞的x左边不变,更换的是y坐标的位置,即每一轮中每一个球洞移动到下一个球洞的位置,最下边的球洞则移动到第一个球洞位置。所以的这些动作都要在一个频率的时间里面完成。因此当游戏一某一个频率进行的时候,右侧的球洞就能实现循环变化的效果。 球碰撞到桌面边沿的时候以发射角的角度弹走。 球进洞的判断是球以一定的速度通过同样颜色的球洞时,桌球消失,表明球进洞了,此时左侧随机生成新球。球运动到球洞的速度不能太大,太大则球直接运动过球洞,如果速度太小,则球同样不进洞。 二、实验指南 实验一开始实验 【实验任务】 步骤一、打开FunCode,创建一个的C++语言项目; 步骤二、导入snooker模板。 【实验思路】 按实验指导完成。 【实验指导】 打开FunCode,点击“项目”菜单,选择“创建C语言工程” 注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。 点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“snooker”模板,点击“导入到工程”按钮,如图二。 图 一 图 二 3、导入成功后的,界面如下图所示: 实验二初始化桌球和球杆同时在球的前进方向画虚线 【实验内容】 步骤一、设置球的初始位置,球杆的初始朝向 步骤二、设置球杆随鼠标移动 步骤三、在球的前进方向上画虚线 【实验思路】 在设置初始球的时候要考虑随机本局的球数字,如果和上一局的不一致,则将上局的球拉到屏幕外,将本局的球拉到屏幕内,在Y向上随机摆放球的出生位置,只随机Y方向坐标,不动X方向。对于球杆则通过系统的dOnMouseMove函数获取到鼠标移动时的坐标位置,然后使用dSetSpritePosition函数同步设置桌球精灵的位置。通过获取球的X和Y坐标,并求两个坐标平方和的平方根来得到球运动方向向量的大小,利用循环调用系统画线函数画虚线。 【实验指导】 在Main.cpp中,初始化几个全局变量,代码如下: // 游戏玩法设计:上方有8个球洞,分别是数字0-7,球洞间的数字按一定速率滚 // 动,每局球都随机一个0-7的数字,对应的数字打入对应的球洞才胜利,开始打球 // 状态 g_iPlayState = 0; g_fRotateTime = 0.f; g_fHoleRollTime = 0.f; 初始化精灵: // 使用循环,给数组赋值: // 将数组的8个值分别赋值0-7即可,无需随机。名字使用dMakeSpriteName分 // 别产生,为BallHole0 - BallHole7 // 球洞精灵预先摆放在场景中,因此不需要创建 int iLoop = 0; for( iLoop = 0; iLoop 8; iLoop++ ) { g_iHoleNumber[iLoop] = iLoop; strcpy( g_szHoleName[iLoop], dMakeSpriteName( BallHole, iLoop ) ); } 在Main.cpp中填写球和球杆的初始化代码。 // 随机本局的球数字,如果和上一局的不一致,则将上局的球拉到屏幕外,将本 // 局的球拉到屏幕内 int iNewBallNumber = dRandomRange( 0, 7 ); if( iNewBallNumber != g_iBallNumber ) { dSetSpritePositionY( g_szBallName, 50.f ); // 新球,移动到屏幕中 g_iBallNumber = iNewBallNumber; strcpy( g_szBallName, dMakeSpriteName(Ball, g_iBallNumber) ); dSetSpritePositionX( g_szBallName, -30.f ); } // 在Y向上随机摆放球的出生位置,只随机Y方向坐标,不动X方向 int iPosY = dRandomRange( -

文档评论(0)

love3892 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档