Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
José Pardo Madera
/
ProjectoMultimeda2025
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
75ddf002
authored
Apr 17, 2025
by
Jaime de la Chica Bergillos
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Mano implementada lo que ha costado nano
parent
16f8e819
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
219 additions
and
6 deletions
Executable
Historia.h
Mano.cpp
Mano.h
PantallaCama.cpp
PantallaCama.h
Sprite.h
makefile
Executable
View file @
75ddf002
No preview for this file type
Historia.h
View file @
75ddf002
...
...
@@ -18,7 +18,7 @@ class Historia{
};
private
:
Secuencia
estadoActual
=
PreInicio
;
Secuencia
estadoActual
=
CajaAbierta
;
void
limpiarEstado
();
void
siguienteEstado
(
Secuencia
estado
);
...
...
Mano.cpp
0 → 100644
View file @
75ddf002
#include "Mano.h"
#include <string.h>
Mano
::
Mano
()
:
manos
(
array
<
Sprite
,
4
>
{
Sprite
(
"assets/manoAbajo.png"
),
Sprite
(
"assets/manoDerecha.png"
),
Sprite
(
"assets/manoIzquierda.png"
),
Sprite
(
"assets/manoArriba.png"
),
})
,
brazos
(
array
<
Sprite
,
4
>
{
Sprite
(
"assets/brazoAbajo.png"
),
Sprite
(
"assets/brazoDerecha.png"
),
Sprite
(
"assets/brazoIzquierda.png"
),
Sprite
(
"assets/brazoArriba.png"
),
})
{
}
void
Mano
::
move
(
Facing
direction
)
{
this
->
estado
=
direction
;
std
::
cout
<<
" move la mano antes Se mueve a "
<<
x
<<
" "
<<
profundidades
<<
endl
;
cola
.
push_back
(
Cola
(
brazos
[
estado
],
x
,
profundidades
));
switch
(
estado
)
{
case
Frente
:
profundidades
+=
210
;
break
;
case
Derecha
:
x
+=
220
;
break
;
case
Izquierda
:
x
-=
220
;
break
;
case
Fondo
:
profundidades
-=
210
;
break
;
}
cout
<<
" move la mano despues Se mueve a "
<<
x
<<
" "
<<
profundidades
<<
endl
;
}
void
Mano
::
renderizar
(
SDL_Renderer
*
renderer
,
int
tamx
,
int
tamy
)
{
cout
<<
" Renderizar mano Se mueve a "
<<
x
<<
" "
<<
profundidades
<<
endl
;
manos
[
estado
].
renderizar
(
renderer
,
x
,
profundidades
,
170
,
170
,
tamx
,
tamy
);
}
void
Mano
::
renderizar_cola
(
SDL_Renderer
*
renderer
,
int
tamx
,
int
tamy
)
{
for
(
int
i
=
0
;
i
<
cola
.
size
();
i
++
)
{
cola
[
i
].
getSprite
().
renderizar
(
renderer
,
cola
[
i
].
getX
(),
cola
[
i
].
getProfundidades
(),
170
,
170
,
tamx
,
tamy
);
}
}
void
Mano
::
comprobarColision
(
Hitbox
&
hitbox
){
if
(
hitbox
.
colisiona
(
x
,
profundidades
)){
cout
<<
"Esta colisionando la mano"
<<
endl
;
cola
.
pop_back
();
switch
(
estado
)
{
case
Frente
:
profundidades
-=
210
;
break
;
case
Derecha
:
x
-=
220
;
break
;
case
Izquierda
:
x
+=
220
;
break
;
case
Fondo
:
profundidades
+=
210
;
break
;
}
}
}
bool
Mano
::
comprobarColisionPasiva
(
Hitbox
&
hitbox
){
if
(
hitbox
.
colisiona
(
x
,
profundidades
)){
return
true
;
}
else
return
false
;
}
void
Mano
::
reiniciar
(){
estado
=
Fondo
;
x
=
870
;
profundidades
=
650
;
cola
.
clear
();
}
Mano.h
0 → 100644
View file @
75ddf002
#pragma once
#include <array>
#include <optional>
#include <SDL2/SDL.h>
#include <chrono>
#include "Sprite.h"
#include "Objeto.h"
#include "Hitbox.h"
#include "Sonido.h"
#include "Personaje.h"
using
namespace
std
;
typedef
std
::
chrono
::
time_point
<
std
::
chrono
::
system_clock
>
Instant
;
class
Mano
{
class
Cola
{
public
:
Sprite
sprite
;
int
x
;
int
profundidades
;
Cola
(
Sprite
spr
,
int
_x
,
int
_prof
)
:
sprite
(
spr
),
x
(
_x
),
profundidades
(
_prof
){}
Sprite
getSprite
(){
return
sprite
;}
int
getX
(){
return
x
;}
int
getProfundidades
(){
return
profundidades
;}
};
array
<
Sprite
,
4
>
manos
;
array
<
Sprite
,
4
>
brazos
;
vector
<
Cola
>
cola
;
Instant
momento_ultimo_movimiento
=
std
::
chrono
::
system_clock
::
now
();
Facing
estado
=
Fondo
;
int
x
=
870
;
int
profundidades
=
650
;
public
:
Mano
();
void
move
(
Facing
direcion
);
void
renderizar
(
SDL_Renderer
*
renderer
,
int
tamx
,
int
tamy
);
void
renderizar_cola
(
SDL_Renderer
*
renderer
,
int
tamx
,
int
tamy
);
void
comprobarColision
(
Hitbox
&
hitbox
);
bool
comprobarColisionPasiva
(
Hitbox
&
hitbox
);
void
setX
(
int
x
)
{
this
->
x
=
x
;
};
void
setZ
(
int
z
)
{
this
->
profundidades
=
z
;
};
void
reiniciar
();
};
PantallaCama.cpp
View file @
75ddf002
...
...
@@ -24,24 +24,60 @@ PantallaCama::PantallaCama() :
hitObs
{
Hitbox
(
500
,
300
,
300
,
200
)
},
hitCartera
(
0
,
0
,
0
,
0
),
cancion
(
"assets/LonesomeJourneyByKeysOfMoonMusic.wav"
,
true
),
sonidoBoton
(
"assets/SonidoClicar.wav"
,
false
)
{
}
void
PantallaCama
::
comprobarColisionesActivas
()
{
for
(
int
i
=
0
;
i
<
hitObs
.
size
();
i
++
){
mano
.
comprobarColision
(
hitObs
[
i
]);
}
for
(
int
i
=
0
;
i
<
colisionesParedes
.
size
();
i
++
){
mano
.
comprobarColision
(
colisionesParedes
[
i
]);
}
}
void
PantallaCama
::
comprobarColisionesPasivas
()
{
if
(
mano
.
comprobarColisionPasiva
(
hitCartera
)){
carteraTocada
=
true
;
}
}
void
PantallaCama
::
manejarEntrada
(
Handle
&
handle
)
{
SDL_Event
event
;
while
(
SDL_PollEvent
(
&
event
))
{
switch
(
event
.
type
)
{
case
SDL_KEYDOWN
:
switch
(
event
.
key
.
keysym
.
sym
)
{
case
13
:
case
SDLK_LEFT
:
if
(
movimiento
)
mano
.
move
(
Izquierda
);
movimiento
=
false
;
break
;
case
SDLK_RIGHT
:
if
(
movimiento
)
mano
.
move
(
Derecha
);
movimiento
=
false
;
break
;
case
SDLK_UP
:
if
(
movimiento
)
mano
.
move
(
Fondo
);
movimiento
=
false
;
break
;
case
SDLK_DOWN
:
if
(
movimiento
)
mano
.
move
(
Frente
);
movimiento
=
false
;
break
;
};
comprobarColisionesActivas
();
comprobarColisionesPasivas
();
break
;
}
case
SDL_KEYUP
:
movimiento
=
true
;
break
;
case
SDL_MOUSEBUTTONDOWN
:
{
int
xRaton
=
0
;
...
...
@@ -53,8 +89,14 @@ void PantallaCama::manejarEntrada(Handle &handle) {
if
(
atras
.
colisionaObjeto
(
xRaton
,
zRaton
)){
sonidoBoton
.
play
();
cancion
.
pausar
();
movimiento
=
true
;
handle
.
removeme
();
}
else
if
(
reiniciar
.
colisionaObjeto
(
xRaton
,
zRaton
)){
mano
.
reiniciar
();
movimiento
=
true
;
}
}
break
;
...
...
@@ -79,6 +121,8 @@ void PantallaCama::renderizar(SDL_Renderer *renderer, int tamx, int tamy) {
obstaculos
[
5
].
renderizar
(
renderer
,
870
,
440
,
170
,
170
,
tamx
,
tamy
);
obstaculos
[
6
].
renderizar
(
renderer
,
1090
,
440
,
170
,
170
,
tamx
,
tamy
);
obstaculos
[
7
].
renderizar
(
renderer
,
1090
,
250
,
170
,
170
,
tamx
,
tamy
);
mano
.
renderizar
(
renderer
,
tamx
,
tamy
);
mano
.
renderizar_cola
(
renderer
,
tamx
,
tamy
);
atras
.
renderizar
(
renderer
,
tamx
,
tamy
);
...
...
PantallaCama.h
View file @
75ddf002
...
...
@@ -7,11 +7,13 @@
#include "Texto.h"
#include "Fuente.h"
#include "Sonido.h"
#include "Mano.h"
class
PantallaCama
:
public
Pantalla
{
vector
<
Sprite
>
obstaculos
;
Sprite
cartera
;
Hitbox
hitCartera
;
vector
<
Hitbox
>
hitObs
;
vector
<
Hitbox
>
colisionesParedes
;
Objeto
atras
;
...
...
@@ -20,6 +22,9 @@ class PantallaCama : public Pantalla {
Sprite
Fondo1
;
Sonido
cancion
;
Sonido
sonidoBoton
;
Mano
mano
;
bool
carteraTocada
=
false
;
bool
movimiento
=
true
;
...
...
@@ -33,4 +38,8 @@ public:
bool
transparente
()
override
{
return
false
;
};
void
comprobarColisionesPasivas
();
void
comprobarColisionesActivas
();
};
Sprite.h
View file @
75ddf002
...
...
@@ -17,7 +17,7 @@ public:
Sprite
(
const
Sprite
&
other
);
void
renderizar
(
SDL_Renderer
*
Renderer
,
int
x
,
int
y
,
int
w
,
int
h
,
int
tamx
,
int
tamy
,
bool
centrar
=
false
);
std
::
string
getCamino
(){
return
camino
;}
~
Sprite
();
};
...
...
makefile
View file @
75ddf002
CC
=
g++
CodeFiles
=
main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp Texto.cpp GestorPantallas.cpp PantallaPrincipal.cpp PantallaPrincipal2.cpp ColeccionPantallas.cpp Video.cpp PantallaInicio.cpp PantallaMundo.cpp Sonido.cpp Historia.cpp PantallaFecha.cpp PantallaCama.cpp
CodeFiles
=
main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp Texto.cpp GestorPantallas.cpp PantallaPrincipal.cpp PantallaPrincipal2.cpp ColeccionPantallas.cpp Video.cpp PantallaInicio.cpp PantallaMundo.cpp Sonido.cpp Historia.cpp PantallaFecha.cpp PantallaCama.cpp
Mano.cpp
bin
=
Executable
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment