-
Notifications
You must be signed in to change notification settings - Fork 0
/
intensamente.wlk
145 lines (104 loc) · 3.78 KB
/
intensamente.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
136
137
138
139
140
141
142
143
144
145
//INTENSAMENTE//
class Persona {
const property emociones = []
var property intensidad
var property edad
//PUNTO 1//
method esAdolescente() = edad.between(12, 19)
//PUNTO 2//
method nuevaEmocion(unaEmocion) {
emociones.add(unaEmocion)
}
//PUNTO 3//
method estaPorExplotar() = emociones.all({ e => e.puedeLiberarse() })
//PUNTO 4//
method vivirEvento(unEvento) {
unEvento.liberarEmociones(emociones)
}
}
class Grupo {
const property grupoPersonas = []
method agregarPersona(unaPersona) {
grupoPersonas.add(unaPersona)
}
//PUNTO 4//
method vivirEvento(unEvento) {
grupoPersonas.forEach({ p => p.vivirEvento(unEvento) })
}
}
class Evento {
var property impacto
const property descripcionEvento
method liberarEmociones(variasEmociones) {
variasEmociones.forEach({ e => e.liberar(self) })
}
//PUNTO 6//
method vivirEvento(unAlgo) { //SE PODRÍA LLAMAR SUCEDER//
unAlgo.vivirEvento(self)
}
}
class Emocion {
var property intensidad = 0
var property intensidadLimite = 120 //INVENTADO//
var property eventosVividos = []
method cantidadEventosVividos() = eventosVividos.size()
//PUNTO 5//
method variarIntensidadLimite(unValorLimite) { intensidad = unValorLimite }
method puedeLiberarse() = self.tieneIntensidadElevada() && self.condicionExtraDeLiberacion()
method condicionExtraDeLiberacion() = true //EMOCIONES SIN CONDICION EXTRA//
method liberar(unEvento) {
if(self.puedeLiberarse())
self.variarIntensidad(unEvento.impacto())
self.consecuenciaExtraDeLiberacion(unEvento)
}
method consecuenciaExtraDeLiberacion(unEvento) {}
method tieneIntensidadElevada() = intensidad > intensidadLimite
method variarIntensidad(unaCantidad) { intensidad += unaCantidad }
}
class Furia inherits Emocion(intensidad = 100) {
const property palabrotas = []
method aprenderPalabrota(unaPalabrota) {
palabrotas.add(unaPalabrota)
}
method olvidarPalabrota(unaPalabrota) {
palabrotas.remove(unaPalabrota)
}
override method consecuenciaExtraDeLiberacion(unEvento) {
palabrotas.remove(palabrotas.last())
}
override method condicionExtraDeLiberacion() = self.conoceUnaGranPalabrota()
method conoceUnaGranPalabrota() {
return palabrotas.any({ p => p.size() > 7 })
}
}
class Alegria inherits Emocion {
override method variarIntensidad(unaCantidad) {
const nuevaIntensidad = intensidad - unaCantidad
if(nuevaIntensidad < 0) intensidad = nuevaIntensidad * (-1)
}
override method condicionExtraDeLiberacion() = self.cantidadEventosVividos().even()
}
class Tristeza inherits Emocion {
var property causa = "Melancolia"
method cambiarCausa(nuevaCausa) { causa = nuevaCausa }
override method consecuenciaExtraDeLiberacion(unEvento) {
self.cambiarCausa(unEvento.descripcionEvento())
}
override method condicionExtraDeLiberacion() = causa != "Melancolia"
}
class OtraEmocion inherits Emocion {
override method condicionExtraDeLiberacion() = self.cantidadEventosVividos() > intensidad
}
const desagrado = new OtraEmocion()
const temor = new OtraEmocion()
//INTENSAMENTE 2//
class Ansiedad inherits Emocion { //TODOS LA TIENEN... DE DISTINTAS MANERA//
var property tazasDeTe //CADA ANSIEDAD TIENE UNA CANTIDAD DE TAZAS DE TÉ PARA BEBER//
override method condicionExtraDeLiberacion() = tazasDeTe == 0
//NADIE QUIERE VERLA TRABAJANDO SIN SU TAZA DE TÉ (ES INTENSA)... POR ESO LO COMPRAN MÁS//
override method consecuenciaExtraDeLiberacion(unEvento) { tazasDeTe += unEvento.impacto() }
}
/*
Conceptos como HERENCIA y POLIMORFISMO fueron de utilidad a la hora de inventar una emocion diferente, pero que siga siendo capaz de
RESPONDER / RECONOCER los metodos que conoce toda emocion (ademas de incluir caracteristicas própias). Tambien, evita la repeticion de codigo.
*/