#include "DarkGDK.h"
struct TPonto {
float X, Y;
};
struct TVeiculo {
bool Atirou, Sinal;
float TiroVelocidade;
int Id, IdDirecao, IdTiro, Escala, TiroInc;
TPonto Tiro, TiroInicio;
};
const int cIdNaveTiroSom= 501;
const int cIncNaveTiroY = 5;
const int cIncNaveX = 5;
const int cIncNaveY = 5;
const int cXMin = cIncNaveX;
char *cNaveNome = "nave.bmp";
char *cNaveTiroNome = "tiro.bmp";
char *cNaveTiroSomNome = "fire.wav";
int gAlturaMaxAdv, gLarguraMaxAdv, gYMin, gYMax, gYMaxAdv;
TVeiculo gAdversario, gNave;
void Atirar_Nave (void)
{
if (!gNave.Atirou) {
gNave.Atirou= true;
gNave.Tiro.X= dbSpriteX (gNave.Id) + (dbSpriteWidth (gNave.Id) / 2) - (dbSpriteWidth (gNave.IdTiro) / 2);
gNave.Tiro.Y= dbSpriteY (gNave.Id) - 15;
dbShowSprite (gNave.IdTiro);
dbPlaySound (cIdNaveTiroSom);
}
}
void Navegar (void)
{
if (dbUpKey ())
if (dbSpriteY (gNave.Id) - cIncNaveY >= gYMin)
dbSprite (gNave.Id, dbSpriteX (gNave.Id), dbSpriteY (gNave.Id) - cIncNaveY, 1);
if (dbDownKey ())
if (dbSpriteY (gNave.Id) + cIncNaveY <= gYMax)
dbSprite (gNave.Id, dbSpriteX (gNave.Id), dbSpriteY (gNave.Id) + cIncNaveY, 1);
if (dbKeyState (203) || dbKeyState (30)) // Movimentar nave pra esquerda <Seta esquerda>, <a>
if (dbSpriteX (gNave.Id) >= cXMin)
dbSprite (gNave.Id, dbSpriteX (gNave.Id) - cIncNaveX, dbSpriteY (gNave.Id), 1);
if (dbKeyState (205) || dbKeyState (32)) // Movimentar nave pra direita <Seta direita>, <d>
if (dbSpriteX (gNave.Id) <= dbScreenWidth () - dbSpriteWidth (gNave.Id) - cXMin)
dbSprite (gNave.Id, dbSpriteX (gNave.Id) + cIncNaveX, dbSpriteY (gNave.Id), 1);
if (dbKeyState (57)) // Atirar <Barra de espaço>
Atirar_Nave ();
}
void Mostrar_NaveTiro (void)
{
if (gNave.Atirou) {
if (gNave.Tiro.Y <= 0)
gNave.Atirou= false;
else {
dbSprite (gNave.IdTiro, gNave.Tiro.X, gNave.Tiro.Y, 1);
gNave.Tiro.Y= gNave.Tiro.Y - cIncNaveTiroY*gNave.TiroVelocidade;
}
if (!gNave.Atirou)
dbHideSprite (gNave.IdTiro);
}
}
void DarkGDK (void)
{
dbSetDisplayMode (320, 320, 32);
dbSyncOn ();
dbSyncRate (60);
SetCurrentDirectory ("objeto");
gNave.Atirou = false;
gNave.Id = 10;
gNave.IdTiro = 11;
gNave.TiroVelocidade= 2.0f;
dbCreateAnimatedSprite (gNave.Id, cNaveNome, 1, 1, gNave.Id);
dbCreateAnimatedSprite (gNave.IdTiro, cNaveTiroNome, 1, 1, gNave.IdTiro);
gAlturaMaxAdv = dbSpriteHeight (gAdversario.Id);
gLarguraMaxAdv= dbSpriteWidth (gAdversario.Id);
dbStretchSprite (gNave.Id, 50, 50);
dbStretchSprite (gNave.IdTiro, 50, 50);
dbLoadSound (cNaveTiroSomNome, cIdNaveTiroSom);
gYMax = dbScreenHeight () - dbSpriteHeight (gNave.Id) - 2;
gYMaxAdv= dbScreenHeight () / 2;
gYMin = gYMaxAdv + gAlturaMaxAdv*2;
dbSprite (gNave.Id, (dbScreenWidth ()-dbSpriteWidth (gNave.Id))/2, gYMax, 1);
while (LoopGDK () && !dbEscapeKey ()) {
Navegar ();
Mostrar_NaveTiro ();
dbSync ();
}
}
|