Funcode-海底世界
实验内容
海底有五条鱼,其中四条来回随机游动,由玩家用键盘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-海底世界相关推荐
- Funcode海底世界c++(vc6)
海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 游戏初始界面如下图. 来回游动的四条鱼,从屏幕左边游进来,均已一个随机速度水平游动.从屏幕右侧游出去,很快 ...
- c语言funcode空格消失的函数,01北科大暑期计算机实践FunCode游戏设计+C++课程设计 - 海底世界 - 图文...
C++语言课程设计一海底世界 一.实验内容 海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 1. 游戏初始界面如下图. 2. 来回游动的四条鱼,从屏幕左边 ...
- funcode实验--海底世界(c++实现)
C++语言课程设计一海底世界 一.实验内容 海底有若干条鱼,其中若干条相同的鱼向一个方向游动,另一条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 1. 来回游动的鱼,从屏幕左 ...
- 中国电子学会青少年编程能力等级测试图形化一级编程题:海底世界
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 海底世界 1. 准备工作 (1)背景:U ...
- 电脑屏保海底世界_水下栖息地:人类能否在海洋中居住?真的有人住在海底吗?...
慧缘开运讲坛:真的有人住在海底吗?对于这个问题,你肯定首先会想到美人鱼,对于未知的事物,我们并没有证据证明它们的存在. 人类如何居住海底呢?那首先需要一个密闭的生态环境供进入海底的人生活.我们可以称之 ...
- java小程序-画一幅海底世界的图
老师让我们画一幅鱼在水中游动的图,完成了之后我又添加了一点天空啊山峰啊太阳啊小船啊,感觉挺有意思的.本来还想画云和鸟的,时间关系就没画了. 代码其实也就是画些圆和矩形不断的在那儿鼓捣,也就没添加注释了 ...
- 【电子学会】2020年12月图形化一级 -- 海底世界
海底世界 1. 准备工作 (1)背景:Underwater 1: (2)角色:Fish.Starfish. 2. 功能实现 (1)如上图所示设置Fish初始位置为舞台上方的左侧,面向右:设置Starf ...
- 少儿编程scratch课程-海底世界
引入 1.主题引入:今天学习的主题为海底世界,让小朋友们想一想海底世界应该有什么动物.植物.背景,它们都分别在做什么. 2.软件引入:使用一个新的软件scratch,利用图形化编程的思维了解软件和搭建 ...
- 海洋主题绘画_海底世界创意绘画作品欣赏
绘画作为人们认知世界的一种方式,从人类社会诞生之初就发挥着它独特的作用.学习啦小编整理了海底世界创意绘画作品,欢迎阅读! 海底世界创意绘画作品图片展示 海底世界儿童画图片 海底世界儿童画作品 海底世界 ...
- 未来想象计算机图片儿童版,想象未来的海底世界儿童画作品大全
想象未来的海底世界儿童画作品大全 导语:当海面上波涛汹涌的时候,海底依然是宁静的.那么,海底是否一点儿声音没有呢?下面是小编为您整理的儿童画,希望对您有所帮助. 海洋是生命的源泉,是人们生活中必不可少 ...
最新文章
- 危!我用python克隆了女朋友的声音!
- android判断和创建快捷方式(4.03测试通过)
- 使用action framework 实现order change时自动发送邮件
- 《JS权威指南学习总结--9.5 类和类型》
- Linux内存管理:分页
- application实现网页计数_手把手教你利用爬虫爬网页(Python代码)
- 算法--最大连续子序列和(动态规划,分而治之)
- 集群起不来oracle,Oracle11g rac 集群无法启动分析及处理
- 论文阅读-Rethinking ImageNet Pre-trainging
- 游戏设计学习笔记 —— 梦的开始
- 学猫叫用计算机歌词,抖音学猫叫是什么歌 学猫叫歌曲歌词
- 小智直播配置安装-配置录播,回放
- 真c++ 从二叉树到红黑树(2)之二叉树基类
- 计算机高级系统设置无法设置,win10系统打开高级设置的详细方法
- 《从案例中学习JavaScript》之实现对话效果
- Fragment中使用listview
- 快速简单爬取携程酒店信息简介
- 黑马程序员--7K面试题--交通灯管理系统
- 苹果iOS11开发者预览版beta9固件更新发布
- Cannot retrieve repository metadata (repomd.xml) for repository: epel. Please verify its path and tr