Muchos pequeños cambios para estandarizar y mejorar la demo
This commit is contained in:
BIN
resources/soccer_ball.aseprite
Normal file
BIN
resources/soccer_ball.aseprite
Normal file
Binary file not shown.
BIN
resources/soccer_ball.png
Normal file
BIN
resources/soccer_ball.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -1,5 +1,4 @@
|
|||||||
#include "ball.h"
|
#include "ball.h"
|
||||||
#include "defines.h"
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Ball::Ball(int x, int y, int w, int h, int vx, int vy, Texture *texture)
|
Ball::Ball(int x, int y, int w, int h, int vx, int vy, Texture *texture)
|
||||||
@@ -13,8 +12,8 @@ Ball::Ball(int x, int y, int w, int h, int vx, int vy, Texture *texture)
|
|||||||
sprite = new Sprite(texture);
|
sprite = new Sprite(texture);
|
||||||
sprite->setPos({x, y});
|
sprite->setPos({x, y});
|
||||||
sprite->setSize(w, h);
|
sprite->setSize(w, h);
|
||||||
sprite->setClip({0, 0, 24, 24});
|
sprite->setClip({0, 0, w, h});
|
||||||
color = {255, 255, 255};
|
color = {(rand() % 192) + 32, (rand() % 192) + 32, (rand() % 192) + 32};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
@@ -69,7 +68,7 @@ void Ball::update()
|
|||||||
|
|
||||||
if (collision)
|
if (collision)
|
||||||
{
|
{
|
||||||
color = {rand() % 255, rand() % 255, rand() % 255};
|
sprite->setAnimationSpeed((rand() % 15) + 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza la posición del sprite
|
// Actualiza la posición del sprite
|
||||||
|
|||||||
@@ -1,10 +1,19 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define SCREEN_WIDTH 320
|
#include "SDL2/SDL.h"
|
||||||
#define SCREEN_HEIGHT 240
|
#include <stdlib.h> /* srand, rand */
|
||||||
|
|
||||||
|
#define SCREEN_WIDTH 480
|
||||||
|
#define SCREEN_HEIGHT 360
|
||||||
#define NUM_BALLS 100
|
#define NUM_BALLS 100
|
||||||
|
#define BALL_SIZE 36
|
||||||
|
#define NUM_FRAMES 4
|
||||||
|
#define BG_R 96
|
||||||
|
#define BG_G 96
|
||||||
|
#define BG_B 96
|
||||||
|
#define TEXTURE_FILE "resources/soccer_ball.png"
|
||||||
|
|
||||||
struct color_t
|
struct color_t
|
||||||
{
|
{
|
||||||
int r,g,b;
|
int r, g, b;
|
||||||
};
|
};
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
#include <SDL2/SDL.h>
|
|
||||||
#include "texture.h"
|
#include "texture.h"
|
||||||
#include "ball.h"
|
#include "ball.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
@@ -54,13 +53,19 @@ bool init()
|
|||||||
|
|
||||||
event = new SDL_Event();
|
event = new SDL_Event();
|
||||||
|
|
||||||
texture = new Texture(renderer, "resources/pelota.png");
|
texture = new Texture(renderer, TEXTURE_FILE);
|
||||||
for (int i = 0; i < NUM_BALLS; ++i)
|
for (int i = 0; i < NUM_BALLS; ++i)
|
||||||
{
|
{
|
||||||
ball[i] = new Ball(rand() % SCREEN_WIDTH, rand() % SCREEN_HEIGHT, 24, 24, 1, 1, texture);
|
const int vx = rand() % 2 == 0 ? 1 : -1;
|
||||||
|
const int vy = rand() % 2 == 0 ? 1 : -1;
|
||||||
|
const int x = rand() % SCREEN_WIDTH;
|
||||||
|
const int y = rand() % SCREEN_HEIGHT;
|
||||||
|
const int size = BALL_SIZE;
|
||||||
|
ball[i] = new Ball(x, y, size, size, vx, vy, texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
ticks = SDL_GetTicks();
|
ticks = SDL_GetTicks();
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
@@ -106,6 +111,19 @@ void checkEvents()
|
|||||||
shouldExit = true;
|
shouldExit = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event->type == SDL_KEYDOWN && event->key.repeat == 0)
|
||||||
|
{
|
||||||
|
switch (event->key.keysym.sym)
|
||||||
|
{
|
||||||
|
case SDLK_ESCAPE:
|
||||||
|
shouldExit = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +142,7 @@ void update()
|
|||||||
|
|
||||||
void render()
|
void render()
|
||||||
{
|
{
|
||||||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
|
SDL_SetRenderDrawColor(renderer, BG_R, BG_G, BG_B, 255);
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
for (int i = 0; i < NUM_BALLS; ++i)
|
for (int i = 0; i < NUM_BALLS; ++i)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Sprite::Sprite(Texture *texture)
|
|||||||
pos = {0, 0, 0, 0};
|
pos = {0, 0, 0, 0};
|
||||||
clip = {0, 0, 0, 0};
|
clip = {0, 0, 0, 0};
|
||||||
frame = 0;
|
frame = 0;
|
||||||
numFrames = 3;
|
numFrames = NUM_FRAMES;
|
||||||
animationSpeed = 20;
|
animationSpeed = 20;
|
||||||
animationCounter = 0;
|
animationCounter = 0;
|
||||||
}
|
}
|
||||||
@@ -64,4 +64,11 @@ void Sprite::animate()
|
|||||||
void Sprite::setColor(int r, int g, int b)
|
void Sprite::setColor(int r, int g, int b)
|
||||||
{
|
{
|
||||||
texture->setColor(r, g, b);
|
texture->setColor(r, g, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cambia la velocidad de la animación
|
||||||
|
void Sprite::setAnimationSpeed(int value)
|
||||||
|
{
|
||||||
|
animationSpeed = value;
|
||||||
|
animationCounter = 0;
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <SDL2/SDL.h>
|
|
||||||
#include "texture.h"
|
#include "texture.h"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
class Sprite
|
class Sprite
|
||||||
{
|
{
|
||||||
@@ -41,4 +41,7 @@ public:
|
|||||||
|
|
||||||
// Modulación de color
|
// Modulación de color
|
||||||
void setColor(int r, int g, int b);
|
void setColor(int r, int g, int b);
|
||||||
|
|
||||||
|
// Cambia la velocidad de la animación
|
||||||
|
void setAnimationSpeed(int value);
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user