-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCasilla.cs
More file actions
137 lines (120 loc) · 3.44 KB
/
Copy pathCasilla.cs
File metadata and controls
137 lines (120 loc) · 3.44 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using Spectre.Console;
namespace MazeRunners
{
public abstract class Casilla
{
public (int x, int y) Posicion {get; set;}
public string? Tipo {get; set;}
public abstract void Display();
public abstract void DisplayPlayer();
}
public class Muro : Casilla
{
public Muro ((int, int) posicion)
{
Posicion = posicion;
Tipo = "Muro";
}
public override void Display()
{
AnsiConsole.Markup("⬜ ");
}
public override void DisplayPlayer()
{
AnsiConsole.Markup("🏃 ");
}
}
public class Camino : Casilla
{
public Camino((int, int) posicion)
{
Posicion = posicion;
Tipo = "Camino";
}
public override void Display()
{
AnsiConsole.Markup(" ");
}
public override void DisplayPlayer()
{
AnsiConsole.Markup("🏃 ");
}
}
public class Winner : Camino
{
public Winner((int, int) posicion) : base(posicion)
{
Posicion = posicion;
Tipo = "Winner";
}
public override void Display()
{
AnsiConsole.Markup("⭐ ");
}
public override void DisplayPlayer()
{
AnsiConsole.Markup("🏃 ");
}
}
public abstract class Trampa : Casilla
{
public Trampa((int, int) posicion)
{
Posicion = posicion;
Tipo = "Trampa";
}
public abstract void Active(Jugador jugador, Casilla[,] maze);
public override void Display()
{
AnsiConsole.Markup("💀 ");
}
public override void DisplayPlayer()
{
AnsiConsole.Markup("🏃 ");
}
}
public class SlowTrap : Trampa
{
public int SpeedReduction { get; set; }
public SlowTrap((int,int) posicion) : base(posicion)
{
SpeedReduction =1;
}
public override void Active(Jugador jugador, Casilla[,] maze)
{
jugador.Speed = Math.Max(jugador.Speed - SpeedReduction, 0);
AnsiConsole.Markup($"[red] Cuidado! Caiste en una trampa y tu velocidad fue reducida en {SpeedReduction}.[/]");
}
}
public class TeleportTrap : Trampa
{
private Random rand = new Random();
public TeleportTrap((int,int) posicion) : base(posicion) {}
public override void Active(Jugador jugador, Casilla[,] maze)
{
int x, y;
do
{
x = rand.Next(1, maze.GetLength(0) - 1);
y = rand.Next(1, maze.GetLength(1) - 1);
}
while (!(maze[x,y] is Camino));
jugador.Posicion = (x,y);
AnsiConsole.Markup($"[red] Cuidado! Caiste en una trampa y tu jugador fue teleportado a una nueva ubicacion.[/]");
}
}
public class StunTrap : Trampa
{
public int StunDuration {get; set; }
public StunTrap((int,int) posicion) : base(posicion)
{
StunDuration = 1;
}
public override void Active(Jugador jugador, Casilla[,] maze)
{
jugador.Speed = 0;
jugador.Status = "Stunned";
AnsiConsole.Markup($"[red] Cuidado! Caiste en una trampa y tu jugador fue stuneado por {StunDuration}.[/]");
}
}
}