Renombradas las variables de bullet.cpp

This commit is contained in:
2022-10-04 18:11:42 +02:00
parent 33b7c6082e
commit adad58ccfa
5 changed files with 69 additions and 66 deletions

View File

@@ -328,7 +328,7 @@ void Balloon::render()
{
mSprite->render();
if (mKind == POWER_BALL)
if (mKind == POWER_BALL and !mPopping)
{
Sprite *sp = new Sprite(mSprite->getRect(), mSprite->getTexture(), mSprite->getRenderer());
sp->setSpriteClip(370, 148, 37, 37);

View File

@@ -4,70 +4,70 @@
// Constructor
Bullet::Bullet(int x, int y, int kind, bool poweredUp, int owner, LTexture *texture, SDL_Renderer *renderer)
{
mSprite = new Sprite({x, y, 10, 10}, texture, renderer);
sprite = new Sprite({x, y, 10, 10}, texture, renderer);
// Posición inicial del objeto
mPosX = x;
mPosY = y;
posX = x;
posY = y;
// Alto y ancho del objeto
mWidth = 10;
mHeight = 10;
width = 10;
height = 10;
// Velocidad inicial en el eje Y
mVelY = -3;
velY = -3;
// Tipo de bala
mKind = kind;
this->kind = kind;
// Identificador del dueño del objeto
mOwner = owner;
this->owner = owner;
// Valores especificos según el tipo
switch (kind)
{
case BULLET_UP:
// Establece la velocidad inicial
mVelX = 0;
velX = 0;
// Rectangulo con los gráficos del objeto
if (!poweredUp)
{
mSprite->setSpriteClip(0 * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip(0 * width, 0, sprite->getWidth(), sprite->getHeight());
}
else
{
mSprite->setSpriteClip((0 + 3) * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip((0 + 3) * width, 0, sprite->getWidth(), sprite->getHeight());
}
break;
case BULLET_LEFT:
// Establece la velocidad inicial
mVelX = -2;
velX = -2;
// Rectangulo con los gráficos del objeto
if (!poweredUp)
{
mSprite->setSpriteClip(1 * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip(1 * width, 0, sprite->getWidth(), sprite->getHeight());
}
else
{
mSprite->setSpriteClip((1 + 3) * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip((1 + 3) * width, 0, sprite->getWidth(), sprite->getHeight());
}
break;
case BULLET_RIGHT:
// Establece la velocidad inicial
mVelX = 2;
velX = 2;
// Rectangulo con los gráficos del objeto
if (!poweredUp)
{
mSprite->setSpriteClip(2 * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip(2 * width, 0, sprite->getWidth(), sprite->getHeight());
}
else
{
mSprite->setSpriteClip((2 + 3) * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip((2 + 3) * width, 0, sprite->getWidth(), sprite->getHeight());
}
break;
@@ -76,7 +76,7 @@ Bullet::Bullet(int x, int y, int kind, bool poweredUp, int owner, LTexture *text
}
// Establece el tamaño del circulo de colisión
mCollider.r = mWidth / 2;
collider.r = width / 2;
// Alinea el circulo de colisión con el objeto
shiftColliders();
@@ -85,13 +85,13 @@ Bullet::Bullet(int x, int y, int kind, bool poweredUp, int owner, LTexture *text
// Destructor
Bullet::~Bullet()
{
delete mSprite;
delete sprite;
}
// Pinta el objeto en pantalla
void Bullet::render()
{
mSprite->render();
sprite->render();
}
// Actualiza la posición y estado del objeto en horizontal
@@ -101,34 +101,34 @@ Uint8 Bullet::move()
Uint8 msg = BULLET_MOVE_OK;
// Mueve el objeto a su nueva posición
mPosX += mVelX;
posX += velX;
// Si el objeto se sale del area de juego por los laterales
if ((mPosX < PLAY_AREA_LEFT) || (mPosX + mWidth > PLAY_AREA_RIGHT))
if ((posX < PLAY_AREA_LEFT) || (posX + width > PLAY_AREA_RIGHT))
{
// Se deshabilita
mKind = NO_KIND;
kind = NO_KIND;
// Mensaje de salida
msg = BULLET_MOVE_OUT;
}
// Mueve el objeto a su nueva posición en vertical
mPosY += int(mVelY);
posY += int(velY);
// Si el objeto se sale del area de juego por la parte superior o inferior
if ((mPosY < PLAY_AREA_TOP) || (mPosY + mHeight > PLAY_AREA_BOTTOM))
if ((posY < PLAY_AREA_TOP) || (posY + height > PLAY_AREA_BOTTOM))
{
// Se deshabilita
mKind = NO_KIND;
kind = NO_KIND;
// Mensaje de salida
msg = BULLET_MOVE_OUT;
}
// Actualiza la posición del sprite
mSprite->setPosX(mPosX);
mSprite->setPosY(mPosY);
sprite->setPosX(posX);
sprite->setPosY(posY);
// Alinea el circulo de colisión con el objeto
shiftColliders();
@@ -136,10 +136,10 @@ Uint8 Bullet::move()
return msg;
}
// Comprueba si el objeto está activo
bool Bullet::isActive()
// Comprueba si el objeto está habilitado
bool Bullet::isEnabled()
{
if (mKind == NO_KIND)
if (kind == NO_KIND)
{
return false;
}
@@ -149,63 +149,63 @@ bool Bullet::isActive()
}
}
// Desactiva el objeto
void Bullet::deactivate()
// Deshabilita el objeto
void Bullet::disable()
{
mKind = NO_KIND;
kind = NO_KIND;
}
// Obtiene el valor de la variable
int Bullet::getPosX()
{
return mPosX;
return posX;
}
// Obtiene el valor de la variable
int Bullet::getPosY()
{
return mPosY;
return posY;
}
// Establece el valor de la variable
void Bullet::setPosX(int x)
{
mPosX = x;
posX = x;
}
// Establece el valor de la variable
void Bullet::setPosY(int y)
{
mPosY = y;
posY = y;
}
// Obtiene el valor de la variable
int Bullet::getVelY()
{
return mVelY;
return velY;
}
// Obtiene el valor de la variable
int Bullet::getKind()
{
return mKind;
return kind;
}
// Obtiene el valor de la variable
int Bullet::getOwner()
{
return mOwner;
return owner;
}
// Obtiene el circulo de colisión
circle_t &Bullet::getCollider()
{
return mCollider;
return collider;
}
// Alinea el circulo de colisión con el objeto
void Bullet::shiftColliders()
{
mCollider.x = mPosX + mCollider.r;
mCollider.y = mPosY + mCollider.r;
collider.x = posX + collider.r;
collider.y = posY + collider.r;
}

View File

@@ -20,16 +20,19 @@
class Bullet
{
private:
int mPosX; // Posición en el eje X
int mPosY; // Posición en el eje Y
Uint8 mWidth; // Ancho del objeto
Uint8 mHeight; // Alto del objeto
int mVelX; // Velocidad en el eje X
int mVelY; // Velocidad en el eje Y
int mKind; // Tipo de objeto
int mOwner; // Identificador del dueño del objeto
Sprite *mSprite; // Sprite con los graficos y métodos de pintado
circle_t mCollider; // Circulo de colisión del objeto
// Objetos
Sprite *sprite; // Sprite con los graficos y métodos de pintado
// Variables
int posX; // Posición en el eje X
int posY; // Posición en el eje Y
Uint8 width; // Ancho del objeto
Uint8 height; // Alto del objeto
int velX; // Velocidad en el eje X
int velY; // Velocidad en el eje Y
int kind; // Tipo de objeto
int owner; // Identificador del dueño del objeto
circle_t collider; // Circulo de colisión del objeto
// Alinea el circulo de colisión con el objeto
void shiftColliders();
@@ -47,11 +50,11 @@ public:
// Actualiza la posición y estado del objeto
Uint8 move();
// Comprueba si el objeto está activo
bool isActive();
// Comprueba si el objeto está habilitado
bool isEnabled();
// Desactiva el objeto
void deactivate();
// Deshabilita el objeto
void disable();
// Obtiene el valor de la variable
int getPosX();

View File

@@ -2187,7 +2187,7 @@ void Game::checkBulletBalloonCollision()
{
for (auto balloon : balloons)
{
if (balloon->isEnabled() && (!balloon->isInvulnerable()) && bullet->isActive())
if (balloon->isEnabled() && (!balloon->isInvulnerable()) && bullet->isEnabled())
{
if (checkCollision(balloon->getCollider(), bullet->getCollider()))
{
@@ -2206,8 +2206,8 @@ void Game::checkBulletBalloonCollision()
JA_PlaySound(mSoundBalloon);
}
// Desactiva la bala
bullet->deactivate();
// Deshabilita la bala
bullet->disable();
// Suelta el item en caso de que salga uno
const Uint8 droppeditem = dropItem();
@@ -2237,7 +2237,7 @@ void Game::moveBullets()
{
for (auto bullet : bullets)
{
if (bullet->isActive())
if (bullet->isEnabled())
{
if (bullet->move() == BULLET_MOVE_OUT)
{
@@ -2252,7 +2252,7 @@ void Game::renderBullets()
{
for (auto bullet : bullets)
{
if (bullet->isActive())
if (bullet->isEnabled())
{
bullet->render();
}
@@ -2273,7 +2273,7 @@ void Game::freeBullets()
{
for (int i = bullets.size() - 1; i >= 0; --i)
{
if (bullets.at(i)->isActive() == false)
if (bullets.at(i)->isEnabled() == false)
{
delete bullets.at(i);
bullets.erase(bullets.begin() + i);

View File

@@ -2,7 +2,7 @@ los items se quedan pegados en el techo
la maquina de cafe no toca el suelo
las bolas verdes nacen naranja al explotarlas
falta el aura de superguerrero al pillar la maquina de cafe
la powerball deja la mascara al explotarlas
x la powerball deja la mascara al explotarlas
los menus de pausa y game over falta poner bien los textos
cuando continuas la partida sigues muerto
poder elegir el personaje para jugar