From 834d3a09a495ea80fe3b622a0e95f99ffbd92bf9 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 12 Jul 2022 14:47:25 +0200 Subject: [PATCH] Rehaciendo las clases Sprite y sus hijas --- data/room/room1.tmx | 32 ++++++++--------- media/tilesets/room1.png | Bin 2942 -> 2991 bytes source/animatedsprite.cpp | 7 ---- source/animatedsprite.h | 6 +++- source/enemy.cpp | 2 -- source/item.cpp | 63 +++++++++++++++++++++++++++++++++ source/item.h | 45 ++++++++++++++++++++++++ source/movingsprite.cpp | 51 --------------------------- source/movingsprite.h | 41 +++++++++++++++++++--- source/room.cpp | 4 +-- source/sprite.cpp | 72 ++++++++++++++++++-------------------- source/sprite.h | 7 ++-- source/text.cpp | 3 +- todo.txt | 40 +++++++++++++++++++-- 14 files changed, 243 insertions(+), 130 deletions(-) create mode 100644 source/item.cpp create mode 100644 source/item.h diff --git a/data/room/room1.tmx b/data/room/room1.tmx index c9d7974..91215be 100644 --- a/data/room/room1.tmx +++ b/data/room/room1.tmx @@ -3,22 +3,22 @@ -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121, -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,0,0,161,162,163,121,121,121,121,121,121,121,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,121,121,181,182,183,0,0,0,0,0,0,0,0,0,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,163,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,161,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,183,121,121,121,0,0,0,0,0,121,121,121,121,121, -121,181,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,0,0,0,0,0,0,0, -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,0,0,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,0,0,0,0,0,0, -121,0,0,0,0,0,0,0,0,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,163, -181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,183 +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,108,108,108,108,108,108,108,108,108,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,108,108,108,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,108,108,0,0,0,0,0,108,108,108,108,108, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27, +27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27 diff --git a/media/tilesets/room1.png b/media/tilesets/room1.png index 42cb230349cce08952b032bbf968cdb67c54f97f..b64ec399ae38e678889af0cfb34a58708b6fdda7 100644 GIT binary patch literal 2991 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 RIe*}Q<#`*^inH#~{{mI&(Z~P* literal 2942 zcmbVOXH-+$5>5a&84zg4K|J=T^VPgB`7!<{hvYk&QtPZG zmPA90iZN|F_Zn_+nePpPTjY)xW2+=M8tcdW4ynZ@TzraFefq50(rNfjdoykaRB`%Y znJ!-xVF9g8c>d1d-N#vpT{^YOxrz_96nS^%>P@HWR}WvwZ*^jf_MxZD>LWaYI!pT^ zcoDS7k>6{&F9bnpO-YxT(jc-K(U7lZyRih)>-C3_-vxK%t{WT--IEM;0Z~vqxhRR! zKI8l4;bI`ij*bQy?hWp#ext}a<8N!PzaM)MJ*mF$+#tk!Rt}U>25+YG>a#nL0Vdv4 zZ`8~3qai@d&=B(|x7I~2kFE$4{NYkU%BYz=E|?7K zGoCneXd_;GbZnecLONunk-cb4JmcG?*Gtd@1kEkcO>@G=5G>Y>B>nh}TuE|59|0-rjE=o^0eK1RXaS&|ne#WeJ{3** z+HzvuQ`XY3U0a~E1)4*r&mI&G5l;~>^|Wg_@ljgBuI0c-=^pKa`}Rc6!W$3+;Kn#m zC81FVtn6J^WiVe;-{pj`Vp@qPiNIacOYg+wOQR{xx zx9=8rsP1BlEd0-CX&WR|bD^=kS{A;(hA9{V?_YU`4(gX3MZ0e7;FE|lg2x^){jv{iPO~Z$J#>moJ&-(qxo#5_AMb|Dp+<9FoL}(<&Gcvn z`?_5F7RH@D6(g>kFHkpIs_+2g&Y2}>#zg82Z~2+2P20AJ(v_sa79gA+`ik(Jm2KZ) zaZ{cmZ?F#m%FfpJ67qu*ENQ1958!@Kv1eJv%9dViax?ifM72&N&K+!H zNCO)x8+tkuAk`vC;y+buBIDlmv&}oxz{hYR5-Rcrae%>ZV6vv+Rl=eiO-gagjdS9%*2B!v$3fJEX&;hmgwKG!_s@#@hdGjod+{|atRhj9AUL8 zo?d^|Z4J!K!KDy@*=5~PK(kS5&@)jx$T3jOPw}m{C}LIV)ZGq6WlqSX+I3WaP#u^d zWS+sI_Sy_3em@X)_`}O>6Dy5ajlJDf`wJC=uB{q0WIj{>ZHAEIF3%y91M$KA+6jRL z3!i#S>`_Nd!cRsF%v5pF)q}$AB^fT%&}(IR9`pE8t5vBSVkJN7%O-k%>kJ-KGxvt|jbL1|rl*Nu`w%lL(0Rhh_z6t+kEa; zM=@)G-EVgo{bd3uBM=R@THRCw7Fu-V#?~mn*gfC15&%SvDAByD0knkMd@75N^Ks|G z+kB1H^Ri-o`pcK7c<yZ%Cu5C0ZGUxUfH|9d!t2;RMaROl(AMd8=e;kp_4lv*3)^*jLo{`u zYE{|Mat?hvJ!Sory&?DW<0|Klr!Os;SH0FL@{v-izOUz(O|pVdWbd3M@51agz&wOl ziiI_c6-dgdyaTJ<_E)vV9p0s?PK|~i#qRdPe42@|dRtL=)$EbNPV(yM%9lwWt+kf# z{{xIQpy~N}S9~vUjDPuP2sdQ160mkxY$RptZ$R-n^NOy4;k4bI7~<53_RF~P zC%8-E8b4D@Q?NI;r9E^ohh@MhJTiM)(*O8~V-lc^>$T<8Gm5j`x<91UN#Cs#K0~yT znGbI@fTTVAu=_K)poFztM_jT@rt7^6MZIkpQZ!y{aA2M17c)m5b_Sf(-G)adQR8dV zuPLw{XU`LC9+i6O7XO#H(D^JK#crxVupDOzn~j;a-Njr=xsO@O=E!IgxSn{jr7RoxACL4O_e-hI{G;TQE!2E|%^$v0(GtYge?TJhz`kBM_h~pl-VtBnk+B*02#e$0(D_skl zDp3|OBQV=UhLB-Sosi+!AW7SD5mD1vd5O2ANMznCnJ~HMNr1p$P#`+(3}i&F+y2MX zx5koHULxuz1QqBVKdQ&0=vHFQ5;#?-0rU$_&+=w((fCNbJOzu$0N>Ql?IiG1H--P& z00uZ7VvUspP?t45ffwL?&C9u|hqfCkCs1WB;dk!{}}TpXgetPosX() > x2 || sprite->getPosX() < x1) { - // sprite->setPosX(sprite->getPosX() - sprite->getVelX()); sprite->setVelX(sprite->getVelX() * (-1)); } if (sprite->getPosY() > y2 || sprite->getPosY() < y1) { - // sprite->setPosY(sprite->getPosY() - sprite->getVelY()); sprite->setVelY(sprite->getVelY() * (-1)); } } diff --git a/source/item.cpp b/source/item.cpp new file mode 100644 index 0000000..028bf06 --- /dev/null +++ b/source/item.cpp @@ -0,0 +1,63 @@ +#include "item.h" +#include +#include + +// Constructor +Item::Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset) +{ + // Obten punteros a objetos + asset = _asset; + renderer = _renderer; + + // Crea objetos + texture = new LTexture(); + sprite = new Sprite(_rect, texture, renderer); + + // Carga la textura + loadTextureFromFile(texture, asset->get(_tileset), renderer); + + // Inicia variables + sprite->setSpriteClip(0,0,8,8); + + // Inicializa los colores + color_t c = stringToColor("blue"); + color.push_back(c); + + c = stringToColor("red"); + color.push_back(c); + + c = stringToColor("purple"); + color.push_back(c); + + c = stringToColor("green"); + color.push_back(c); + + c = stringToColor("cyan"); + color.push_back(c); + + c = stringToColor("yellow"); + color.push_back(c); +} + +// Destructor +Item::~Item() +{ + texture->unload(); + delete texture; + texture = nullptr; + + delete sprite; + sprite = nullptr; +} + +// Pinta el enemigo en pantalla +void Item::draw() +{ + +} + +// Actualiza las variables del objeto +void Item::update() +{ + +} diff --git a/source/item.h b/source/item.h new file mode 100644 index 0000000..9271538 --- /dev/null +++ b/source/item.h @@ -0,0 +1,45 @@ +#pragma once +#include "ifdefs.h" +#include "utils.h" +#include "asset.h" +#include "sprite.h" +#include + +#ifndef ITEM_H +#define ITEM_H + +/* +Un item deberia tener la siguiente informacion: +POSICION INICIAL +PNG ASOCIADO +*/ + +// Clase Item +class Item +{ +private: + LTexture *texture; // Textura con los graficos del objeto + Sprite *sprite; // Sprite del objeto + + SDL_Renderer *renderer; // El renderizador de la ventana + Asset *asset; // Objeto con la ruta a todos los ficheros de recursos + std::vector color; // Vector con los colores del objeto + + // Comprueba si ha llegado al limite del recorrido para darse media vuelta + void checkPath(); + +public: + // Constructor + Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset); + + // Destructor + ~Item(); + + // Pinta el objeto en pantalla + void draw(); + + // Actualiza las variables del objeto + void update(); +}; + +#endif diff --git a/source/movingsprite.cpp b/source/movingsprite.cpp index ea76dfd..2b04ccc 100644 --- a/source/movingsprite.cpp +++ b/source/movingsprite.cpp @@ -1,16 +1,9 @@ #include "const.h" #include "movingsprite.h" -// Constructor -MovingSprite::MovingSprite() -{ - clear(); -} - // Destructor MovingSprite::~MovingSprite() { - clear(); } // Reinicia todas las variables @@ -38,50 +31,6 @@ void MovingSprite::clear() mFlip = SDL_FLIP_NONE; // Establece como se ha de voltear el sprite } -// Iniciador -void MovingSprite::init(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer) -{ - // Establece el alto y el ancho del sprite - setWidth(w); - setHeight(h); - - // Establece la posición X,Y del sprite - setPosX(x); - setPosY(y); - - // Establece la velocidad X,Y del sprite - setVelX(velx); - setVelY(vely); - - // Establece la aceleración X,Y del sprite - setAccelX(accelx); - setAccelY(accely); - - // Establece el zoom W,H del sprite - setZoomW(1); - setZoomH(1); - - // Establece el angulo con el que se dibujará - setAngle(0.0); - - // Establece los valores de rotacion - setRotate(false); - setRotateSpeed(0); - setRotateAmount(0.0); - - // Contador interno - mCounter = 0; - - // Establece la textura donde están los gráficos para el sprite - setTexture(texture); - - // Establece el renderizador - setRenderer(renderer); - - // Establece el rectangulo de donde coger la imagen - setSpriteClip(0, 0, w, h); -} - // Mueve el sprite void MovingSprite::move() { diff --git a/source/movingsprite.h b/source/movingsprite.h index 18d6f54..06ceb8d 100644 --- a/source/movingsprite.h +++ b/source/movingsprite.h @@ -31,14 +31,47 @@ protected: public: // Constructor - MovingSprite(); + MovingSprite(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer) + : Sprite((int)x, (int)y, w, h, texture, renderer) + { + // Establece el alto y el ancho del sprite + setWidth(w); + setHeight(h); + + // Establece la posición X,Y del sprite + setPosX(x); + setPosY(y); + + // Establece la velocidad X,Y del sprite + setVelX(velx); + setVelY(vely); + + // Establece la aceleración X,Y del sprite + setAccelX(accelx); + setAccelY(accely); + + // Establece el zoom W,H del sprite + setZoomW(1); + setZoomH(1); + + // Establece el angulo con el que se dibujará + setAngle(0.0); + + // Establece los valores de rotacion + setRotate(false); + setRotateSpeed(0); + setRotateAmount(0.0); + + // Contador interno + mCounter = 0; + + // Establece el rectangulo de donde coger la imagen + setSpriteClip(0, 0, w, h); + }; // Destructor ~MovingSprite(); - // Iniciador - void init(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer); - // Mueve el sprite void move(); diff --git a/source/room.cpp b/source/room.cpp index ce6ffd5..a9ef9a4 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -397,13 +397,13 @@ int Room::getTile(SDL_Point point) if (pos < 512) { // Los tiles entre el 1 y el 80 son solidos - if ((tilemap[pos] > 0) && (tilemap[pos] < 81)) + if ((tilemap[pos] > 0) && (tilemap[pos] < 201)) { return TILE_SOLID; } // Los tiles mayores de 80 son atravesables - if (tilemap[pos] > 80) + if (tilemap[pos] > 200) { return TILE_TRAVESSABLE; } diff --git a/source/sprite.cpp b/source/sprite.cpp index a032c51..74c1fbc 100644 --- a/source/sprite.cpp +++ b/source/sprite.cpp @@ -1,44 +1,7 @@ #include "sprite.h" // Constructor -Sprite::Sprite() -{ - init(0, 0, 0, 0, nullptr, nullptr); -} - -// Destructor -Sprite::~Sprite() -{ - mTexture = nullptr; - mRenderer = nullptr; -} - -// Inicializador -void Sprite::init(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer) -{ - // Establece la posición X,Y del sprite - setPosX(x); - setPosY(y); - - // Establece el alto y el ancho del sprite - setWidth(w); - setHeight(h); - - // Establece el puntero al renderizador de la ventana - setRenderer(renderer); - - // Establece la textura donde están los gráficos para el sprite - setTexture(texture); - - // Establece el rectangulo de donde coger la imagen - setSpriteClip(0, 0, w, h); - - // Habilita el objeto - setEnabled(true); -} - -// Inicializador -void Sprite::init(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer) +Sprite::Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer) { // Establece el alto y el ancho del sprite mWidth = rect.w; @@ -56,6 +19,39 @@ void Sprite::init(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer) // Establece el rectangulo de donde coger la imagen setSpriteClip(rect); + + // Inicializa variables + mEnabled = true; +} + +Sprite::Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer) +{ + // Establece el alto y el ancho del sprite + mWidth = w; + mHeight = h; + + // Establece la posición X,Y del sprite + mPosX = x; + mPosY = y; + + // Establece el puntero al renderizador de la ventana + setRenderer(renderer); + + // Establece la textura donde están los gráficos para el sprite + setTexture(texture); + + // Establece el rectangulo de donde coger la imagen + setSpriteClip(x,y,w,h); + + // Inicializa variables + mEnabled = true; +} + +// Destructor +Sprite::~Sprite() +{ + mTexture = nullptr; + mRenderer = nullptr; } // Muestra el sprite por pantalla diff --git a/source/sprite.h b/source/sprite.h index b0d0b3e..9b2bd97 100644 --- a/source/sprite.h +++ b/source/sprite.h @@ -22,15 +22,12 @@ protected: public: // Constructor - Sprite(); + Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer); + Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer); // Destructor ~Sprite(); - // Inicializador - void init(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer); - void init(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer); - // Muestra el sprite por pantalla void render(); diff --git a/source/text.cpp b/source/text.cpp index 211d50c..6de4715 100644 --- a/source/text.cpp +++ b/source/text.cpp @@ -6,7 +6,8 @@ // Constructor Text::Text(std::string file, LTexture *texture, SDL_Renderer *renderer) { - mSprite = new Sprite(); + SDL_Rect rect = {0,0,0,0}; + mSprite = new Sprite(rect, texture, renderer); mSprite->setTexture(texture); mSprite->setRenderer(renderer); mFile = file; diff --git a/todo.txt b/todo.txt index e1cb707..2089dc1 100644 --- a/todo.txt +++ b/todo.txt @@ -2,6 +2,40 @@ [x] Arreglar que no atraviese tiles atravaseables al caer muy rapido [x] Leer los mapas directamente del archivo tmx [ ] Crear la clase item -[ ] Colisiones con los enemigos -[ ] Decidir un diseño para qué sucede en caso de morir: Recordar el punto por donde se entró al mapa y la velocidad en el eje X/Y que llevaba el personaje, crear puntos de reaparicion en las habitaciones, etc - En el Jet Set Willy el juego recuerda la posicion y el momento. En las Tres Luces de Glaurung solo la posición. Se va a optar por seguir el diseño del Jet Set Willy \ No newline at end of file +[x] Colisiones con los enemigos +[x] Decidir un diseño para qué sucede en caso de morir: Recordar el punto por donde se entró al mapa y la velocidad en el eje X/Y que llevaba el personaje, crear puntos de reaparicion en las habitaciones, etc + En el Jet Set Willy el juego recuerda la posicion y el momento. En las Tres Luces de Glaurung solo la posición. Se va a optar por seguir el diseño del Jet Set Willy +[ ] Crear tiles que maten +[ ] Crear tiles que deslicen, (no tipo hielo sino cinta) +[ ] Crear ascensores + + +TEMAS: +arounders +paku simbel +jail battle +arounders race +aee gba +matatunos +sigmasua +calculin doom +leaper reaper +mini ascii +mappy +paco +chirping +abad y batman +jail +counter strike +starcraft +diablo +jailparty +maniac mansion +molotov +tutorials +gavina +puzzle restorer +qvoid +brick roll +dante's fall +repairing computers