实验内容
海底有五条鱼,其中四条来回随机游动,由玩家用键盘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. .net之工作流工程展示及代码分享(二)工作流引擎
  2. ASP.NET MVC进阶三
  3. Ctrl与Caps Lock键的交换
  4. 计算机网络(十四)-CSMA/CD协议
  5. Android中数据的存储操作
  6. $SVN代码版本管理工具的使用
  7. asp打开exe执行本地程序._ASP.NET Core json配置文件
  8. Atitit. null错误的设计 使用Optional来处理null
  9. 安装java环境好_一键安装Java环境的好工具 你用了吗
  10. 编程中如何不使用中间变量的情况下将两个变量的值进行交换
  11. 基于Java的敬老院管理系统的设计和实现(论文+PPT+源码)
  12. 嵌入式状态机编程简介
  13. pandas中drop用法_机器学习笔记:Pandas的delete、drop函数的用法
  14. 不可替代的测试人:一文解释探索性测试是什么
  15. 水清冷冷:PSCC2021安装图文教程及学习技巧(附工具)
  16. 2019京东618活动提报要求一览
  17. 东南大学和南京大学的计算机哪个好考,江苏最好的5所211除了南京大学和东南大学2所985,谁是第五有争议...
  18. maven加载本地jar包,无法将本地jar包打进项目
  19. 数据泄露典型判例分析报告
  20. 【AI应用】NVIDIA GeForce RTX 3070的详情参数

热门文章

  1. Android输入系统IMS(1)--基础知识epoll和notify
  2. 调整和改编赛车游戏——更多的想法
  3. 超级签名企业签名免签封装微信多开自助分发多合一系统
  4. vue前端与Django后端查询一定时间段内的数据
  5. 【稳定性day8】付钱拉支付系统的高可用之路 - 避免和歼灭的两种打法
  6. 生产者-消费者问题 ——by一宇 2021-01-04
  7. 论文笔记:DS-SLAM
  8. (一)UVM验证平台搭建1
  9. 毕业设计-基于SpringBoot员工管理OA系统
  10. 龙芯PMON(2K1000)启动流程(一、总述)