📄 game.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 + -