forked from jaildesigner-jailgames/jaildoctors_dilemma
Creados tiles que matan
This commit is contained in:
@@ -16,8 +16,8 @@
|
|||||||
21,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,
|
21,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,
|
||||||
21,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,
|
21,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,
|
||||||
21,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,
|
21,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,
|
||||||
21,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,
|
21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,
|
21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,381,21,21,21,21,21,21,21,21,21,21,21,
|
||||||
21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
|
21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
|
||||||
</data>
|
</data>
|
||||||
</layer>
|
</layer>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -128,17 +128,7 @@ void Game::update()
|
|||||||
checkPlayerOnBorder();
|
checkPlayerOnBorder();
|
||||||
checkPlayerOnFloor();
|
checkPlayerOnFloor();
|
||||||
checkPlayerAndItems();
|
checkPlayerAndItems();
|
||||||
if (checkPlayerAndEnemies())
|
checkPlayerAndEnemies();
|
||||||
{
|
|
||||||
// Destruye la habitacion y el jugador
|
|
||||||
delete mRoom;
|
|
||||||
delete mPlayer;
|
|
||||||
|
|
||||||
// Crea la nueva habitación y el nuevo jugador
|
|
||||||
mRoom = new Room(mAsset->get(mCurrentRoom), mRenderer, mAsset, mItemTracker);
|
|
||||||
mPlayer = new Player(mSpawnPoint, mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
|
|
||||||
}
|
|
||||||
|
|
||||||
checkInput();
|
checkInput();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -300,7 +290,7 @@ void Game::checkPlayerOnFloor()
|
|||||||
// Comprueba que el jugador no atraviese ninguna pared
|
// Comprueba que el jugador no atraviese ninguna pared
|
||||||
void Game::checkPlayerAndWalls()
|
void Game::checkPlayerAndWalls()
|
||||||
{
|
{
|
||||||
// Comprueba las cuatro esquinas de los dos tiles del jugador
|
// Obtiene los ocho puntos de colisión del jugador
|
||||||
const SDL_Rect rect = mPlayer->getRect();
|
const SDL_Rect rect = mPlayer->getRect();
|
||||||
const SDL_Point p1 = {rect.x, rect.y};
|
const SDL_Point p1 = {rect.x, rect.y};
|
||||||
const SDL_Point p2 = {rect.x + 7, rect.y};
|
const SDL_Point p2 = {rect.x + 7, rect.y};
|
||||||
@@ -311,32 +301,66 @@ void Game::checkPlayerAndWalls()
|
|||||||
const SDL_Point p7 = {rect.x + 7, rect.y + 15};
|
const SDL_Point p7 = {rect.x + 7, rect.y + 15};
|
||||||
const SDL_Point p8 = {rect.x, rect.y + 15};
|
const SDL_Point p8 = {rect.x, rect.y + 15};
|
||||||
|
|
||||||
bool test = false;
|
// Comprueba si ha colisionado con un muro
|
||||||
test |= (mRoom->getTile(p1) == TILE_SOLID);
|
bool wall = false;
|
||||||
test |= (mRoom->getTile(p2) == TILE_SOLID);
|
wall |= (mRoom->getTile(p1) == TILE_SOLID);
|
||||||
test |= (mRoom->getTile(p3) == TILE_SOLID);
|
wall |= (mRoom->getTile(p2) == TILE_SOLID);
|
||||||
test |= (mRoom->getTile(p4) == TILE_SOLID);
|
wall |= (mRoom->getTile(p3) == TILE_SOLID);
|
||||||
test |= (mRoom->getTile(p5) == TILE_SOLID);
|
wall |= (mRoom->getTile(p4) == TILE_SOLID);
|
||||||
test |= (mRoom->getTile(p6) == TILE_SOLID);
|
wall |= (mRoom->getTile(p5) == TILE_SOLID);
|
||||||
test |= (mRoom->getTile(p7) == TILE_SOLID);
|
wall |= (mRoom->getTile(p6) == TILE_SOLID);
|
||||||
test |= (mRoom->getTile(p8) == TILE_SOLID);
|
wall |= (mRoom->getTile(p7) == TILE_SOLID);
|
||||||
|
wall |= (mRoom->getTile(p8) == TILE_SOLID);
|
||||||
|
|
||||||
if (test)
|
if (wall)
|
||||||
{
|
{
|
||||||
// Si hay colisión, deshace el movimiento y lo pone en modo caída
|
// Si hay colisión, deshace el movimiento y lo pone en modo caída
|
||||||
mPlayer->undoLastMove();
|
mPlayer->undoLastMove();
|
||||||
mPlayer->setStatus(STATUS_FALLING);
|
mPlayer->setStatus(STATUS_FALLING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Comprueba si ha colisionado con un tile de los que matan al jugador
|
||||||
|
bool death = false;
|
||||||
|
death |= (mRoom->getTile(p1) == TILE_KILL);
|
||||||
|
death |= (mRoom->getTile(p2) == TILE_KILL);
|
||||||
|
death |= (mRoom->getTile(p3) == TILE_KILL);
|
||||||
|
death |= (mRoom->getTile(p4) == TILE_KILL);
|
||||||
|
death |= (mRoom->getTile(p5) == TILE_KILL);
|
||||||
|
death |= (mRoom->getTile(p6) == TILE_KILL);
|
||||||
|
death |= (mRoom->getTile(p7) == TILE_KILL);
|
||||||
|
death |= (mRoom->getTile(p8) == TILE_KILL);
|
||||||
|
|
||||||
|
if (death)
|
||||||
|
{
|
||||||
|
killPlayer();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba las colisiones del jugador con los enemigos
|
// Comprueba las colisiones del jugador con los enemigos
|
||||||
bool Game::checkPlayerAndEnemies()
|
bool Game::checkPlayerAndEnemies()
|
||||||
{
|
{
|
||||||
return mRoom->enemyCollision(mPlayer->getCollider());
|
const bool death = mRoom->enemyCollision(mPlayer->getCollider());
|
||||||
|
if (death)
|
||||||
|
{
|
||||||
|
killPlayer();
|
||||||
|
}
|
||||||
|
return death;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba las colisiones del jugador con los objetos
|
// Comprueba las colisiones del jugador con los objetos
|
||||||
void Game::checkPlayerAndItems()
|
void Game::checkPlayerAndItems()
|
||||||
{
|
{
|
||||||
mRoom->itemCollision(mPlayer->getCollider());
|
mRoom->itemCollision(mPlayer->getCollider());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mata al jugador
|
||||||
|
void Game::killPlayer()
|
||||||
|
{
|
||||||
|
// Destruye la habitacion y el jugador
|
||||||
|
delete mRoom;
|
||||||
|
delete mPlayer;
|
||||||
|
|
||||||
|
// Crea la nueva habitación y el nuevo jugador
|
||||||
|
mRoom = new Room(mAsset->get(mCurrentRoom), mRenderer, mAsset, mItemTracker);
|
||||||
|
mPlayer = new Player(mSpawnPoint, mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
|
||||||
}
|
}
|
||||||
@@ -76,6 +76,9 @@ private:
|
|||||||
// Comprueba las colisiones del jugador con los objetos
|
// Comprueba las colisiones del jugador con los objetos
|
||||||
void checkPlayerAndItems();
|
void checkPlayerAndItems();
|
||||||
|
|
||||||
|
// Mata al jugador
|
||||||
|
void killPlayer();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang, Input *input);
|
Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang, Input *input);
|
||||||
|
|||||||
@@ -464,10 +464,16 @@ int Room::getTile(SDL_Point point)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Los tiles mayores de 80 son atravesables
|
// Los tiles mayores de 80 son atravesables
|
||||||
if (tilemap[pos] > 200)
|
if ((tilemap[pos] > 200) && (tilemap[pos] < 381))
|
||||||
{
|
{
|
||||||
return TILE_TRAVESSABLE;
|
return TILE_TRAVESSABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Los tiles mayores de 80 son atravesables
|
||||||
|
if ((tilemap[pos] > 380) && (tilemap[pos] < 400))
|
||||||
|
{
|
||||||
|
return TILE_KILL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return tile;
|
return tile;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#define TILE_EMPTY 0
|
#define TILE_EMPTY 0
|
||||||
#define TILE_SOLID 1
|
#define TILE_SOLID 1
|
||||||
#define TILE_TRAVESSABLE 2
|
#define TILE_TRAVESSABLE 2
|
||||||
|
#define TILE_KILL 3
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Cada habitación se crea y destruye cada vez que se entra o sale de la misma
|
Cada habitación se crea y destruye cada vez que se entra o sale de la misma
|
||||||
|
|||||||
6
todo.txt
6
todo.txt
@@ -1,13 +1,17 @@
|
|||||||
[x] Hacer que deje de poder moverse tras el salto al alcanzar la misma posicion en altura que tenia cuando saltó
|
[x] Hacer que deje de poder moverse tras el salto al alcanzar la misma posicion en altura que tenia cuando saltó
|
||||||
[x] Arreglar que no atraviese tiles atravaseables al caer muy rapido
|
[x] Arreglar que no atraviese tiles atravaseables al caer muy rapido
|
||||||
[x] Leer los mapas directamente del archivo tmx
|
[x] Leer los mapas directamente del archivo tmx
|
||||||
[ ] Crear la clase item
|
[x] Crear la clase item
|
||||||
[x] Colisiones con los enemigos
|
[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
|
[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
|
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 maten
|
||||||
[ ] Crear tiles que deslicen, (no tipo hielo sino cinta)
|
[ ] Crear tiles que deslicen, (no tipo hielo sino cinta)
|
||||||
|
[ ] Tiles animados
|
||||||
[ ] Crear ascensores
|
[ ] Crear ascensores
|
||||||
|
[ ] Enemigos de diferente tamaño
|
||||||
|
[ ] Color de los items
|
||||||
|
[ ] Temporizador de inicio de los items
|
||||||
|
|
||||||
|
|
||||||
TEMAS:
|
TEMAS:
|
||||||
|
|||||||
Reference in New Issue
Block a user