简单的游戏逻辑,用C++ console来实现简单的逻辑

本文介绍了游戏开发中常见的游戏循环结构,详细解释了如何通过定时器和帧率管理器来控制游戏帧率,确保玩家获得平滑的游戏体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们玩的游戏,都逃不过这样的一个循环 初始化-> while循环(Update 和 render)-> 游戏


结束,释放空间。大致如下:
 void main()
 {
        void init();
        while(true)
        {
                update();
                render();
        }
        exit();
}
首先是update,在update里面要实现 帧的更新。一般30帧眼睛就看不过来了。首先我们实


现30 frame per second。 如果我们电脑性能比较好,那么执行代码速度快,我们就必须


Sleep下来等待一定的时间,之后在进行下一步代码如下:

class Timer
{
public:
	Timer():m_curTime(clock()),m_perTime(m_curTime){}
	void GetCurrentTime();
	void RefreshTime();
	int GetDuringRun();

private:
	clock_t m_curTime;
	clock_t m_perTime;
};
void Timer::GetCurrentTime()
{
	m_curTime=clock();
}
void Timer::RefreshTime()
{
	m_perTime=m_curTime;
}
int Timer::GetDuringRun()
{
	return m_curTime-m_perTime;
}

#define COSTTIMEPERFRAME 33 
class FPSManager
{
public:
	static FPSManager* InitFPSManager();
	void RefreshFPS();
	int SleepTime();
private:
	FPSManager():m_updateTime(Timer()),m_count(0){};
	void DisplayFPS();
	static FPSManager* s_FPSManager;
	Timer m_updateTime;
	Timer m_displayTime;
	unsigned int m_count;
};
void FPSManager::DisplayFPS()
{
	cout<<"the FPS is : "<<m_count<<endl;
}
void FPSManager::RefreshFPS()
{
	m_count++;
}
FPSManager* FPSManager::s_FPSManager=NULL;
FPSManager* FPSManager::InitFPSManager()
{
	if(s_FPSManager==NULL)
	{
		s_FPSManager=new FPSManager();
	}
	return s_FPSManager;
}
int FPSManager::SleepTime()
{
	m_updateTime.GetCurrentTime();
	int time=(m_updateTime.GetDuringRun());
	m_updateTime.RefreshTime();
	return time;
}

上面是我写的一个FPS类和一个Timer类用 现在写一个main去实现帧的更新:

首先是update,在update里面要实现 帧的更新。一般30帧眼睛就看不过来了。首先我们实现30 frame per second。 如果我们电脑性能比较好,那么执行代码速度快,我们就必须Sleep下来等待一定的时间,之后在进行下一步

代码如下:


void main()
{
FPSManager* fps=FPSManager::InitFPSManager();
while(true)
{
fps->RefreshFPS();
//fps->DisplayFPS();
int time=fps->SleepTime();
Sleep(time);
}
system("pause");
}

下次在更新其他的 ,比如按键事件和写一个状态机来实现一个游戏基本元素。并且FPS的更新和游戏没有多大的联系可以放入一个线程让它一直去执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值