02 FunCode C 实验教学指南.doc

  1. 1、本文档共93页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
02 FunCode C 实验教学指南

实验教学 实验:海底世界 实现鱼来回游动 学习目标 用代码响应“精灵与世界边界碰撞”事件; 如何让精灵调头运动; 复习选择结构; 学习应用dSetSpriteFlipX和dSetSpriteFlipY函数; 学习应用strcmp函数。 在“入门”一章中,我们学会了如何设计游戏界面,也知道简单地编一点小程序。从这章开始,我们开始用代码写稍微复杂一些的小游戏。 在这个实验中,我们还是使用seafish项目。到目前为止,我们能让yellowfish游动了,但是它游出屏幕以后就不再回来了。现在,我们要求它游到屏幕左边界时,就调头向右游动;游到右边界时,就调头向左游动。 Step1: 创建C语言工程,工程的名字起为seafish,然后添加相应的精灵,鱼和背景图片。 Step2:让鱼水平游动 在WinMain的游戏初始化部分:先将yellowfish改为水平游动。修改dSetWindowTitle中的内容,将下列代码添加到dSetWindowTitle函数的下边: dSetWindowTitle(“seafish”); //游戏的名字为seafish dSetSpriteLinearVelocity (“yellowfish”, 10, 0); //初始化yellowfish的X方向速度 Step3:设置鱼的世界边界 在“入门”一章,我们已经学习了精灵与世界边界碰撞事件(具体查看“项目改进”之“精灵与世界边界的碰撞”)。在界面中将yellowfish的世界边界设计得与可见区域重合,然后将“限制模式”改为NULL。 现在我们通过代码实现精灵与世界边界碰撞模式的设置: 在step2的代码下面添加以下代码: dSetSpriteWorldLimitMode(“yellowfish”, WORLD_LIMIT_NULL); //将碰撞模式设置为NULL Step 4:精灵与世界边界碰撞的响应函数 这个响应函数就是dOnSpriteColWorldLimit函数,函数定义在Main.cpp文件中。WinMain函数中,每次循环调用dEngineMainLoop函数时,引擎会检查是否有精灵与世界边界碰撞事件发生。如果有,再检测限制模式是否是NULL。如果是NULL,就调用该函数并执行函数内部代码。函数定义如下: void dOnSpriteColWorldLimit( const char *szName, const int iColSide ) { } 其中,szName是与世界边界碰撞的精灵的名称。 iColSide用来表示与哪个边界碰撞,0 – 左边界,1 – 右边界,2 – 上边界,3-下边界。 因此,对该事件的处理代码,我们只需要写在这个函数中就可以了。 Step5:判断鱼碰到了那个边界 由step4可以知道,关于精灵与世界边界碰撞的处理都写在dOnSpriteColWorldLimit中,那么判断也应写在该函数中,代码如下:    if(0 == iColSide)    {    dSetSpriteLinearVelocity(yellowfish, 10, 0);    }    else if(1 == iColSide)    {    dSetSpriteLinearVelocity(yellowfish, -10, 0);    } Step 6:鱼碰到右边界后调头 运行step5可以看到精灵虽然反向游动了,但是头还没有调转。这里我们学习两个新的API,用来将精灵沿着X轴或Y轴调转。 /* dSetSpriteFlipX:设置精灵图片X方向翻转显示 * 参数 szName:精灵名字 * 参数 iFlipX:1 翻转 0不翻转(恢复原来朝向) */ extern void dSetSpriteFlipX( const char *szName, const int iFlipX ); /* dSetSpriteFlipY:设置精灵图片Y方向翻转显示 * 参数 szName:精灵名字 * 参数 iFlipY:1 翻转 0不翻转(恢复原来朝向) */ extern void dSetSpriteFlipY( const char *szName, const int iFlipY ); 如果我们要让yellowfish在X方向上来回的游动,应该怎么过办呢?? 在step5中的if-else if语句中添加代码如下:    if(0 == iColSide)    { dSetSpriteFlipX(“yellowfish”, 0); //yellowfish不进行水平翻转,可以试试不加 //这句有什么效果    dSetSpriteLinearVelocity(yellowfi

文档评论(0)

sd44055 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档