实验内容
海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动。
要求如下:
1、游戏初始界面如下图。
2、来回游动的四条鱼,从屏幕左边游进来,均已一个随机速度水平游动。从屏幕右侧游出去,很快又从屏幕右侧游出来,就这样来回游动。
3、玩家用WASD键控制一条鱼向上、左、下、右方向游动。松开按键时,玩家的鱼就停止游动。
4、玩家的鱼游到屏幕边界时,不能继续往前游。

#include <Stdio.h>
#include "CommonAPI.h"
#include "LessonX.h"//
//
int         g_iGameState        =  1;      // ÓÎϷ״̬£¬0 -- ÓÎÏ·½áÊøµÈ´ý¿ªÊ¼×´Ì¬£»1 -- °´Ï¿ոñ¼ü¿ªÊ¼£¬³õʼ»¯ÓÎÏ·£»2 -- ÓÎÏ·½øÐÐÖÐ
//
float       g_fScreenLeft       =  0.f;    // ÆÁÄ»×ó±ß½çÖµ
float       g_fScreenRight  =  0.f;    // ÓÒ
float       g_fScreenTop        =  0.f;    // ÉÏ
float       g_fScreenBottom =  0.f;    // ÏÂfloat      g_fSpeedLeft        =  0.f;    // ×ó·½ÏòËÙ¶È
float       g_fSpeedRight       =  0.f;    // ÓÒ
float       g_fSpeedTop     =  0.f;    // ÉÏ
float       g_fSpeedBottom  =  0.f;    // ÏÂvoid       GameInit();
void        GameRun( float fDeltaTime );
void        GameEnd();//==============================================================================
//
// ´óÌåµÄ³ÌÐòÁ÷³ÌΪ£ºGameMainLoopº¯ÊýΪÖ÷Ñ­»·º¯Êý£¬ÔÚÒýÇæÿ֡ˢÐÂÆÁĻͼÏñÖ®ºó£¬¶¼»á±»µ÷ÓÃÒ»´Î¡£//==============================================================================
//
// ÓÎÏ·Ö÷Ñ­»·£¬´Ëº¯Êý½«±»²»Í£µÄµ÷Óã¬ÒýÇæÿˢÐÂÒ»´ÎÆÁÄ»£¬´Ëº¯Êý¼´±»µ÷ÓÃÒ»´Î
// ÓÃÒÔ´¦ÀíÓÎÏ·µÄ¿ªÊ¼¡¢½øÐÐÖС¢½áÊøµÈ¸÷ÖÖ״̬.
// º¯Êý²ÎÊýfDeltaTime : Éϴε÷Óñ¾º¯Êýµ½´Ë´Îµ÷Óñ¾º¯ÊýµÄʱ¼ä¼ä¸ô£¬µ¥Î»£ºÃë
void GameMainLoop( float    fDeltaTime )
{switch( g_iGameState ){// ³õʼ»¯ÓÎÏ·£¬Çå¿ÕÉÏÒ»¾ÖÏà¹ØÊý¾Ýcase 1:{GameInit();g_iGameState    =  2; // ³õʼ»¯Ö®ºó£¬½«ÓÎϷ״̬ÉèÖÃΪ½øÐÐÖÐ}break;// ÓÎÏ·½øÐÐÖУ¬´¦Àí¸÷ÖÖÓÎÏ·Âß¼­case 2:{// TODO Ð޸Ĵ˴¦ÓÎÏ·Ñ­»·Ìõ¼þ£¬Íê³ÉÕýÈ·ÓÎÏ·Âß¼­if( true ){GameRun( fDeltaTime );}else{// ÓÎÏ·½áÊø¡£µ÷ÓÃÓÎÏ·½áË㺯Êý£¬²¢°ÑÓÎϷ״̬ÐÞ¸ÄΪ½áÊø״̬g_iGameState    =  0;GameEnd();}}break;// ÓÎÏ·½áÊø/µÈ´ý°´¿Õ¸ñ¼ü¿ªÊ¼case 0:default:break;};
}//==============================================================================
//
// ÿ¾Ö¿ªÊ¼Ç°½øÐгõʼ»¯£¬Çå¿ÕÉÏÒ»¾ÖÏà¹ØÊý¾Ý
void GameInit()
{g_fScreenLeft=dGetScreenLeft();g_fScreenRight=dGetScreenRight();g_fScreenTop=dGetScreenTop();g_fScreenBottom=dGetScreenBottom();for(int i=0; i<4; i++){char  szName[128];float fPosX, fPosY;float fSpeedX;sprintf(szName, "yu_%d", i);dSetSpriteWorldLimit(szName, WORLD_LIMIT_NULL, g_fScreenLeft-20.f, g_fScreenTop, g_fScreenRight+20.f, g_fScreenBottom);fPosX =(float)dRandomRange((int)g_fScreenLeft+10, (int)g_fScreenRight-10);fPosY =(float)dRandomRange((int)g_fScreenTop+10, (int)g_fScreenBottom-10);dSetSpritePosition(szName, fPosX, fPosY);fSpeedX=(float)dRandomRange(10, 20);dSetSpriteLinearVelocity(szName, fSpeedX, 0);}dSetSpriteWorldLimit("fish", WORLD_LIMIT_NULL, g_fScreenLeft, g_fScreenTop, g_fScreenRight, g_fScreenBottom);}
//==============================================================================
//
// ÿ¾ÖÓÎÏ·½øÐÐÖÐ
void GameRun( float fDeltaTime )
{}
//==============================================================================
//
// ±¾¾ÖÓÎÏ·½áÊø
void GameEnd()
{}
//==========================================================================
//
// Êó±êÒƶ¯
// ²ÎÊý fMouseX, fMouseY£ºÎªÊó±êµ±Ç°×ø±ê
void OnMouseMove( const float fMouseX, const float fMouseY )
{}
//==========================================================================
//
// Êó±êµã»÷
// ²ÎÊý iMouseType£ºÊó±ê°´¼üÖµ£¬¼û enum MouseTypes ¶¨Òå
// ²ÎÊý fMouseX, fMouseY£ºÎªÊó±êµ±Ç°×ø±ê
void OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )
{}
//==========================================================================
//
// Êó±êµ¯Æð
// ²ÎÊý iMouseType£ºÊó±ê°´¼üÖµ£¬¼û enum MouseTypes ¶¨Òå
// ²ÎÊý fMouseX, fMouseY£ºÎªÊó±êµ±Ç°×ø±ê
void OnMouseUp( const int iMouseType, const float fMouseX, const float fMouseY )
{}
void Swimming()
{if((g_fSpeedLeft + g_fSpeedRight) > 0.f)dSetSpriteFlipX("fish", false);if((g_fSpeedLeft + g_fSpeedRight) < 0.f)dSetSpriteFlipX("fish", true);dSetSpriteLinearVelocity("fish", g_fSpeedLeft+g_fSpeedRight, g_fSpeedTop+g_fSpeedBottom);
}
//==========================================================================
//
// ¼üÅÌ°´ÏÂ
// ²ÎÊý iKey£º±»°´Ïµļü£¬Öµ¼û enum KeyCodes ºê¶¨Òå
// ²ÎÊý iAltPress, iShiftPress£¬iCtrlPress£º¼üÅÌÉϵŦÄܼüAlt£¬Ctrl£¬Shiftµ±Ç°ÊÇ·ñÒ²´¦ÓÚ°´ÏÂ״̬(0δ°´Ï£¬1°´ÏÂ)
void OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress )
{switch(iKey){case KEY_W:   {g_fSpeedTop = -10.f;break;}case KEY_A:{g_fSpeedLeft = -15.f;     break;}case KEY_S:  {g_fSpeedBottom = 10.f;break;}case KEY_D:{g_fSpeedRight = 15.f;       break;}default:break;}Swimming();
}
//==========================================================================
//
// ¼üÅ̵¯Æð
// ²ÎÊý iKey£ºµ¯ÆðµÄ¼ü£¬Öµ¼û enum KeyCodes ºê¶¨Òå
void OnKeyUp( const int iKey )
{switch(iKey){case KEY_W:{g_fSpeedTop=0.f;break;}case KEY_S:{g_fSpeedBottom=0.f;break;}case KEY_A:{g_fSpeedLeft=0.f;break;}case KEY_D:{g_fSpeedRight=0.f;break;}}Swimming();
}
//===========================================================================
//
// ¾«ÁéÓ뾫ÁéÅöײ
// ²ÎÊý szSrcName£º·¢ÆðÅöײµÄ¾«ÁéÃû×Ö
// ²ÎÊý szTarName£º±»ÅöײµÄ¾«ÁéÃû×Ö
void OnSpriteColSprite( const char *szSrcName, const char *szTarName )
{}
//===========================================================================
//
// ¾«ÁéÓëÊÀ½ç±ß½çÅöײ
// ²ÎÊý szName£ºÅöײµ½±ß½çµÄ¾«ÁéÃû×Ö
// ²ÎÊý iColSide£ºÅöײµ½µÄ±ß½ç 0 ×ó±ß£¬1 Óұߣ¬2 Éϱߣ¬3 ϱß
void OnSpriteColWorldLimit( const char *szName, const int iColSide )
{bool       bFlip;float     fSpeedX;float       fPosY;if(strstr(szName, "yu_")!=NULL){if(iColSide == 1)  // ÓÒ±ß{bFlip = true;fSpeedX = -(float)dRandomRange(10, 20);    // Ëæ»úËÙ¶È}elseif(iColSide == 0)   // ×ó±ß{bFlip = false;fSpeedX = (float)dRandomRange(10, 20);     // Ëæ»úËÙ¶È}dSetSpriteFlipX(szName, bFlip);dSetSpriteLinearVelocity(szName, fSpeedX, 0);// ÿ´Îµ÷ͷʱ£¬Î»ÖÃÊÇËæ»úµÄfPosY =(float)dRandomRange((int)g_fScreenTop+10,(int)g_fScreenBottom-10);dSetSpritePositionY(szName, fPosY);}if(strcmp(szName,"fish")==0){if(iColSide==0)g_fSpeedLeft=0;elseif(iColSide==1)g_fSpeedRight=0;elseif(iColSide==2)g_fSpeedTop=0;else g_fSpeedBottom=0;Swimming();}}

Funcode-海底世界相关推荐

  1. Funcode海底世界c++(vc6)

    海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 游戏初始界面如下图. 来回游动的四条鱼,从屏幕左边游进来,均已一个随机速度水平游动.从屏幕右侧游出去,很快 ...

  2. c语言funcode空格消失的函数,01北科大暑期计算机实践FunCode游戏设计+C++课程设计 - 海底世界 - 图文...

    C++语言课程设计一海底世界 一.实验内容 海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 1. 游戏初始界面如下图. 2. 来回游动的四条鱼,从屏幕左边 ...

  3. funcode实验--海底世界(c++实现)

    C++语言课程设计一海底世界 一.实验内容 海底有若干条鱼,其中若干条相同的鱼向一个方向游动,另一条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 1. 来回游动的鱼,从屏幕左 ...

  4. 中国电子学会青少年编程能力等级测试图形化一级编程题:海底世界

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 海底世界 1. 准备工作 (1)背景:U ...

  5. 电脑屏保海底世界_水下栖息地:人类能否在海洋中居住?真的有人住在海底吗?...

    慧缘开运讲坛:真的有人住在海底吗?对于这个问题,你肯定首先会想到美人鱼,对于未知的事物,我们并没有证据证明它们的存在. 人类如何居住海底呢?那首先需要一个密闭的生态环境供进入海底的人生活.我们可以称之 ...

  6. java小程序-画一幅海底世界的图

    老师让我们画一幅鱼在水中游动的图,完成了之后我又添加了一点天空啊山峰啊太阳啊小船啊,感觉挺有意思的.本来还想画云和鸟的,时间关系就没画了. 代码其实也就是画些圆和矩形不断的在那儿鼓捣,也就没添加注释了 ...

  7. 【电子学会】2020年12月图形化一级 -- 海底世界

    海底世界 1. 准备工作 (1)背景:Underwater 1: (2)角色:Fish.Starfish. 2. 功能实现 (1)如上图所示设置Fish初始位置为舞台上方的左侧,面向右:设置Starf ...

  8. 少儿编程scratch课程-海底世界

    引入 1.主题引入:今天学习的主题为海底世界,让小朋友们想一想海底世界应该有什么动物.植物.背景,它们都分别在做什么. 2.软件引入:使用一个新的软件scratch,利用图形化编程的思维了解软件和搭建 ...

  9. 海洋主题绘画_海底世界创意绘画作品欣赏

    绘画作为人们认知世界的一种方式,从人类社会诞生之初就发挥着它独特的作用.学习啦小编整理了海底世界创意绘画作品,欢迎阅读! 海底世界创意绘画作品图片展示 海底世界儿童画图片 海底世界儿童画作品 海底世界 ...

  10. 未来想象计算机图片儿童版,想象未来的海底世界儿童画作品大全

    想象未来的海底世界儿童画作品大全 导语:当海面上波涛汹涌的时候,海底依然是宁静的.那么,海底是否一点儿声音没有呢?下面是小编为您整理的儿童画,希望对您有所帮助. 海洋是生命的源泉,是人们生活中必不可少 ...

最新文章

  1. 危!我用python克隆了女朋友的声音!
  2. android判断和创建快捷方式(4.03测试通过)
  3. 使用action framework 实现order change时自动发送邮件
  4. 《JS权威指南学习总结--9.5 类和类型》
  5. Linux内存管理:分页
  6. application实现网页计数_手把手教你利用爬虫爬网页(Python代码)
  7. 算法--最大连续子序列和(动态规划,分而治之)
  8. 集群起不来oracle,Oracle11g rac 集群无法启动分析及处理
  9. 论文阅读-Rethinking ImageNet Pre-trainging
  10. 游戏设计学习笔记 —— 梦的开始
  11. 学猫叫用计算机歌词,抖音学猫叫是什么歌 学猫叫歌曲歌词
  12. 小智直播配置安装-配置录播,回放
  13. 真c++ 从二叉树到红黑树(2)之二叉树基类
  14. 计算机高级系统设置无法设置,win10系统打开高级设置的详细方法
  15. 《从案例中学习JavaScript》之实现对话效果
  16. Fragment中使用listview
  17. 快速简单爬取携程酒店信息简介
  18. 黑马程序员--7K面试题--交通灯管理系统
  19. 苹果iOS11开发者预览版beta9固件更新发布
  20. Cannot retrieve repository metadata (repomd.xml) for repository: epel. Please verify its path and tr

热门文章

  1. 计算机专业学生面临的挑战和对策,全国计算机等级考试面临挑战和对策.doc
  2. 浅谈程序员的数学修养(转载)
  3. ddek导轨式公寓管理模块的原理和功能
  4. 视觉slam14讲之相机与框架
  5. 阿里大咖精心烹饪整理85道Java微服务面试题(附答案)
  6. 基于卡尔曼滤波的微电网调度(Matlab代码实现)
  7. 未来的程序员还会有今天的收入吗?
  8. DCIM目录下的.thumbnails文件夹和处理
  9. C语言语法复习-猜数小游戏
  10. Resnet-18的搭建