Funcode-海底世界

news/2024/11/23 23:29:17/

实验内容
海底有五条鱼,其中四条来回随机游动,由玩家用键盘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();}}

http://www.ppmy.cn/news/569212.html

相关文章

宝藏生物世界高清图片素材推荐

关于生物世界高清图片素材肯定是很多人需要的东西&#xff0c;但是在找的时候总会出现各种问题&#xff0c;小编为大家总结了很多种类齐全&#xff0c;免费好用的素材&#xff0c;赶紧围观&#xff01; 本人曾经也是废大把时间寻找资源&#xff0c;质量还不咋地&#xff0c;但…

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

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

google海底光缆图_SubmarineCableMap:世界海底光缆分布图

海底光缆地图(Submarine Cable Map) 网站是一个通过网络地图来展示全球海底光缆区域分布图的站点&#xff0c;通过全球带宽的研究服务数据绘制而成&#xff0c;并根据获取的相关数据定期更新。 海底光缆是国际互联网的骨架。光缆的多少&#xff0c;代表一国与互联网的联系是否紧…

英国发现巨型失落海底世界:曾生活数万居民

英国圣安德鲁斯大学的潜水员发现了海底世界多格兰的遗迹&#xff0c;堪称英国版的亚特兰蒂斯 圣安德鲁斯大学地球科学系的理查德-贝茨博士&#xff0c;参与了多格兰的科学考察 英国地图。随着海平面上升&#xff0c;北海面积逐渐扩大&#xff0c;陆地则持续萎缩 在多格兰发现的…

【2014-06-07】-珠海长隆海底世界

出发 一大早就起床去公司集合&#xff0c;没有顺风车&#xff0c;早早就跑到公车站等着。 到了公司门口&#xff0c;已经来了很多人。基本上全到了。 坐了两个钟到珠海&#xff0c;导游安排好在小饭馆午餐。典型的坑啊&#xff0c;就和电视电影里那些旅行团一样&#xff0c;这饭…

【android游戏】海底世界

目录 1.游戏的运行窗口主类 2.游戏的开机动画类 3.游戏的菜单类 4.游戏的关于界面 5.游戏的主界面 6.游戏的常量类 7.游戏的玩家类 8.游戏的玩家子弹类 9.游戏的怪兽类 10.游戏的BOSS子弹类 11.游戏运行截图 1.游戏的运行窗口主类 import android.app.Activity; im…

【Bellhop】画图教程-对于平整海底画出海底部分

Bellhop对平整海底进行画图时&#xff0c;一般我们的计算是只显示海水部分&#xff08;如下图&#xff09;&#xff0c;有时候为了与不平整海底形成对比&#xff0c;需要画出平整海底。总之&#xff0c;一个很鸡肋的东西&#xff0c;但是需要的时候十分折磨人 对此&#xff0c;…

基于SpringBoot框架的水之森海底世界游玩系统

源码获取&#xff1a;私聊回复【SpringBoot、海底世界】获取 更多选题参考&#xff1a; Java练手项目 & 个人学习等选题参考 文章目录 一、背景及意义选题背景选题意义 二、总体设计主要功能运行环境 三、使用说明部分页面截图展示部分代码展示 提示&#xff1a;以下是本篇…