⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game.cpp

📁 一个简单的RPG实现程序
💻 CPP
字号:
#include "Main.h"
#include "math.h"

Game *game;

Game::Game()
{
	graph = new Graph;
	sprite = new Sprite(640,100);
}

int Game::Init()
{
//-----------------------------播放音乐------------------------------
	MCI_OPEN_PARMS OpenParms;
	OpenParms.lpstrDeviceType = 
	(LPCSTR) MCI_DEVTYPE_SEQUENCER;
	OpenParms.lpstrElementName = (LPCSTR) "northspr.mid";
	OpenParms.wDeviceID = 0;
	mciSendCommand (NULL, MCI_OPEN, 
	MCI_WAIT | MCI_OPEN_TYPE | 
	MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT,
	(DWORD)(LPVOID) &OpenParms);
	MCI_PLAY_PARMS PlayParms;
	PlayParms.dwFrom = 0;
	mciSendCommand (OpenParms.wDeviceID, MCI_PLAY,
	MCI_FROM, (DWORD)(LPVOID)&PlayParms);
//-----------------------------初始化图像----------------------------
	graph->Init();
	return 1;
}

void Game::Refresh(char *text)
{
//-----------------------------得到当前时间--------------------------
	static int count=0;
	static int count1=0;
	static DWORD timee=0,timeb=0;
	static float time=0;
	count+=timee-timeb;
	count1+=timee-timeb;
	if (count>500)  //防止FPS变动过快
	{
		time=timee-timeb;
		count=0;
	}	
	timeb=GetTickCount();
//-----------------------------刷新屏幕------------------------------
	graph->Refresh(time,text);
//-----------------------------移动精灵------------------------------
	if (sprite->footStatus!=-1)
	{
		if (count1>100) //防止精灵的脚转换过快
		{
			sprite->footStatus=(sprite->footStatus+1)%4;
			count1=0;
		}
		float dx,dy;
		dx=sprite->targetX-sprite->x;
		dy=sprite->targetY-sprite->y;
		if ((abs(dx)>1)||(abs(dy)>1)) //如还未到目标
		{
			float newx=sprite->x+0.15*time*dx/(sqrt(dx*dx+dy*dy));
			float newy=sprite->y+0.15*time*dy/(sqrt(dx*dx+dy*dy));
			sprite->x=newx;
			sprite->y=newy;
		}
		else //已到目标
		{
			sprite->footStatus=-1;
		}
	}
//-----------------------------得到当前时间--------------------------
	timee=GetTickCount();
}

Game::~Game()
{
	delete graph;
	delete sprite;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -