-
Notifications
You must be signed in to change notification settings - Fork 0
/
autos.wlk
135 lines (105 loc) · 3.5 KB
/
autos.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
127
128
129
130
131
132
133
134
135
import colores.*
object dominic{
const autos = []
method comprar(auto){
autos.add(auto)
}
method finDeTemporada(){
autos.clear()
}
method promedioVelocidades() =
autos.sum({auto=> auto.velocidadMaxima()}) / autos.size()
method masRapido() =
self.autosEnCondiciones().max{auto=> auto.velocidadMaxima()}
method autosEnCondiciones() =
autos.filter{auto=>auto.enCondiciones()}
method autosNoEnCondiciones() =
autos.filter{auto=>not auto.enCondiciones()}
method hayUnAutoMuyRapido() =
self.masRapido().velocidadMaxima() > 2 * self.promedioVelocidades()
method hacerPrueba(){
autos.forEach({auto=>auto.hacerPrueba()})
}
method mandarAlTaller(){
taller.recibirAutos(self.autosNoEnCondiciones())
}
}
object taller {
const autos = []
method recibirAutos(nuevos){
autos.addAll(nuevos)
}
method trabajar(){
autos.forEach{auto=>auto.reparar()}
}
}
object ferrari {
// Tiene un motor que está inicialmente está funcionando en un 87% (puede oscilar entre 0 y 100%).
var motor = 87
//El problema es que al hacer una prueba de velocidad su motor se daña
//disminuyendo en 30 unidades su nivel funcionamiento actual.
method pruebaVelocidad(){
motor = (motor - 30).max(0)
}
//Está en condiciones para correr si el motor esta funcionando en al menos un 65%.
method enCondiciones() = motor >= 65
//Al reparar el motor, queda funcionando al 100%.
method reparar() {
motor = 100
}
//Su velocidad máxima es 110 km/s,
//más 15 km/s adicionales si el motor está funcionando por encima del 75%.
method velocidadMaxima() = 110 + if (motor > 75) 15 else 0
}
object gasolina{
method nivelMinimo() = 85
method modificarVelocidad(litros)= litros + 10
}
object nafta{
method nivelMinimo() = 50
method modificarVelocidad(litros)= litros * 0.9
}
object nitro{
method nivelMinimo() = 0
method modificarVelocidad(litros)= litros * 10
}
object flecha {
//Tiene un nivel de combustible inicial de 100 litros.
//Inicialmente se trata de gasolina, pero puede cambiar su combustible por nafta o nitrógeno líquido.
//El color inicial es azul.
var color = azul
var nivel = 100
var property combustible = gasolina
// En la prueba de velocidad el auto consume 5 litros del combustible que sea.
method pruebaVelocidad(){
nivel = nivel - 5
}
//Está en condiciones si tiene más de 85 litros de gasolina o 50 litros de nafta.
//En caso de que esté cargado con nitrógeno líquido, con que no esté totalmente vacío es suficiente.
//Además, para poder correr debe estar pintado de rojo.
method enCondiciones() = nivel > combustible.nivelMinimo() and color == rojo
//En el taller la reparación consiste en duplicar la cantidad de combustible que tenga y en cambiarle su color.
//Cuando su color es rojo cambia a azul, cuando es azul cambia a verde y cuando es verde cambia a rojo.
method reparar() {
nivel = nivel * 2
color = color.aCualCambia()
}
//Su velocidad máxima en principio es el doble de los litros de combustible que tenga,
//pero tambíen depende de que combustible sea.
//Si es gasolina se le agregan 10 km/s,
//si es nafta se pierde un 10% y
//si es nitrógeno líquido se multiplica por 10.
method velocidadMaxima() = combustible.modificarVelocidad(nivel * 2)
}
object intocable{
var enCondiciones = true
method pruebaVelocidad(){
enCondiciones = false
}
method enCondiciones() = enCondiciones
method reparar() {
enCondiciones = true
}
method velocidadMaxima() = 45
}
*/