Skip to content

Commit

Permalink
solucion
Browse files Browse the repository at this point in the history
  • Loading branch information
lspigariol committed Jul 14, 2024
0 parents commit 01daaf9
Show file tree
Hide file tree
Showing 10 changed files with 9,968 additions and 0 deletions.
14 changes: 14 additions & 0 deletions .github/workflows/ci.yml
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
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@


## example

TODO

104 changes: 104 additions & 0 deletions futbol.wlk
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
}
1,646 changes: 1,646 additions & 0 deletions log/wollok.log

Large diffs are not rendered by default.

2,579 changes: 2,579 additions & 0 deletions log/wollok1.log

Large diffs are not rendered by default.

3,585 changes: 3,585 additions & 0 deletions log/wollok2.log

Large diffs are not rendered by default.

1,017 changes: 1,017 additions & 0 deletions log/wollok3.log

Large diffs are not rendered by default.

946 changes: 946 additions & 0 deletions log/wollok4.log

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions package.json
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"
}
64 changes: 64 additions & 0 deletions testFutbol.wtest
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"))
}

}

0 comments on commit 01daaf9

Please sign in to comment.