generated from pdepjm/2024-o-repo-base
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample.wlk
126 lines (80 loc) · 2.65 KB
/
example.wlk
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
object pepita {
var energy = 100
method energy() = energy
method fly(minutes) {
energy = energy - minutes * 3
}
}
class Personaje{
var property copas = 0
method darCopas(cuantas){
copas += cuantas
}
}
class Arquero inherits Personaje{
var agilidad
var rango
method destreza() = agilidad * rango
method tieneEstrategia() = rango > 100
}
class Guerrera inherits Personaje{
var fuerza
var estrategia
method tieneEstrategia() = estrategia
method destreza() = fuerza * 1.5
}
class Ballestero inherits Arquero{
override method destreza() = super() * 2
}
class Mision{
var tipoMision = MisionComun
method realizar(){
self.verificarPuedeRealizarse()
self.repartirCopas()
}
method esSuperada() = self.tieneEstrategia() || self.destrezaSuficiente()
method tieneEstrategia()
method destrezaSuficiente()
method sePuedeRealizar()
method verificarPuedeRealizarse(){
if(not(self.sePuedeRealizar())){
throw new Exception(message = "Mision no puede comenzar")
}
}
method repartirCopas()
method sumarOrestar()= if(self.esSuperada())1 else -1
method cantCopasTotales() = tipoMision.cantCopas(self)
}
class MisionIndividual inherits Mision{
var personaje
var dificultad
method copasEnJuego() = 2 * dificultad
override method tieneEstrategia() = personaje.tieneEstrategia()
override method destrezaSuficiente() = personaje.destreza() > dificultad
override method sePuedeRealizar() = personaje.copas() >= 10
method cambiarPersonaje(nuevoPer){
personaje = nuevoPer
}
method cantParticipantes() = 1
override method repartirCopas(){personaje.darCopas(self.cantCopasTotales() * self.sumarOrestar())}
}
class MisionPorEquipo inherits Mision{
const personajes = []
method cantParticipantes() = personajes.size()
method copasEnJuego() = 50 / self.cantParticipantes()
override method tieneEstrategia() = self.personajesConEstrategia() > (self.cantParticipantes() / 2)
method personajesConEstrategia() = personajes.count({personaje=>personaje.tieneEstrategia()})
override method destrezaSuficiente() = personajes.all({personaje=>personaje.destreza() > 400})
override method sePuedeRealizar() = personajes.sum({personaje=>personaje.copas()} >= 60)
override method repartirCopas(){personajes.forEach({personaje=>personaje.darCopas(self.cantCopasTotales() * self.sumarOrestar())})}
}
class MisionComun{
method cantCopas(mision) = mision.copasEnJuego()
}
class MisionBoost{
var property multiplicador
method cantCopas(mision) = mision.copasEnJuego() * multiplicador
}
class MisionBonus{
method cantCopas(mision) = mision.copasEnJuego() + mision.cantParticipantes()
}