#include "breakout.h"
BOOL GameInitialize(HINSTANCE hInstance)
{
_pGame = new GameEngine(hInstance , TEXT("breakout"), TEXT("breakout"), IDI_UFO, IDI_UFO_SM,500, 650);
if (_pGame == NULL)
{
return FALSE;
};
_pGame->SetFrameRate(40);
_hInstance =hInstance;
return TRUE;
}
void GameStart(HWND hWindow)
{
Offscreenbitmap = CreateCompatibleBitmap(GetDC(hWindow),_pGame->GetWidth(), _pGame->GetHeight());
OffscreenDC = CreateCompatibleDC(GetDC(hWindow));
RECT BlockBounds = { 0,0,_pGame->GetWidth(), _pGame->GetHeight()};
for(int j = 0; j<30; j++)
{
blockbits[j] = new Bitmap(hDC, IDB_BLOCK , _hInstance);
};
for(int i = 0; i<30; i++)
{
blocks = new Sprite(blockbits , BlockBounds , SA_NONE);
_pGame->AddSprite(blocks);
};
for (int l = 0; l <30; l++)
{
blocks[l]->SetPosition(rand()%500, rand()%450);
for(int s=0; s < 30; s++)
if( blocks[l]->TestCollision(blocks) == <span class="cpp-keyword">TRUE</span>)
{
<span class="cpp-keyword">if</span> (blocks != blocks[l])
blocks[l]->SetPosition(rand()%<span class="cpp-number">500</span>, rand()%<span class="cpp-number">450</span>);
};
};
RECT BallBounds = { <span class="cpp-number">0</span> , <span class="cpp-number">0</span> , _pGame->GetWidth() , _pGame->GetHeight()};
RECT PaddleBounds = { <span class="cpp-number">0</span> , <span class="cpp-number">0</span> , _pGame->GetWidth() , _pGame->GetHeight()};
srand(GetTickCount());
HDC hDC = GetDC(hWindow);
BackGround = <span class="cpp-keyword">new</span> Bitmap(hDC, IDB_BACKGROUND , _hInstance);
ballbit = <span class="cpp-keyword">new</span> Bitmap(hDC , IDB_BALL , _hInstance);
paddlebit = <span class="cpp-keyword">new</span> Bitmap(hDC , IDB_PADDLE , _hInstance);
ball = <span class="cpp-keyword">new</span> Sprite( ballbit , BallBounds , BA_BOUNCE);
paddle = <span class="cpp-keyword">new</span> Sprite (paddlebit , PaddleBounds , BA_WRAP);
ball->SetVelocity(<span class="cpp-number">0</span>,<span class="cpp-number">5</span>);
paddle->SetVelocity(PaddleSpeed,<span class="cpp-number">0</span>);
paddle->SetPosition(<span class="cpp-number">250</span>,<span class="cpp-number">600</span>);
_pGame->AddSprite(ball);
_pGame->AddSprite(paddle);
}
<span class="cpp-keyword">void</span> GameEnd()
{
_pGame->CleanupSprites();
<span class="cpp-comment">//_pGame->CloseMIDIPlayer();</span>
<span class="cpp-keyword">delete</span> _pGame;
}
<span class="cpp-keyword">void</span> GameActivate (HWND hWindow)
{
}
<span class="cpp-keyword">void</span> GameDeactivate (HWND hWindow)
{
}
<span class="cpp-keyword">void</span> GamePaint( HDC hDC)
{
TCHAR szText[<span class="cpp-number">64</span>];
RECT rect = { <span class="cpp-number">237</span>, <span class="cpp-number">360</span>, <span class="cpp-number">301</span> };
wsprintf(szText, <span class="cpp-literal">"%d"</span>, score);
DrawText(hDC, szText, -<span class="cpp-number">1</span>, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
BackGround->Draw(hDC, <span class="cpp-number">0</span> , <span class="cpp-number">0</span> , <span class="cpp-keyword">TRUE</span>);
_pGame->DrawSprites(hDC);
}
<span class="cpp-keyword">void</span> GameCycle ()
{
DrawText(hDC, szText, -<span class="cpp-number">1</span>, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
_pGame->UpdateSprites();
<span class="cpp-comment">//ball->Update();</span>
<span class="cpp-comment">//paddle->Update();</span>
InvalidateRect(_pGame->GetWindow(), NULL, <span class="cpp-keyword">FALSE</span>);
HWND hWIndow =_pGame->GetWindow();
HDC hDC = GetDC(hWindow);
GamePaint(OffscreenDC);
BitBlt(hDC, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, _pGame->GetWidth(), _pGame-> GetHeight(), OffscreenDC, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, SRCCOPY);
ReleaseDC(hWindow, hDC);
<span class="cpp-keyword">if</span>(PaddleSpeed != <span class="cpp-number">0</span> && PaddleSpeed < <span class="cpp-number">0</span>)
PaddleSpeed++;
<span class="cpp-keyword">if</span>(PaddleSpeed != <span class="cpp-number">0</span> && PaddleSpeed > <span class="cpp-number">0</span>)
PaddleSpeed–;
paddle->SetVelocity(PaddleSpeed,<span class="cpp-number">0</span>);
}
<span class="cpp-keyword">void</span> HandleKeys()
{
<span class="cpp-keyword">if</span>(GetAsyncKeyState(VK_LEFT) < <span class="cpp-number">0</span>)
{
PaddleSpeed = -<span class="cpp-number">7</span>;
paddle->SetVelocity(PaddleSpeed, <span class="cpp-number">0</span>);
};
<span class="cpp-keyword">if</span>(GetAsyncKeyState(VK_RIGHT) < <span class="cpp-number">0</span>)
{
PaddleSpeed = <span class="cpp-number">7</span>;
paddle->SetVelocity(PaddleSpeed, <span class="cpp-number">0</span>);
};
}
<span class="cpp-keyword">void</span> MouseButtonDown(<span class="cpp-keyword">int</span> x, <span class="cpp-keyword">int</span> y, <span class="cpp-keyword">BOOL</span> bLeft)
{}
<span class="cpp-keyword">void</span> MouseButtonUp(<span class="cpp-keyword">int</span> x, <span class="cpp-keyword">int</span> y, <span class="cpp-keyword">BOOL</span> bLeft)
{}
<span class="cpp-keyword">void</span> MouseMove(<span class="cpp-keyword">int</span> x, <span class="cpp-keyword">int</span> y)
{}
<span class="cpp-keyword">BOOL</span> SpriteCollision(Sprite* pSpriteHitter, Sprite* pSpriteHittee)
{
<span class="cpp-keyword">if</span>(pSpriteHitter->GetBitmap() == ballbit && pSpriteHittee->GetBitmap() == paddlebit)
{
<span class="cpp-keyword">if</span>(PaddleSpeed != <span class="cpp-number">0</span>)
ball->SetVelocity(-PaddleSpeed,-<span class="cpp-number">5</span>);
<span class="cpp-keyword">else</span> ball->SetVelocity(<span class="cpp-number">0</span>,-<span class="cpp-number">5</span>);
}
<span class="cpp-keyword">for</span>(<span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i < <span class="cpp-number">30</span>; i++)
{
<span class="cpp-keyword">if</span>(pSpriteHitter->GetBitmap() == ballbit && pSpriteHittee->GetBitmap() == blockbits<span style="font-weight:bold;"> && pSpriteHittee->IsHidden() != <span class="cpp-keyword">TRUE</span>)
{
ball->SetVelocity(<span class="cpp-number">0</span>,<span class="cpp-number">5</span>);
pSpriteHittee->SetHidden(<span class="cpp-keyword">TRUE</span>);
};
};
<span class="cpp-keyword">return</span> <span class="cpp-keyword">false</span>;
}
</pre></div><!–ENDSCRIPT–>
flickering problem
ok im trying to post the socre on the screen but its flickering so baddly i cant see it maybe i did my double buffering wrong or something because i dont thinks it should be this bad any way heres what i got
BTW im using windows dev-c++
i'm using that same engine as you (can't remember the name of the book it came with, though it was blue book). anyways i get that flickering problem too, i think its because of the windows api, though i really have no idea
You are calling InvalidateRect after you draw the text. That may be your problem. Try calling before you draw any thing and see if that helps
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement