-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 01daaf9
Showing
10 changed files
with
9,968 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
name: build | ||
|
||
on: [push, pull_request] | ||
jobs: | ||
wollok-ts: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- run: | | ||
wget -O wollok-ts-cli https://github.com/uqbar-project/wollok-ts-cli/releases/latest/download/wollok-ts-cli-linux-x64 | ||
chmod a+x ./wollok-ts-cli | ||
./wollok-ts-cli test --skipValidations -p ./ | ||
shell: bash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
|
||
|
||
## example | ||
|
||
TODO | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
object fifa { | ||
const partidos = [] | ||
|
||
method agregarPartido(partido){ | ||
partidos.add(partido) | ||
} | ||
method cuantasVecesJugo(eq1,eq2) = | ||
partidos.count({p=> p.jugo(eq1) and p.jugo(eq2)}) | ||
} | ||
|
||
class Partido { | ||
const equipo1 | ||
const equipo2 | ||
const jugadas = [] | ||
|
||
method jugo(equipo) = equipo1 == equipo or equipo2 == equipo | ||
method adversario(equipo) = | ||
if (equipo1 == equipo) equipo2 else equipo1 | ||
|
||
method goles(equipo) = | ||
jugadas.count({j=>j.fueGol(equipo)}) | ||
|
||
method gano(equipo) = | ||
self.goles(equipo) > self.goles(self.adversario(equipo)) | ||
|
||
method fueMasEntretenido() = jugadas.count{j=>j.segundoTiempo()} > jugadas.size()/2 | ||
|
||
method cuantasTarjetas(equipo) = jugadas.count{j=>j.sacaTarjeta(equipo)} | ||
} | ||
|
||
class Jugada { | ||
var minuto | ||
var property jugador | ||
method fueGol(e) = false | ||
|
||
method segundoTiempo() = minuto > 45 | ||
|
||
method sacaTarjeta(equipo) = self.correspondeTarjeta() and self.esDelEquipo(equipo) | ||
|
||
method esDelEquipo(equipo) = jugador.esDelEquipo(equipo) | ||
|
||
method correspondeTarjeta() = false | ||
} | ||
|
||
class JugadaFalta inherits Jugada{ | ||
var intensidad | ||
var otroJugador | ||
|
||
override method correspondeTarjeta() = intensidad > 75 | ||
|
||
} | ||
|
||
class JugadaInsulto inherits Jugada{ | ||
var insulto | ||
|
||
override method correspondeTarjeta() = insulto == "madre" | ||
|
||
} | ||
|
||
class JugadaPelea inherits Jugada{ | ||
var otroJugador | ||
override method esDelEquipo(equipo) = super(equipo) or otroJugador.esDelEquipo(equipo) | ||
method correspondeTarjeta() = true | ||
} | ||
|
||
class JugadaArco inherits Jugada{ | ||
override method fueGol(equipo) = self.esDelEquipo(equipo) | ||
} | ||
|
||
class JugadaVar inherits JugadaArco { | ||
|
||
const circunstancias = [] | ||
override method fueGol(equipo) = super(equipo) and elVar.golValido(self) | ||
|
||
method tieneCircunstancia(c) = circunstancias.contains(c) | ||
|
||
override method correspondeTarjeta() = self.tieneCircunstancia("Camiseta") | ||
} | ||
object elVar { | ||
var property modo = modoMasGoles | ||
method golValido(jugada) = modo.golValido(jugada) | ||
} | ||
|
||
object modoMasGoles { | ||
method golValido(jugada) = true | ||
} | ||
|
||
object modoFifa{ | ||
method golValido(jugada) = jugada.jugador().esEstrella() | ||
} | ||
|
||
object modoJusticia{ | ||
method golValido(jugada) = not self.hayCircunstanciaInvalida(jugada) | ||
|
||
method hayCircunstanciaInvalida(jugada) = | ||
jugada.tieneCircunstancia("Mano") or | ||
jugada.tieneCircunstancia("Adelantado") or | ||
jugada.tieneCircunstancia("No pasó") | ||
} | ||
class Jugador { | ||
var property equipo | ||
var property esEstrella = false | ||
method esDelEquipo(e) = equipo == e | ||
} |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"name": "fotbolagusto", | ||
"version": "1.0.0", | ||
"wollokVersion": "4.0.0", | ||
"author": "lucas", | ||
"license": "ISC" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
import futbol.* | ||
|
||
describe "tests del futbol" { | ||
|
||
const grupo = | ||
new Partido(equipo1 = "Can",equipo2 = "Arg") | ||
const cuartos = | ||
new Partido(equipo1 = "Arg", equipo2 = "Ecu") | ||
const semi = | ||
new Partido(equipo1 = "Arg",equipo2 = "Can") | ||
|
||
const grupo2 = | ||
new Partido(equipo1 = "Per",equipo2 = "Arg", | ||
jugadas = [new Jugada(jugador = messi,minuto=30), | ||
new JugadaArco(jugador = messi,minuto=40), | ||
new JugadaArco(jugador = dimaria,minuto = 50), | ||
new JugadaArco(jugador = carlos,minuto = 80), | ||
new Jugada(jugador = messi,minuto=89) | ||
]) | ||
const messi = new Jugador(equipo = "Arg") | ||
const dimaria = new Jugador(equipo = "Arg") | ||
const carlos = new Jugador(equipo = "Per") | ||
|
||
const diego = new Jugador(equipo = "Arg",esEstrella = true) | ||
|
||
const golIngleses = new JugadaVar(jugador = diego, minuto = 59, circunstancias = ["Mano"]) | ||
|
||
test "Cuantas veces se jugo un mismo partido" { | ||
fifa.agregarPartido(grupo) | ||
fifa.agregarPartido(cuartos) | ||
fifa.agregarPartido(semi) | ||
assert.equals(2,fifa.cuantasVecesJugo("Arg","Can")) | ||
} | ||
|
||
test "adversario de un equipo" { | ||
assert.equals("Can",semi.adversario("Arg")) | ||
} | ||
|
||
test "cantidad de goles en un partido para cada equipo" { | ||
assert.equals(2, grupo2.goles("Arg")) | ||
assert.equals(1, grupo2.goles("Per")) | ||
} | ||
test "ganador del partido " { | ||
assert.that(grupo2.gano("Arg")) | ||
} | ||
test "fue entretenido al final " { | ||
assert.that(grupo2.fueMasEntretenido()) | ||
} | ||
|
||
test "Var en modo Fifa convalida gol a jugador estrella pese a ser con la mano"{ | ||
elVar.modo(modoFifa) | ||
assert.that(golIngleses.fueGol("Arg")) | ||
} | ||
test "Var en modo justo no convalida gol con la mano"{ | ||
elVar.modo(modoJusticia) | ||
assert.notThat(golIngleses.fueGol("Arg")) | ||
} | ||
|
||
test "Var en modo mas goles convalida gol "{ | ||
elVar.modo(modoMasGoles) | ||
assert.that(golIngleses.fueGol("Arg")) | ||
} | ||
|
||
} |