From 1eab622ba2c7dccbb06170a50928233ea83122dc Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 22 Aug 2024 21:35:48 +0200 Subject: [PATCH] =?UTF-8?q?Muchos=20peque=C3=B1os=20cambios=20para=20estan?= =?UTF-8?q?darizar=20y=20mejorar=20la=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/soccer_ball.aseprite | Bin 0 -> 5042 bytes resources/soccer_ball.png | Bin 0 -> 1201 bytes source/ball.cpp | 7 +++---- source/defines.h | 15 ++++++++++++--- source/main.cpp | 26 ++++++++++++++++++++++---- source/sprite.cpp | 9 ++++++++- source/sprite.h | 5 ++++- 7 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 resources/soccer_ball.aseprite create mode 100644 resources/soccer_ball.png diff --git a/resources/soccer_ball.aseprite b/resources/soccer_ball.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..3a418fd3564f16a2f0cb3f510ad1676dabdb9b70 GIT binary patch literal 5042 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, y}); sprite->setSize(w, h); - sprite->setClip({0, 0, 24, 24}); - color = {255, 255, 255}; + sprite->setClip({0, 0, w, h}); + color = {(rand() % 192) + 32, (rand() % 192) + 32, (rand() % 192) + 32}; } // Destructor @@ -69,7 +68,7 @@ void Ball::update() if (collision) { - color = {rand() % 255, rand() % 255, rand() % 255}; + sprite->setAnimationSpeed((rand() % 15) + 5); } // Actualiza la posición del sprite diff --git a/source/defines.h b/source/defines.h index e6a118d..666a295 100644 --- a/source/defines.h +++ b/source/defines.h @@ -1,10 +1,19 @@ #pragma once -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 240 +#include "SDL2/SDL.h" +#include /* srand, rand */ + +#define SCREEN_WIDTH 480 +#define SCREEN_HEIGHT 360 #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 { - int r,g,b; + int r, g, b; }; \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index c5c9798..910e1bc 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -1,4 +1,3 @@ -#include #include "texture.h" #include "ball.h" #include "defines.h" @@ -54,13 +53,19 @@ bool init() 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) { - 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(); + srand(time(NULL)); return success; } @@ -106,6 +111,19 @@ void checkEvents() shouldExit = true; 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() { - SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); + SDL_SetRenderDrawColor(renderer, BG_R, BG_G, BG_B, 255); SDL_RenderClear(renderer); for (int i = 0; i < NUM_BALLS; ++i) diff --git a/source/sprite.cpp b/source/sprite.cpp index d1d4aa5..5d00818 100644 --- a/source/sprite.cpp +++ b/source/sprite.cpp @@ -7,7 +7,7 @@ Sprite::Sprite(Texture *texture) pos = {0, 0, 0, 0}; clip = {0, 0, 0, 0}; frame = 0; - numFrames = 3; + numFrames = NUM_FRAMES; animationSpeed = 20; animationCounter = 0; } @@ -64,4 +64,11 @@ void Sprite::animate() void Sprite::setColor(int r, int g, int b) { texture->setColor(r, g, b); +} + +// Cambia la velocidad de la animación +void Sprite::setAnimationSpeed(int value) +{ + animationSpeed = value; + animationCounter = 0; } \ No newline at end of file diff --git a/source/sprite.h b/source/sprite.h index 761dc45..d57dfd6 100644 --- a/source/sprite.h +++ b/source/sprite.h @@ -1,7 +1,7 @@ #pragma once -#include #include "texture.h" +#include "defines.h" class Sprite { @@ -41,4 +41,7 @@ public: // Modulación de color void setColor(int r, int g, int b); + + // Cambia la velocidad de la animación + void setAnimationSpeed(int value); }; \ No newline at end of file