📄 eatapple.cpp
字号:
g_iHits = 0;
g_iFruitNumber = 8;
// Restart the background music
g_pGame->PlayMIDISong();
}
}
void MouseButtonUp(int x, int y, BOOL bLeft)
{
}
void MouseMove(int x, int y)
{
g_pMouseSprite[current]->SetPosition(x - (g_pMouseSprite[current]->GetWidth() / 2),
y - (g_pMouseSprite[current]->GetHeight() / 2));
}
void HandleJoystick(JOYSTATE jsJoystickState)
{
}
BOOL SpriteCollision(Sprite* pSpriteHitter, Sprite* pSpriteHittee)
{
// Only check for collision between sprites that aren't hidden
if (!pSpriteHitter->IsHidden() && !pSpriteHittee->IsHidden())
{
if (((pSpriteHitter == g_pTargetSprite[0])||(pSpriteHitter == g_pTargetSprite[1])||
(pSpriteHitter == g_pTargetSprite[2])||(pSpriteHitter == g_pTargetSprite[3])) &&
((pSpriteHittee == g_pFruitSprite[0])||(pSpriteHittee == g_pFruitSprite[1])||
(pSpriteHittee == g_pFruitSprite[4])||(pSpriteHittee == g_pFruitSprite[5])||
(pSpriteHittee == g_pFruitSprite[8])||(pSpriteHittee == g_pFruitSprite[9])||
(pSpriteHittee == g_pFruitSprite[12])||(pSpriteHittee == g_pFruitSprite[13])
))
{
PlaySound((LPCSTR)IDW_EATING, g_hInstance, SND_ASYNC | SND_RESOURCE);
pSpriteHitter->SetHidden(TRUE);
g_pFruitSprite[cur]->SetHidden(TRUE);
g_pFruitSprite[cur+2]->SetHidden(TRUE);
cur+=4;
if(cur==16) cur=1;
g_iFruitNumber--;
RECT Bounds = {500,20,580,90};
RECT rcPos;
rcPos = pSpriteHitter->GetPosition();
Sprite* pSprite = new Sprite(g_pEatingBitmap, Bounds);
pSprite->SetNumFrames(1, TRUE);
pSprite->SetFrameDelay(20);
pSprite->SetPosition(rcPos.left, rcPos.top);
g_pGame->AddSprite(pSprite);
}
}
//see if game over
if (g_iFruitNumber==0)
{
// Play the game over sound
// PlaySound((LPCSTR)IDW_CRASH, g_hInstance, SND_ASYNC |
// SND_RESOURCE);
// End the game
g_bGameOver=TRUE;
PlaySound((LPCSTR)IDW_GAMEOVER, g_hInstance, SND_ASYNC | SND_RESOURCE);
g_iGameOverDelay = 100;
}
return FALSE;
}
void SpriteDying(Sprite* pSpriteDying)
{
}
//-----------------------------------------------------------------
// Functions
//-----------------------------------------------------------------
void NewGame()
{
g_pGame->PlayMIDISong(TEXT("Music.mid"));
// Clear the sprites
g_pGame->CleanupSprites();
// Initialize the game variables
ShoutNumber=2;
g_iFruitNumber=8;
g_iTime=20;
g_iTemp=30;
g_iTargetDelay=50;
g_iHits=0;
g_iScore=0;
IsClickPlane=FALSE;
// g_iGametime=0.0;//用于产生曲线的时间参数
current=0;
cur=0;
g_bGameOver = FALSE;
// Create the fruit and target sprites
RECT rcBounds = { 0, 50, 995, 724};
g_pBottomSprite=new Sprite(g_pBottomBitmap,rcBounds);
g_pBottomSprite->SetNumFrames(1);
g_pBottomSprite->SetPosition(0,518);
g_pBottomSprite->SetHidden(FALSE);
g_pBottomSprite->SetZOrder(1);
g_pGame->AddSprite(g_pBottomSprite);
g_pPlane= new Sprite(g_pPlaneBitmap, rcBounds,BA_WRAP);
g_pPlane->SetNumFrames(1);
g_pPlane->SetPosition(900,25);
g_pGame->AddSprite(g_pPlane);
g_pTargetSprite[0] = new Sprite(g_pTargetBitmap, rcBounds,BA_STOP,FALSE);
g_pTargetSprite[0]->SetNumFrames(2);
g_pTargetSprite[0]->SetZOrder(0);
g_pTargetSprite[0]->SetHidden(TRUE);
g_pGame->AddSprite(g_pTargetSprite[0]);
g_pTargetSprite[1] = new Sprite(g_pTargetBitmap, rcBounds,BA_STOP,FALSE);
g_pTargetSprite[1]->SetNumFrames(2);
g_pTargetSprite[1]->SetZOrder(0);
g_pTargetSprite[1]->SetHidden(TRUE);
g_pGame->AddSprite(g_pTargetSprite[1]);
g_pTargetSprite[2] = new Sprite(g_pTargetBitmap, rcBounds,BA_STOP,FALSE);
g_pTargetSprite[2]->SetNumFrames(2);
g_pTargetSprite[2]->SetZOrder(0);
g_pTargetSprite[2]->SetHidden(TRUE);
g_pGame->AddSprite(g_pTargetSprite[2]);
g_pTargetSprite[3] = new Sprite(g_pTargetBitmap, rcBounds,BA_STOP,FALSE);
g_pTargetSprite[3]->SetNumFrames(2);
g_pTargetSprite[3]->SetZOrder(0);
g_pTargetSprite[3]->SetHidden(TRUE);
g_pGame->AddSprite(g_pTargetSprite[3]);
RECT rcBound={400,70,610,200};
g_pFruitSprite[0]=new Sprite(g_pGrapeBitmap, rcBound);
g_pFruitSprite[0]->SetNumFrames(1);
g_pFruitSprite[0]->SetPosition(430,100);
g_pFruitSprite[0]->SetZOrder(3);
g_pFruitSprite[0]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[0]);
g_pFruitSprite[1] = new Sprite(g_pGrapeBitmap, rcBound);
g_pFruitSprite[1]->SetNumFrames(1);
g_pFruitSprite[1]->SetPosition(485,90);
g_pFruitSprite[1]->SetZOrder(2);
g_pFruitSprite[1]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[1]);
g_pFruitSprite[2] = new Sprite(g_pGrapeBitmap, rcBounds);
g_pFruitSprite[2]->SetNumFrames(1);
g_pFruitSprite[2]->SetPosition(60,570);
g_pFruitSprite[2]->SetZOrder(2);
g_pFruitSprite[2]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[2]);
g_pFruitSprite[3] = new Sprite(g_pGrapeBitmap, rcBounds);
g_pFruitSprite[3]->SetNumFrames(1);
g_pFruitSprite[3]->SetPosition(290,585);
g_pFruitSprite[3]->SetZOrder(3);
g_pFruitSprite[3]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[3]);
g_pFruitSprite[4]= new Sprite(g_pBananaBitmap, rcBound);
g_pFruitSprite[4]->SetNumFrames(1);
g_pFruitSprite[4]->SetPosition(450,93);
g_pFruitSprite[4]->SetZOrder(2);
g_pFruitSprite[4]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[4]);
g_pFruitSprite[5]= new Sprite(g_pBananaBitmap, rcBound);
g_pFruitSprite[5]->SetNumFrames(1);
g_pFruitSprite[5]->SetPosition(500,91);
g_pFruitSprite[5]->SetZOrder(2);
g_pFruitSprite[5]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[5]);
g_pFruitSprite[6]= new Sprite(g_pBananaBitmap, rcBounds);
g_pFruitSprite[6]->SetNumFrames(1);
g_pFruitSprite[6]->SetPosition(130,560);
g_pFruitSprite[6]->SetZOrder(1);
g_pFruitSprite[6]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[6]);
g_pFruitSprite[7]= new Sprite(g_pBananaBitmap, rcBounds);
g_pFruitSprite[7]->SetNumFrames(1);
g_pFruitSprite[7]->SetPosition(280,630);
g_pFruitSprite[7]->SetZOrder(2);
g_pFruitSprite[7]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[7]);
g_pFruitSprite[8]= new Sprite(g_pStrwberryBitmap, rcBound);
g_pFruitSprite[8]->SetNumFrames(1);
g_pFruitSprite[8]->SetPosition(474,111);
g_pFruitSprite[8]->SetZOrder(2);
g_pFruitSprite[8]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[8]);
g_pFruitSprite[9]= new Sprite(g_pStrwberryBitmap, rcBound);
g_pFruitSprite[9]->SetNumFrames(1);
g_pFruitSprite[9]->SetPosition(496,120);
g_pFruitSprite[9]->SetZOrder(3);
g_pFruitSprite[9]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[9]);
g_pFruitSprite[10]= new Sprite(g_pStrwberryBitmap, rcBounds);
g_pFruitSprite[10]->SetNumFrames(1);
g_pFruitSprite[10]->SetPosition(226,590);
g_pFruitSprite[10]->SetZOrder(3);
g_pFruitSprite[10]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[10]);
g_pFruitSprite[11]= new Sprite(g_pStrwberryBitmap, rcBounds);
g_pFruitSprite[11]->SetNumFrames(1);
g_pFruitSprite[11]->SetPosition(146,630);
g_pFruitSprite[11]->SetZOrder(2);
g_pFruitSprite[11]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[11]);
g_pFruitSprite[12]= new Sprite(g_pPearBitmap, rcBound);
g_pFruitSprite[12]->SetNumFrames(1);
g_pFruitSprite[12]->SetPosition(530,97);
g_pFruitSprite[12]->SetZOrder(2);
g_pFruitSprite[12]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[12]);
g_pFruitSprite[13]= new Sprite(g_pPearBitmap, rcBound);
g_pFruitSprite[13]->SetNumFrames(1);
g_pFruitSprite[13]->SetPosition(500,97);
g_pFruitSprite[13]->SetZOrder(2);
g_pFruitSprite[13]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[13]);
g_pFruitSprite[14]= new Sprite(g_pPearBitmap, rcBounds);
g_pFruitSprite[14]->SetNumFrames(1);
g_pFruitSprite[14]->SetPosition(70,630);
g_pFruitSprite[14]->SetZOrder(1);
g_pFruitSprite[14]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[14]);
g_pFruitSprite[15]= new Sprite(g_pPearBitmap, rcBounds);
g_pFruitSprite[15]->SetNumFrames(1);
g_pFruitSprite[15]->SetPosition(200,630);
g_pFruitSprite[15]->SetZOrder(1);
g_pFruitSprite[15]->SetHidden(FALSE);
g_pGame->AddSprite(g_pFruitSprite[15]);
g_pBasketSprite[0]= new Sprite(g_pFrontbasketBitmap, rcBound);
g_pBasketSprite[0]->SetPosition(430,130);
g_pBasketSprite[0]->SetNumFrames(1);
g_pBasketSprite[0]->SetZOrder(3);
g_pBasketSprite[0]->SetHidden(FALSE);
g_pGame->AddSprite(g_pBasketSprite[0]);
g_pBasketSprite[1]= new Sprite(g_pBackbasketBitmap, rcBound);
g_pBasketSprite[1]->SetNumFrames(1);
g_pBasketSprite[1]->SetPosition(450,120);
g_pBasketSprite[1]->SetZOrder(0);
g_pBasketSprite[1]->SetHidden(FALSE);
g_pGame->AddSprite(g_pBasketSprite[1]);
g_pMouseSprite[0]= new Sprite(g_pSmallmouseBitmap, rcBounds);
g_pMouseSprite[0]->SetNumFrames(1);
g_pMouseSprite[0]->SetPosition(552,0);
g_pMouseSprite[0]->SetZOrder(3);
g_pMouseSprite[0]->SetHidden(FALSE);
g_pGame->AddSprite(g_pMouseSprite[0]);
g_pMouseSprite[1]= new Sprite(g_pBigmouseBitmap, rcBounds);
g_pMouseSprite[1]->SetNumFrames(1);
g_pMouseSprite[1]->SetZOrder(3);
g_pMouseSprite[1]->SetHidden(TRUE);
g_pGame->AddSprite(g_pMouseSprite[1]);
g_pPowSprite=new Sprite(g_pPowBitmap, rcBounds,BA_STOP);
//g_pPowSprite->SetHidden(FALSE);
g_pPowSprite->SetPosition(300,500);
g_pPowSprite->SetNumFrames(1,TRUE);
g_pPowSprite->GetHeight();
//g_pPowSprite->SetFrameDelay(3);
// g_pPowSprite->SetZOrder(3);
// g_pGame->AddSprite(g_pPowSprite);
// Play the background music
g_pGame->PlayMIDISong(TEXT("Music.mid"));
}
void UpdateHiScores()
{
// See if the current score made the hi score list
int i;
for (i = 0; i < 5; i++)
{
if (g_iScore > g_iHiScores[i])
break;
}
// Insert the current score into the hi score list
if (i < 5)
{
for (int j = 4; j > i; j--)
{
g_iHiScores[j] = g_iHiScores[j - 1];
}
g_iHiScores[i] = g_iScore;
}
}
BOOL ReadHiScores()
{
// Open the hi score file (HiScores.dat)
HANDLE hFile = CreateFile(TEXT("HiScores.dat"), GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
// The hi score file doesn't exist, so initialize the scores to 0
for (int i = 0; i < 5; i++)
g_iHiScores[i] = 0;
return FALSE;
}
// Read the scores
for (int i = 0; i < 5; i++)
{
// Read the score
char cData[6];
DWORD dwBytesRead;
if (!ReadFile(hFile, &cData, 5, &dwBytesRead, NULL))
{
// Something went wrong, so close the file handle
CloseHandle(hFile);
return FALSE;
}
// Extract each integer score from the score data
g_iHiScores[i] = atoi(cData);
}
// Close the file
return CloseHandle(hFile);
}
BOOL WriteHiScores()
{
// Create the hi score file (HiScores.dat) for writing
HANDLE hFile = CreateFile(TEXT("HiScores.dat"), GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
// The hi score file couldn't be created, so bail
return FALSE;
// Write the scores
for (int i = 0; i < 5; i++)
{
// Format each score for writing
CHAR cData[6];
wsprintf(cData, "%05d", g_iHiScores[i]);
// Write the score
DWORD dwBytesWritten;
if (!WriteFile(hFile, &cData, 5, &dwBytesWritten, NULL))
{
// Something went wrong, so close the file handle
CloseHandle(hFile);
return FALSE;
}
}
// Close the file
return CloseHandle(hFile);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -