-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathState.dart
More file actions
78 lines (63 loc) · 2.06 KB
/
State.dart
File metadata and controls
78 lines (63 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//Supongamos que tenemos un juego de aventuras y queremos implementar diferentes estados del jugador según su salud. Para ello, creamos una clase abstracta llamada EstadoJugador que define los métodos necesarios que deben implementarse en cada estado. Luego, creamos diferentes subclases que representan los estados del jugador: Saludable, Herido y EnPeligro.
abstract class EstadoJugador {
//interface
void mover();
void atacar();
}
class Saludable implements EstadoJugador {
@override
void mover() {
print("El jugador se mueve rápido");
}
@override
void atacar() {
print("El jugador ataca con fuerza");
}
}
class Herido implements EstadoJugador {
@override
void mover() {
print("El jugador se mueve lentamente");
}
@override
void atacar() {
print("El jugador ataca débilmente");
}
}
class EnPeligro implements EstadoJugador {
@override
void mover() {
print("El jugador apenas puede moverse");
}
@override
void atacar() {
print("El jugador no puede atacar");
}
}
//Luego, creamos una clase Jugador que tiene una instancia de EstadoJugador y que puede cambiar su estado según su salud:
class Jugador {
late EstadoJugador _estado;
void setEstado(EstadoJugador estado) {
_estado = estado;
}
void mover() {
_estado.mover();
}
void atacar() {
_estado.atacar();
}
}
//Finalmente, podemos usar la clase Jugador en nuestro juego y cambiar su estado según su salud:
void main() {
Jugador jugador = Jugador();
jugador.setEstado(Saludable());
jugador.mover(); // El jugador se mueve rápido
jugador.atacar(); // El jugador ataca con fuerza
jugador.setEstado(Herido());
jugador.mover(); // El jugador se mueve lentamente
jugador.atacar(); // El jugador ataca débilmente
jugador.setEstado(EnPeligro());
jugador.mover(); // El jugador apenas puede moverse
jugador.atacar(); // El jugador no puede atacar
}
//En este ejemplo, el patrón State nos permite definir diferentes comportamientos del jugador según su estado, sin tener que crear diferentes clases de jugador para cada estado.