Funcode游戏设计C语言小飞虫

Funcode游戏制作


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、基于Funcode的小飞虫

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.游戏效果图

在这里插入图片描述

2.游戏代码

#include <Stdio.h>
#include "CommonAPI.h"
#include "LessonX.h"

//
//
int			g_iGameState		=	0;		// 游戏状态,0 -- 游戏结束等待开始状态;1 -- 按下空格键开始,初始化游戏;2 -- 游戏进行中
//
void		GameInit();
void		GameRun( float fDeltaTime );
void		GameEnd();
float       g_gameTime=10.f;
float       g_gameScore=0.f;
float		f_PaiziPosX=0.f;
float		f_PaiziPosY=0.f;
//拍子的初始角度  通过拍子的初始角度来进行拍的动作
float		fOldPaiziRotation=0.f;
//定义最高分数
int g_HightScore[5];
//拍子的重置时间
float		fResetPaiziRotation=0.f;
//定义变量 初始化虫子的初始位置  初始速度 最终位置
float		fPosx=0.f,fPosy=0.f,fPosxToWhere=0.f,fPosyToWhere=0.f,fSpeed=0.f;
//定义变量 初始化屏幕的上下左右坐标
float		fScreenLeft=0.f,fScreenRight=0.f,fScreenTop=0.f,fScreenBottom=0.f;
//定义结构体 表达多个虫子
struct FlyBug
{
	char szName[128];
	int iScore;
}FlyBugs[15];
//定义飞虫的数量
int g_iCount=0;
//==============================================================================
//
// 大体的程序流程为:GameMainLoop函数为主循环函数,在引擎每帧刷新屏幕图像之后,都会被调用一次。


//==============================================================================
//
// 游戏主循环,此函数将被不停的调用,引擎每刷新一次屏幕,此函数即被调用一次
// 用以处理游戏的开始、进行中、结束等各种状态. 
// 函数参数fDeltaTime : 上次调用本函数到此次调用本函数的时间间隔,单位:秒
void GameMainLoop( float	fDeltaTime )
{
	switch( g_iGameState )
	{
		// 初始化游戏,清空上一局相关数据
	case 1:
		{
			GameInit();
			g_iGameState	=	2; // 初始化之后,将游戏状态设置为进行中
		}
		break;

		// 游戏进行中,处理各种游戏逻辑
	case 2:
		{
			// TODO 修改此处游戏循环条件,完成正确游戏逻辑
			g_gameTime-=fDeltaTime;  //实现倒计时的效果 一次减 一秒
			if( g_gameTime>0 )
			{
				GameRun( fDeltaTime );
			}
			else
			{
				// 游戏结束。调用游戏结算函数,并把游戏状态修改为结束状态
				g_iGameState	=	0;
				GameEnd();
			}
		}
		break;

		// 游戏结束/等待按空格键开始
	case 0:
	default:
		break;
	};
}

//==============================================================================
//
// 每局开始前进行初始化,清空上一局相关数据
void GameInit()
{
	g_gameTime=10.f;  //设置时间为10秒
	f_PaiziPosX=dGetSpritePositionX("paizi");
	f_PaiziPosY=dGetSpritePositionY("paizi");  //获取排子的位置
	fOldPaiziRotation=dGetSpriteRotation("paizi");//获取拍子角度的
	fScreenBottom=dGetScreenBottom(); //返回值下边坐标值
	fScreenLeft=dGetScreenLeft();  //返回值左边坐标值
	fScreenRight=dGetScreenRight(); //右边坐标值
	fScreenTop=dGetScreenTop();  //返回值上边坐标值
	dSetSpriteVisible("kaishi",0);    //将开始文字隐藏起来
	dSetTextValue("Time",g_gameTime);   //文字精灵显示某个数字
	dSetTextValue("Score",g_gameScore); 
	dShowCursor(0);  //将鼠标隐藏
	AddFlyBugs();//建立五个大虫 七个小虫
	for (int i=0;i<g_iCount;i++)
	{
		if (FlyBugs[i].iScore==1)
		{
			dCloneSprite("feichong_muban1",FlyBugs[i].szName);
		}else if (FlyBugs[i].iScore==2)
		{
			dCloneSprite("feichong_muban2",FlyBugs[i].szName);
		}
		
		dSetSpriteWorldLimit(FlyBugs[i].szName,WORLD_LIMIT_NULL,fScreenLeft-10,fScreenTop-10,fScreenRight+10,fScreenBottom+10);
		Flying(FlyBugs[i].szName);
	}
	/*
	这是一开始只有一只虫子的时候 上面for循环是多个虫子的定义与克隆
	dCloneSprite("feichong_muban1","feichong_0");
	dSetSpriteWorldLimit("feichong_0",WORLD_LIMIT_NULL,fScreenLeft-10,fScreenTop-10,fScreenRight+10,fScreenBottom+10);
	
	Flying();  //注意 一定要把Flying放在世界边界之后,否则精灵飞出去找不到了
	*/
}
//==============================================================================
//
// 每局游戏进行中
void GameRun( float fDeltaTime )
{
	//实现拍子的动作
	if(fResetPaiziRotation>0)
	{
		fResetPaiziRotation-=fDeltaTime;  //获取程序运行的时间
		if(fResetPaiziRotation<0)
		{
			dSetSpriteRotation("paizi",fOldPaiziRotation);
		}
	}
	dSetTextValue("Time",g_gameTime);  //获取g_gameTime实时显示文字倒计时信息
	dSetTextValue("Score",g_gameScore);//设置分数
	
}

总结

该游戏主要通过结构体数组来控制生成的飞虫的属性,
缺点是飞虫的数量是确定的。
且学习到了用 sprintf 函数 拼接字符
sprintf(FlyBugs[g_iCount].szName,"feichong_%d",g_iCount);

源代码及完整游戏资源

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越狱兔崽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值