From 8dad368d07eb6052aa38245d66acab99e62e6069 Mon Sep 17 00:00:00 2001 From: Fernando Dodino Date: Sat, 18 May 2024 15:14:52 -0300 Subject: [PATCH] =?UTF-8?q?Migraci=C3=B3n=20a=20Wollok=20TS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 7 - .github/workflows/ci.yml | 14 ++ .gitignore | 1 - .project | 35 --- .settings/org.eclipse.jdt.core.prefs | 7 - .svn/entries | 1 - .svn/format | 1 - ...aebfea0d56bfefdcae5c4168b9db1cc04.svn-base | 10 - ...a3bfe5c52faa0f18ecac22ae033c56925.svn-base | 35 --- ...265da1d0586f55eb3902ece37c35d3d00.svn-base | 6 - ...6306d3c0efc1d5d88c5c373e5525d72f9.svn-base | 15 -- ...a6e12f06e0c7820fc99f8602f9f20e59f.svn-base | 1 - ...c4ba767010f32a54ef22de71e83bd7e1e.svn-base | 7 - ...afa13d8d8485e3433444801f3c90a9d77.svn-base | 22 -- ...696f34a05228332b85d1f969a4714ab8a.svn-base | 3 - ...d47f93db8b331fcb7ab5141c3c491ce63.svn-base | 116 --------- ...bcc91365c76dc289418a446ff7883abb9.svn-base | 24 -- ...4626e8cad379c1d43e5229e591d353260.svn-base | 116 --------- ...b1bda74e95d62d96c8bca56604e2f7415.svn-base | 45 ---- ...58585e97413158196d9eac2f291201c42.svn-base | 1 - ...4bad4cde1f3c8e5996043a1cf43b7a2d9.svn-base | 16 -- ...86a806153e7326eff89e473a2b9fecdec.svn-base | 37 --- ...af7a2f8e30024e25e11a31f8174bb4246.svn-base | 1 - ...9b50790154308001e82c8dd50930bc1f9.svn-base | 37 --- ...01be69104cde695318ed7ea2bb35b22cc.svn-base | 50 ---- ...0973331b8663bad8b1c28e82490948512.svn-base | 42 ---- ...8d4c8cce5324fc05fe10ab4921391bb33.svn-base | 25 -- ...bac11ec2dbd710354be07ef606f7195fd.svn-base | 114 --------- ...d071dd94cbdaa19b4192966ab48a79266.svn-base | 7 - ...f6bf8a1dfe53af1d884bb96848f9e0eda.svn-base | 103 -------- .svn/wc.db | Bin 46080 -> 0 bytes .travis.yml | 8 - META-INF/MANIFEST.MF | 22 -- README.md | 2 +- src/armas.wlk => armas.wlk | 56 ++--- build.properties | 3 - src/coliseo.wlk => coliseo.wlk | 78 +++--- src/gladiador.wlk => gladiador.wlk | 186 +++++++------- ...iadorHerencia.wlk => gladiadorHerencia.wlk | 226 +++++++++--------- package.json | 7 + src/WOLLOK.ROOT | 1 - src/log4j.properties | 10 - src/gladiador.wtest => testGladiador.wtest | 162 ++++++------- wollokREPL.wlk | 1 - 44 files changed, 376 insertions(+), 1285 deletions(-) delete mode 100644 .classpath create mode 100644 .github/workflows/ci.yml delete mode 100644 .gitignore delete mode 100644 .project delete mode 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100644 .svn/entries delete mode 100644 .svn/format delete mode 100644 .svn/pristine/08/0851794aebfea0d56bfefdcae5c4168b9db1cc04.svn-base delete mode 100644 .svn/pristine/08/08f903ea3bfe5c52faa0f18ecac22ae033c56925.svn-base delete mode 100644 .svn/pristine/23/23f43ae265da1d0586f55eb3902ece37c35d3d00.svn-base delete mode 100644 .svn/pristine/24/2479aa96306d3c0efc1d5d88c5c373e5525d72f9.svn-base delete mode 100644 .svn/pristine/33/334a7d4a6e12f06e0c7820fc99f8602f9f20e59f.svn-base delete mode 100644 .svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base delete mode 100644 .svn/pristine/58/5885889afa13d8d8485e3433444801f3c90a9d77.svn-base delete mode 100644 .svn/pristine/5e/5e5ae4c696f34a05228332b85d1f969a4714ab8a.svn-base delete mode 100644 .svn/pristine/66/6696c9fd47f93db8b331fcb7ab5141c3c491ce63.svn-base delete mode 100644 .svn/pristine/68/682931bbcc91365c76dc289418a446ff7883abb9.svn-base delete mode 100644 .svn/pristine/6a/6a5070e4626e8cad379c1d43e5229e591d353260.svn-base delete mode 100644 .svn/pristine/74/74bce2cb1bda74e95d62d96c8bca56604e2f7415.svn-base delete mode 100644 .svn/pristine/88/885417e58585e97413158196d9eac2f291201c42.svn-base delete mode 100644 .svn/pristine/94/942051a4bad4cde1f3c8e5996043a1cf43b7a2d9.svn-base delete mode 100644 .svn/pristine/af/af137c386a806153e7326eff89e473a2b9fecdec.svn-base delete mode 100644 .svn/pristine/b5/b55b0a7af7a2f8e30024e25e11a31f8174bb4246.svn-base delete mode 100644 .svn/pristine/bc/bcf730b9b50790154308001e82c8dd50930bc1f9.svn-base delete mode 100644 .svn/pristine/c5/c54393301be69104cde695318ed7ea2bb35b22cc.svn-base delete mode 100644 .svn/pristine/d1/d1171e80973331b8663bad8b1c28e82490948512.svn-base delete mode 100644 .svn/pristine/de/ded12df8d4c8cce5324fc05fe10ab4921391bb33.svn-base delete mode 100644 .svn/pristine/df/df57ed4bac11ec2dbd710354be07ef606f7195fd.svn-base delete mode 100644 .svn/pristine/ee/ee37c63d071dd94cbdaa19b4192966ab48a79266.svn-base delete mode 100644 .svn/pristine/f3/f39105cf6bf8a1dfe53af1d884bb96848f9e0eda.svn-base delete mode 100644 .svn/wc.db delete mode 100644 .travis.yml delete mode 100644 META-INF/MANIFEST.MF rename src/armas.wlk => armas.wlk (92%) delete mode 100644 build.properties rename src/coliseo.wlk => coliseo.wlk (95%) rename src/gladiador.wlk => gladiador.wlk (95%) rename src/gladiadorHerencia.wlk => gladiadorHerencia.wlk (94%) create mode 100644 package.json delete mode 100644 src/WOLLOK.ROOT delete mode 100644 src/log4j.properties rename src/gladiador.wtest => testGladiador.wtest (96%) delete mode 100644 wollokREPL.wlk diff --git a/.classpath b/.classpath deleted file mode 100644 index a0c6dd9..0000000 --- a/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8e84736 --- /dev/null +++ b/.github/workflows/ci.yml @@ -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 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index ae3c172..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/.project b/.project deleted file mode 100644 index f465037..0000000 --- a/.project +++ /dev/null @@ -1,35 +0,0 @@ - - - clasesColiseo - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.xtext.ui.shared.xtextBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - org.eclipse.xtext.ui.shared.xtextNature - org.uqbar.project.wollok.wollokNature - - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 295926d..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,7 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.svn/entries b/.svn/entries deleted file mode 100644 index 3cacc0b..0000000 --- a/.svn/entries +++ /dev/null @@ -1 +0,0 @@ -12 \ No newline at end of file diff --git a/.svn/format b/.svn/format deleted file mode 100644 index 3cacc0b..0000000 --- a/.svn/format +++ /dev/null @@ -1 +0,0 @@ -12 \ No newline at end of file diff --git a/.svn/pristine/08/0851794aebfea0d56bfefdcae5c4168b9db1cc04.svn-base b/.svn/pristine/08/0851794aebfea0d56bfefdcae5c4168b9db1cc04.svn-base deleted file mode 100644 index b80ab85..0000000 --- a/.svn/pristine/08/0851794aebfea0d56bfefdcae5c4168b9db1cc04.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -log4j.rootLogger=WARN, stdout - -# WHOLE UQBAR -log4j.logger.org.uqbar=WARN -## DEBUGGER -org.uqbar.project.wollok.ui.debugger - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n diff --git a/.svn/pristine/08/08f903ea3bfe5c52faa0f18ecac22ae033c56925.svn-base b/.svn/pristine/08/08f903ea3bfe5c52faa0f18ecac22ae033c56925.svn-base deleted file mode 100644 index fc16c99..0000000 --- a/.svn/pristine/08/08f903ea3bfe5c52faa0f18ecac22ae033c56925.svn-base +++ /dev/null @@ -1,35 +0,0 @@ - - - Clases-Coliseo - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.xtext.ui.shared.xtextBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - org.eclipse.xtext.ui.shared.xtextNature - org.uqbar.project.wollok.wollokNature - - diff --git a/.svn/pristine/23/23f43ae265da1d0586f55eb3902ece37c35d3d00.svn-base b/.svn/pristine/23/23f43ae265da1d0586f55eb3902ece37c35d3d00.svn-base deleted file mode 100644 index 589c449..0000000 --- a/.svn/pristine/23/23f43ae265da1d0586f55eb3902ece37c35d3d00.svn-base +++ /dev/null @@ -1,6 +0,0 @@ - -class Coliseo { - - - -} \ No newline at end of file diff --git a/.svn/pristine/24/2479aa96306d3c0efc1d5d88c5c373e5525d72f9.svn-base b/.svn/pristine/24/2479aa96306d3c0efc1d5d88c5c373e5525d72f9.svn-base deleted file mode 100644 index 6dc9d5e..0000000 --- a/.svn/pristine/24/2479aa96306d3c0efc1d5d88c5c373e5525d72f9.svn-base +++ /dev/null @@ -1,15 +0,0 @@ -import gladiador.* -import armas.* - -object fixture { - method crearMirmiConHacha(){ - var hacha = new ArmaFilosa(1, 0.5) - return new Mirmillon(20, hacha, unEscudo) - } - method crearDimaConMartillo(){ - var martillo = new ArmaContundente(10) - var dima = new Dimachaerus(10) - dima.darArma(martillo) - return dima - } -} \ No newline at end of file diff --git a/.svn/pristine/33/334a7d4a6e12f06e0c7820fc99f8602f9f20e59f.svn-base b/.svn/pristine/33/334a7d4a6e12f06e0c7820fc99f8602f9f20e59f.svn-base deleted file mode 100644 index f629bfb..0000000 --- a/.svn/pristine/33/334a7d4a6e12f06e0c7820fc99f8602f9f20e59f.svn-base +++ /dev/null @@ -1 +0,0 @@ -object __repl {} diff --git a/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base b/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base deleted file mode 100644 index 295926d..0000000 --- a/.svn/pristine/51/512bd49c4ba767010f32a54ef22de71e83bd7e1e.svn-base +++ /dev/null @@ -1,7 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.svn/pristine/58/5885889afa13d8d8485e3433444801f3c90a9d77.svn-base b/.svn/pristine/58/5885889afa13d8d8485e3433444801f3c90a9d77.svn-base deleted file mode 100644 index f39c793..0000000 --- a/.svn/pristine/58/5885889afa13d8d8485e3433444801f3c90a9d77.svn-base +++ /dev/null @@ -1,22 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Clases-Coliseo -Bundle-Vendor: My Company -Bundle-Version: 1.0.0.qualifier -Bundle-SymbolicName: Clases-Coliseo; singleton:=true -Bundle-ActivationPolicy: lazy -Require-Bundle: com.ibm.icu, - org.eclipse.xtext, - org.eclipse.xtext.generator, - org.eclipse.xtend, - org.eclipse.xtend.typesystem.emf, - org.eclipse.xpand, - de.itemis.xtext.antlr;resolution:=optional, - org.eclipse.emf.mwe2.launch;resolution:=optional, - org.uqbar.project.wollok, - org.uqbar.project.wollok.launch, - org.uqbar.project.wollok.lib, - org.eclipse.xtext.ui -Import-Package: org.apache.log4j, - org.apache.commons.logging -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/.svn/pristine/5e/5e5ae4c696f34a05228332b85d1f969a4714ab8a.svn-base b/.svn/pristine/5e/5e5ae4c696f34a05228332b85d1f969a4714ab8a.svn-base deleted file mode 100644 index a71738e..0000000 --- a/.svn/pristine/5e/5e5ae4c696f34a05228332b85d1f969a4714ab8a.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -source.. = src/ -bin.includes = META-INF/,\ - . \ No newline at end of file diff --git a/.svn/pristine/66/6696c9fd47f93db8b331fcb7ab5141c3c491ce63.svn-base b/.svn/pristine/66/6696c9fd47f93db8b331fcb7ab5141c3c491ce63.svn-base deleted file mode 100644 index c07d4a5..0000000 --- a/.svn/pristine/66/6696c9fd47f93db8b331fcb7ab5141c3c491ce63.svn-base +++ /dev/null @@ -1,116 +0,0 @@ -import armas.* -import coliseo.* - -class Mirmillon { - const destreza = 15 - var vida = 100 - var fuerza - var arma - var armadura - - constructor(laFuerza, unArma, unaArmadura) { - fuerza = laFuerza - arma = unArma - armadura = unaArmadura - } - - method vida() { return vida } - - method puedeCombatir() {return vida > 0} - - method destreza() { return destreza } - - method poderAtaque() { - return arma.poderAtaque() + fuerza - } - - method defensa() { - return armadura.defensa(self) + self.destreza() - } - - method arma(armaNueva) { - arma = armaNueva - } - - method armadura(nueva) { - armadura = nueva - } - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - } - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - method masFuerte(){ - return self - } - method curar(){ - vida = 100 - } - method armarGrupoCon(gladiador) { - const grupo = new Grupo("Mirmillolandia") - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } - -} - -class Dimachaerus { - var destreza - const fuerza = 10 - var armas = [ ] - var vida = 100 - - constructor(unaDestreza) { - destreza = unaDestreza - } - - method vida() { return vida } - - method puedeCombatir() {return vida > 0} - - method arma(nuevaArma) { - armas.add(nuevaArma) - } - - method quitarArma(arma) { - armas.remove(arma) - } - - method poderAtaque() { - return fuerza + armas.sum({ unArma => unArma.poderAtaque() }) - } - - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - destreza = destreza + 1 - } - - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method defensa() { - return destreza / 2 - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - method masFuerte(){ - return self - } - method curar(){ - vida = 100 - } - method armarGrupoCon(gladiador) { - const grupo = new Grupo("D-"+(self.poderAtaque()+gladiador.poderAtaque())) - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } -} \ No newline at end of file diff --git a/.svn/pristine/68/682931bbcc91365c76dc289418a446ff7883abb9.svn-base b/.svn/pristine/68/682931bbcc91365c76dc289418a446ff7883abb9.svn-base deleted file mode 100644 index bc31611..0000000 --- a/.svn/pristine/68/682931bbcc91365c76dc289418a446ff7883abb9.svn-base +++ /dev/null @@ -1,24 +0,0 @@ -import gladiador.* -import armas.* - -object fixture { - method crearMirmiConHacha(){ - const hacha = new ArmaFilosa(2, 1) - return new Mirmillon(20, hacha, escudo) - } - method crearDimaConMartillos(){ - const dima = new Dimachaerus(10) - dima.darArma(new ArmaContundente(10)) - dima.darArma(new ArmaContundente(20)) - return dima - } - - method crearMirmiConCasco(){ - return new Mirmillon(20, new ArmaContundente(20), casco) - } - method crearDimaMuyArmado(){ - const dima = new Dimachaerus(10) - 10.times{dima.darArma(new ArmaFilosa(3,2))} - return dima - } -} \ No newline at end of file diff --git a/.svn/pristine/6a/6a5070e4626e8cad379c1d43e5229e591d353260.svn-base b/.svn/pristine/6a/6a5070e4626e8cad379c1d43e5229e591d353260.svn-base deleted file mode 100644 index 959a0d4..0000000 --- a/.svn/pristine/6a/6a5070e4626e8cad379c1d43e5229e591d353260.svn-base +++ /dev/null @@ -1,116 +0,0 @@ -import armas.* -import coliseo.* - -class Mirmillon { - const destreza = 15 - var vida = 100 - var fuerza - var arma - var armadura - - constructor(laFuerza, unArma, unaArmadura) { - fuerza = laFuerza - arma = unArma - armadura = unaArmadura - } - - method vida() { return vida } - - method puedeCombatir() {return vida > 0} - - method destreza() { return destreza } - - method poderAtaque() { - return arma.poderAtaque() + fuerza - } - - method defensa() { - return armadura.defensa(self) + self.destreza() - } - - method arma(armaNueva) { - arma = armaNueva - } - - method armadura(nueva) { - armadura = nueva - } - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - } - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - method masFuerte(){ - return self - } - method curar(){ - vida = 100 - } - method armarGrupoCon(gladiador) { - const grupo = new Grupo("Mirmillolandia") - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } - -} - -class Dimachaerus { - var destreza - const fuerza = 10 - var armas = [ ] - var vida = 100 - - constructor(unaDestreza) { - destreza = unaDestreza - } - - method vida() { return vida } - - method puedeCombatir() {return vida > 0} - - method darArma(nuevaArma) { - armas.add(nuevaArma) - } - - method quitarArma(arma) { - armas.remove(arma) - } - - method poderAtaque() { - return fuerza + armas.sum({ unArma => unArma.poderAtaque() }) - } - - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - destreza = destreza + 1 - } - - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method defensa() { - return destreza / 2 - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - method masFuerte(){ - return self - } - method curar(){ - vida = 100 - } - method armarGrupoCon(gladiador) { - const grupo = new Grupo("D-"+(self.poderAtaque()+gladiador.poderAtaque())) - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } -} \ No newline at end of file diff --git a/.svn/pristine/74/74bce2cb1bda74e95d62d96c8bca56604e2f7415.svn-base b/.svn/pristine/74/74bce2cb1bda74e95d62d96c8bca56604e2f7415.svn-base deleted file mode 100644 index d84297f..0000000 --- a/.svn/pristine/74/74bce2cb1bda74e95d62d96c8bca56604e2f7415.svn-base +++ /dev/null @@ -1,45 +0,0 @@ - -class Grupo { - const gladiadores = [] - var nombre - - constructor(nom){ - nombre = nom - } - method nombre() { return nombre } - - method agregarGladiador(gladiador) { - gladiadores.add(gladiador) - } - method quitarGladiador(gladiador) { - gladiadores.remove(gladiador) - } - method masFuerte(){ - var gladiadoresDisponibles = gladiadores.filter{gla=>gla.puedeCombatir()} - if (gladiadoresDisponibles.isEmpty()) throw new Exception("No hay gladiadores que puedan combatir") - return gladiadoresDisponibles.max{gla=>gla.poderAtaque()} - } - method combatir(adversario){ - 3.times{ - self.masFuerte().pelear(adversario.masFuerte()) - } - } - method curar(){ - gladiadores.forEach{gla=>gla.curar()} - } - -} - -object coliseo { - const combatientes = [] - - method agregarCombatiente(combatiente){ - combatientes.add(combatiente) - } - method curarATodos(){ - combatientes.forEach{com=>com.curar()} - } - method combateSucesivo(unGrupo){ - combatientes.forEach{com=>unGrupo.combatir(com)} - } -} \ No newline at end of file diff --git a/.svn/pristine/88/885417e58585e97413158196d9eac2f291201c42.svn-base b/.svn/pristine/88/885417e58585e97413158196d9eac2f291201c42.svn-base deleted file mode 100644 index ef28b5a..0000000 --- a/.svn/pristine/88/885417e58585e97413158196d9eac2f291201c42.svn-base +++ /dev/null @@ -1 +0,0 @@ -wollokRoot diff --git a/.svn/pristine/94/942051a4bad4cde1f3c8e5996043a1cf43b7a2d9.svn-base b/.svn/pristine/94/942051a4bad4cde1f3c8e5996043a1cf43b7a2d9.svn-base deleted file mode 100644 index 2a4b36c..0000000 --- a/.svn/pristine/94/942051a4bad4cde1f3c8e5996043a1cf43b7a2d9.svn-base +++ /dev/null @@ -1,16 +0,0 @@ -import fixture.* - -test "un Mirmillon con hacha y escudo tiene poderAtaque 20.5" { - var mirmi = fixture.crearMirmiConHacha() - assert.equals(20.5, mirmi.poderAtaque()) -} - -test -"un Mirmillon con hacha y escudo ataca a un demicherius con destreza 10 y este queda con x vida" -{ - var mirmi = fixture.crearMirmiConHacha() - var dima = fixture.crearDimaConMartillo() - mirmi.atacar(dima) - assert.equals(84.5, dima.vida()) - -} \ No newline at end of file diff --git a/.svn/pristine/af/af137c386a806153e7326eff89e473a2b9fecdec.svn-base b/.svn/pristine/af/af137c386a806153e7326eff89e473a2b9fecdec.svn-base deleted file mode 100644 index c499bdb..0000000 --- a/.svn/pristine/af/af137c386a806153e7326eff89e473a2b9fecdec.svn-base +++ /dev/null @@ -1,37 +0,0 @@ - -class ArmaFilosa { - var longitud - var filo - - constructor(long, fi) { - filo = fi longitud = long - } - method poderAtaque() { - return longitud * filo - } -} - -class ArmaContundente { - var peso - - constructor(nuevoPeso) { - peso = nuevoPeso - } - - method poderAtaque() { - return peso - } -} - -object unCasco { - method defensa(unGladiador) { - return 5 - } -} - -object unEscudo { - const defensa = 10 - method defensa(unGladiador) { - return defensa + unGladiador.destreza() / 10 - } -} \ No newline at end of file diff --git a/.svn/pristine/b5/b55b0a7af7a2f8e30024e25e11a31f8174bb4246.svn-base b/.svn/pristine/b5/b55b0a7af7a2f8e30024e25e11a31f8174bb4246.svn-base deleted file mode 100644 index 13ec839..0000000 --- a/.svn/pristine/b5/b55b0a7af7a2f8e30024e25e11a31f8174bb4246.svn-base +++ /dev/null @@ -1 +0,0 @@ -# clases-coliseo \ No newline at end of file diff --git a/.svn/pristine/bc/bcf730b9b50790154308001e82c8dd50930bc1f9.svn-base b/.svn/pristine/bc/bcf730b9b50790154308001e82c8dd50930bc1f9.svn-base deleted file mode 100644 index f0af470..0000000 --- a/.svn/pristine/bc/bcf730b9b50790154308001e82c8dd50930bc1f9.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -class ArmaFilosa { - var longitud - var filo - - constructor(long, fi) { - filo = fi - longitud = long - } - method poderAtaque() { - return longitud * filo - } -} - -class ArmaContundente { - var peso - - constructor(nuevoPeso) { - peso = nuevoPeso - } - - method poderAtaque() { - return peso - } -} - -object casco { - method defensa(unGladiador) { - return 5 - } -} - -object escudo { - const defensa = 10 - method defensa(unGladiador) { - return defensa + unGladiador.destreza() / 10 - } -} \ No newline at end of file diff --git a/.svn/pristine/c5/c54393301be69104cde695318ed7ea2bb35b22cc.svn-base b/.svn/pristine/c5/c54393301be69104cde695318ed7ea2bb35b22cc.svn-base deleted file mode 100644 index fcaad0a..0000000 --- a/.svn/pristine/c5/c54393301be69104cde695318ed7ea2bb35b22cc.svn-base +++ /dev/null @@ -1,50 +0,0 @@ -import fixture.* - -test "un Mirmillon con hacha y escudo tiene poderAtaque 22" { - const mirmi = fixture.crearMirmiConHacha() - assert.equals(22, mirmi.poderAtaque()) -} - -test "un Mirmillon con hacha y escudo tiene defensa 26.5" { - const mirmi = fixture.crearMirmiConHacha() - assert.equals(26.5, mirmi.defensa()) -} - -test "un Dimachearus con 2 armas contundentes de peso 10 y 20 tiene poderAtaque 40" { - const dima = fixture.crearDimaConMartillos() - assert.equals(40, dima.poderAtaque()) -} -test "un Dimachearus con destreza 10 tiene defensa 5" { - const dima = fixture.crearDimaConMartillos() - assert.equals(5, dima.defensa()) -} - -test "un Mirmillon con hacha y escudo ataca a un demicherius con destreza 10 y este queda con 83 vida" -{ - const mirmi = fixture.crearMirmiConHacha() - const dima = fixture.crearDimaConMartillos() - mirmi.atacar(dima) - assert.equals(83, dima.vida()) -} - -test "el grupo que arma un mirmillon y un dimachaerus se llama mirmillolandia" { - const mirmi = fixture.crearMirmiConHacha() - const dima = fixture.crearDimaConMartillos() - const grupo = mirmi.armarGrupoCon(dima) - assert.equals("Mirmillolandia", grupo.nombre()) -} - -test "el grupo que arma un dimachaerus y un mirmillon se llama D-62" { - const mirmi = fixture.crearMirmiConHacha() - const dima = fixture.crearDimaConMartillos() - const grupo = dima.armarGrupoCon(mirmi) - assert.equals("D-62", grupo.nombre()) -} - -test "el mas fuerte del grupo es el dimachaerus" { - const mirmi = fixture.crearMirmiConHacha() - const dima = fixture.crearDimaConMartillos() - const grupo = dima.armarGrupoCon(mirmi) - assert.equals(dima, grupo.masFuerte()) -} - diff --git a/.svn/pristine/d1/d1171e80973331b8663bad8b1c28e82490948512.svn-base b/.svn/pristine/d1/d1171e80973331b8663bad8b1c28e82490948512.svn-base deleted file mode 100644 index 6385db8..0000000 --- a/.svn/pristine/d1/d1171e80973331b8663bad8b1c28e82490948512.svn-base +++ /dev/null @@ -1,42 +0,0 @@ -# El Coliseo - -## Clases constructores -![Coliseo](https://thumbs.dreamstime.com/t/dibujo-del-coliseo-ejemplo-de-colosseum-en-roma-italia-65506949.jpg) - -**Construido en el siglo I y ubicado en el centro de la Ciudad de Roma, es actualmente una de las siete maravillas del mundo moderno pero en sus inicios era un anfiteatro ideal para presenciar peleas de gladiadores y otros espectáculos públicos.** - -En el coliseo podíamos presenciar a distintos gladiadores peleando con una gran variedad de armas y equipos pero empecemos de a poco. - -Arranquemos por las armas. Entre las armas más comunes que se usaban estaban las armas de filo como espadas, dagas o hachas. Las armas de filo aportan un valor de ataque equivalente al filo del arma multiplicado por su longitud. (La longitud de las armas de filo se mide en centímetros y su filo es un número entre 0 y 1.) -Una alternativa para estas armas eran las llamadas contundentes, como por ejemplo mazas y martillos, que eran las preferidas de los gladiadores más brutos. Las armas contundente aportan un poder de ataque igual al peso del arma. Los gladiadores pueden cambiar sus armas - -Como de estas peleas no siempre salían todos los que entraban a la arena, muchos gladiadores no se valían solo de sus habilidades de pelea sino que llevaban algo de armadura. Por lo general usaban cascos y escudos para intentar parar los ataques del enemigo o no sufrir una herida letal (al menos no tan rápido). Los cascos les brindan 10 puntos de armadura a su portador, los escudos por su parte suman 5 más el 10% de la destreza del luchador. - -### Los Gladiadores. -Finalmente llegamos a los protagonistas de esta historia… - -Para poder entrar a combatir un gladiador debe saber atacar y defenderse para no ser una presa fácil. A modo de simplificación diremos que todos los gladiadores tienen 100 unidades de vida inicialmente. -En esta oportunidad contamos con dos tipos de gladiadores: -- Los mirmillones. Su estilo es uno de los más clásicos dado que salían a combatir con un arma de mano, en general una espada o gladius, más un escudo rectangular o un casco con cresta. La fuerza promedio de este tipo de gladiadores es variable y su destreza es siempre 15. Un gladiador puede cambiar su armadura. -- Los dimachaerus. Estos gladiadores peleaban con varias armas. No usaban armadura porque eran tipos duros. Los dimachaerus eran gladiadores que se valían mucho de sus habilidades, tienen una fuerza de 10 y una destreza en particular que puede ser diferente para cada gladiador. - - -### Y los gladiadores atacan!! - -Cuando un mirmillon ataca a cualquier gladiador le inflige al atacado tanto daño como la diferencia entre su poder de ataque y la defensa del atacado. El poder de ataque equivale al poder de su arma más su propia fuerza. -Cuando un dimachaerus ataca a otro gladiador, también le inflige al atacado tanto daño como la diferencia entre su poder de ataque y la defensa del atacado, pero su poder de ataque equivale a su fuerza más la sumatoria de los poderes de todas las armas que tenga. Además, cada vez que ataca, aumenta en 1 su destreza. -Para un mirmillon, su defensa se calcula como los puntos de su armadura más su destreza. -Para un dimachaerus, su defensa es la mitad de su destreza. - -Se pide implementar la solución que considere necesaria para hacer que un gladiador ataque a otro. - -### Pelea -Cuando un gladiador se pelea con otro lo que hace es atacarlo. Luego de sufrir los efectos correspondientes, el gladiador atacado realiza un contraataque, mediante su propia forma de atacar. - -### Grupos -Permitir que en el coliseo haya varios grupos de gladiadores que puedan combatir contra otros grupos. De los grupos se conoce también un nombre que los representa y se registra la cantidad de peleas en las que participó. Un grupo es capaz de manejar a sus miembros (agregar o quitar gladiadores). -Los combates son a tres rounds, en cada round cada grupo elige a su campeón para que pelee con el campeón adversario. El campeón debe ser el más fuerte del grupo que pueda combatir (si aún cuenta con puntos de vida disponibles) -Un gladiador puede crear un grupo juntándose con otro gladiador y definiendo el nombre del grupo. - -### El Coliseo -El coliseo puede organizar combates entre grupos de gladiadores, aunque a veces tambien hace combatir a un grupo contra un gladiador suelto. Los dueños del coliseo no son unos tiranos así que también curan a los gladiadores, ya sea en grupos o solos. diff --git a/.svn/pristine/de/ded12df8d4c8cce5324fc05fe10ab4921391bb33.svn-base b/.svn/pristine/de/ded12df8d4c8cce5324fc05fe10ab4921391bb33.svn-base deleted file mode 100644 index a5ad073..0000000 --- a/.svn/pristine/de/ded12df8d4c8cce5324fc05fe10ab4921391bb33.svn-base +++ /dev/null @@ -1,25 +0,0 @@ -//import gladiadorHerencia.* -import gladiador.* -import armas.* - -object fixture { - method crearMirmiConHacha(){ - const hacha = new ArmaFilosa(2, 1) - return new Mirmillon(20, hacha, escudo) - } - method crearDimaConMartillos(){ - const dima = new Dimachaerus(10) - dima.arma(new ArmaContundente(10)) - dima.arma(new ArmaContundente(20)) - return dima - } - - method crearMirmiConCasco(){ - return new Mirmillon(20, new ArmaContundente(20), casco) - } - method crearDimaMuyArmado(){ - const dima = new Dimachaerus(10) - 10.times{dima.arma(new ArmaFilosa(3,2))} - return dima - } -} \ No newline at end of file diff --git a/.svn/pristine/df/df57ed4bac11ec2dbd710354be07ef606f7195fd.svn-base b/.svn/pristine/df/df57ed4bac11ec2dbd710354be07ef606f7195fd.svn-base deleted file mode 100644 index a948dbd..0000000 --- a/.svn/pristine/df/df57ed4bac11ec2dbd710354be07ef606f7195fd.svn-base +++ /dev/null @@ -1,114 +0,0 @@ -import armas.* -import coliseo.* - -class Gladiador { - var destreza - var fuerza - var vida = 100 - - method vida() { return vida } - - method puedeCombatir() {return vida > 0} - - method destreza() {return destreza} - - method curar(){ - vida = 100 - } - - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - } - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - - method poderAtaque() { - return fuerza + self.poderArmas() - } - - method poderArmas() - - method defensa() - - method armarGrupoCon(gladiador) { - const grupo = self.crearGrupo(gladiador) - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } - - method crearGrupo(gladiador) - - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - - method masFuerte(){ - return self - } -} - -class Mirmillon inherits Gladiador { - var arma - var armadura - - constructor(laFuerza, unArma, unaArmadura) { - fuerza = laFuerza - arma = unArma - armadura = unaArmadura - destreza = 15 - } - - override method poderArmas() { - return arma.poderAtaque() - } - - override method defensa() { - return armadura.defensa(self) + self.destreza() - } - - method arma(armaNueva) { - arma = armaNueva - } - - method armadura(nueva) { - armadura = nueva - } - - override method crearGrupo(gladiador) { - return new Grupo("Mirmillolandia") - } - -} - -class Dimachaerus inherits Gladiador{ - var armas = [ ] - - constructor(unaDestreza) { - destreza = unaDestreza - fuerza = 10 - } - - method arma(nuevaArma) { - armas.add(nuevaArma) - } - - override method poderArmas() { - return armas.sum({ unArma => unArma.poderAtaque() }) - } - - override method atacar(gladiador) { - super(gladiador) - destreza = destreza + 1 - } - - override method defensa() { - return destreza / 2 - } - - override method crearGrupo(gladiador) { - return new Grupo("D-"+(self.poderAtaque()+gladiador.poderAtaque())) - } -} \ No newline at end of file diff --git a/.svn/pristine/ee/ee37c63d071dd94cbdaa19b4192966ab48a79266.svn-base b/.svn/pristine/ee/ee37c63d071dd94cbdaa19b4192966ab48a79266.svn-base deleted file mode 100644 index a0c6dd9..0000000 --- a/.svn/pristine/ee/ee37c63d071dd94cbdaa19b4192966ab48a79266.svn-base +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/.svn/pristine/f3/f39105cf6bf8a1dfe53af1d884bb96848f9e0eda.svn-base b/.svn/pristine/f3/f39105cf6bf8a1dfe53af1d884bb96848f9e0eda.svn-base deleted file mode 100644 index 85f7e9a..0000000 --- a/.svn/pristine/f3/f39105cf6bf8a1dfe53af1d884bb96848f9e0eda.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -import armas.* - -class Mirmillon { - const destreza = 15 - var vida = 100 - var fuerza - var arma - var armadura - - constructor(laFuerza, unArma, unaArmadura) { - fuerza = laFuerza arma = unArma armadura = unaArmadura - } - - method vida() { - return vida - } - - method destreza() { - return destreza - } - - //? - method fuerza(nuevaFuerza) { - fuerza = nuevaFuerza - } - - method fuerza() { - return fuerza - } - - method poderAtaque() { - return arma.poderAtaque() + fuerza - } - - method defensa() { - return armadura.defensa(self) + self.destreza() - } - - method arma(armaNueva) { - arma = armaNueva - } - - method arma() { - return arma - } - - method armadura(nueva) { - armadura = nueva - } - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - } - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } -} - -class Dimachaerus { - var destreza - const fuerza = 10 - var armas = [ ] - var vida = 100 - - constructor(unaDestreza) { - destreza = unaDestreza - } - - method vida() { - return vida - } - - method darArma(nuevaArma) { - armas.add(nuevaArma) - } - - method quitarArma(arma) { - armas.remove(arma) - } - - method poderAtaque() { - return fuerza + armas.sum({ unArma => unArma.poderAtaque() }) - } - - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - destreza = destreza + 1 - } - - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method defensa() { - return destreza / 2 - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } -} \ No newline at end of file diff --git a/.svn/wc.db b/.svn/wc.db deleted file mode 100644 index c8a172a9e5665abafeef282f05ef597ea3861d01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46080 zcmeHQd2Afld7n2!E_G3sL{Uphra816iz`v&+=p$|qQsTWN+M;7l?~z3)5w(5Z3_^WIW*!K(2x)4?Fb9OZe2VQTQ7e)`}C zVwkQk2afR04AKGCd+!8~PVPIzo9ABQUgUnreV6+Vnn6QoXuUYMjQiM@T>kg~V#4IfHGO>iRB8O!*)!v_ z51v0hGd(@K`S?t6e74BXO-(*DSL7$BCW;U94I%mIDc%pw4_B5Pt5UM;m1V1Tu~5x* z<@+In`)ih6!G0M3yDLa{cKq0>VicP%yFBDETYR86!$UDokIy{9pDaGYkI&6cPfkIc z)5WRT5k8R%&(9Vgo()S_IMkKP-`~F;7yR5yqW^c(L}xDFKZNE31`vv8if5+JPR>rx zJdz8_7!pl<39WGmez>}{R4Yt$BvP51o1BQlbT*_yd>d1_e7WovR(GMU{Lm0uU8-{{ zP9c6{6I_ek`C-Dj6pSOqP4a6BXquWkb!vnsg$VpYN4_9)x%>k|>v1zKK}n3?JI=7V z{GmhWkvbhgLtMdcx{Mbc-0+i2P((bTJKeDlzWVpT*X~{Lb=!9M+P0+|z7h8^2L5GF z#(|6jw=@UNpbln!?qaRBymHUj*oAWK;$?f(Sy~vox>TtwT^e&L)(T!Z>?~EvD|pGa zWlb~%`LL`S+F?WY@L}5&-NO!6bz66B-S#}v|2gh!4EI0W^YABoG7e-Mc!hIdJI4*7 z^V2gYOR&0}D{@;{t{?epGqfFnU%aY7TYy%?eU*WK*^_Y~ z?whZC!ZQjo4rCmtb6}X8Lur=(+5De1n2ZCjE)HyH{`cj7FEQLpuP!EJ)MOmUIM9*< z9O4+p-~VU*za^(K&x`}FJ`QwnaMqvo|5sndW)x){NWp=6|0mcSmV1!|KSZ!O?A_>J z(Bo(;^HF9hMH&r3=C|a^42vGQYvrOP-X$rzX<4Qw3z{oC0`?ryRb9hyR7cijtg4dg z>XK)olgwQUuFBtKd9o-QwrqK(WJ`uA+JdHH-IE~{M3W!g49TM?dD&BB3rm{nTB0k! z8KoM^;_g6@beA(>R9p=N7E%)HVrI^vMXZS#Ms38{3g2amM4-V z49zkGO;jPKENR&D3==E5Y)Q81VaLS|`bm(y1Vs@=MKDZHF>EX;nq)b$t=W<&dA8<0 z+C>-MFjPgRF|Y-T8b_zmTg!^g4D5U8?Ggro-0aN zRj}cD2G&(ivo%pOG-tk(W{nDkHw@GAEMTAE8VZmArH~axF$B?*9aFGOSJ&B31j$47 zc!p(5wkHUdA}f*tEEjFnQasCbRCT^1k-R9`u3|chZRwgWh=M0e78J^pBp2%3x)@0;@FaH537zUd6p%3qJbUY zJJg{d%Z{pS~f}YK~z$ma1t2@W6vkr0$HP*p8>mf^FJRK9ew0 z77RgvdXpT(bydLxPY1fgjyQ@dilluBrY_4+Ktt1H+j0$CgyKOw#S~0v>!Ng990gjv zrMrryVd&+8h6P7AB*Ak`(=#*y1~*RqXNCn zCauhI1f@HUVk(lLiWc+;SAju?^f3ccHGyzw<_?U5Hna!V+!jaiWK$GW2f8qHJ?MW} zg<(~M(H9zssX?FhOwxRKa~vh@z`7}pl6J7{ild|*0drK8l*3vl z6(!|R)e%QYJ^aK`QVl84Eemm!)cu9X|F$qC2LAmBoj^~b&#+zWlk7*h&D^uhUGRZN z-ImKw?q3hCIDUL~4gjuG(-VM#rG5~6VaF{Azx5SnN2#QdeYsq5N0+Nh%eY!AH;}mPatz{bOKm$?0)yJ_@TR#$!|JD2dH@N6SoU$k5K*oWa#{uq#%pzJd z)aAhWJVN1sMGs<~;B_BD@vzhZ4u`-Y#ef6nddxwDnvEc2zkeH~5)2H8%>NzC(+uqO zE%wj24(5JzFLG1Uy?SkXSH8CwJvCRqmIQa*PLlsS6RRcS0xP8|US3)$(U;M}MGaj3 zI#HY{P8~0vP22-}YJ6)~e*b>-_Q`tc)aHVE?M~!Hc|ev|owoV;xM+SD?uvz1;HtPn zF4{G$=tlTutBMzErGz(Gt;JIp&mTKAeT=O47QIT@sg;&0!R;@~Z4qDflcwCRE>$nV zEE2kt6d@lnbcasPMQiZ_hI<{63tyiaOAAX;7PTtIr6_OLs##I&ut2_}UrHz(t~RVC zfd|;Dt#PcDFI-&fO09AE;X1DySXkf-H@JCxyc=#&?nkRV!6m|=UeAm}Gnu6-c}GzD z;dR19IC3M93LBL%S&@a8w-MJHmf!XhEr(k0!_CV}rP|UZ47-E+wac($kk(cAT)Mi5 zt98FRhc7`bFDyV~q@AE@akyU?NnG?C4!hn+&6D|3K7HaqNEG(33ysroXE_k0By;`}% zi@ZSo7Xakd|5zemGvN>w9KGCjLUWTANvr) zKE(bG`@h^**fDfBy8Bjc@xO_(6?W(HNAl|-APDr~Y)P#D>05on&aV8vedwv~y3F$Y zaiRe1WbmgqA*&1=TgWMC!DtgfrCY8hrID0O$rl`9w^YGbaAjrfNisiCJTX3ZYL-7N zHb{#Sk~}I85EmWZmCKLsTaOWhpaZw%^7r=^Jf z+|-TGFT?#m2nw?&<3PrN*8m4@Bbs~RA@YB6|EGidF8O&k-2Wk(d0#~D1l_#7%zrR{ z#av=k;??jd-F;}Vess{!Fg;8#o{&H>JOM2dmBJNRK9(1~@?yDm&Dhq5#!wH0f>^zD zl69m)wEH1D85Z_Kegb53t8MK=ht`it?cf^XZD|>g+Dj(m-MhIDsq5$0h{{SvRyOsa z1M5eQwx!8f_jL6kdHq-vbI8^^8CT1-B$L|qCF6~D_Mx8U)d=igTY(bShYDf%WCbS0 z4nb5>b*np2Kk7yd$|KTN$lQZ+p!IpR4-TdnRI6TIycFj&TnHNrVmj~3|Lhl)w^mk` z%NML_d8twdv0ZiUsahr1x^mAITqStg!_}?b~H9I?50i_&=3s3KK}12 z!(3&5&JA-PW{$#V1CQ93%NGaN6Ze1$`Qpsf_$iQ%MXzMF(D62|rz@Y&qj%xD^rtR5 ztAFJaGM~Cr3;7s@8*CyTTMupp*g6+41HfqEBgn z6HDG3fg32-7AoaMz@Ayv3zz~H`d~vBgo|s69eO3vW}z!sM!2{X0@Z3&YjLFls5G~f zxatBBHfyCufQzLX!2Bs1c^+o=65NHo2(CUzkt`xga0LKY7p+QIVhqVvV%ngWjf48?QU&y1?Vt_}ix6G0cN36f^4H|BPO$Rz0fg=Vj zIuNlY8(RZ-k}B%Mdvf{00J;`r4pjP9Cr(eO;rqTI{}2cnx|bjf$vFJY57QTj>iEAN zb~6Jv|5v%cW&e#`;+|v2xWDGU!2T&a31h-JuAh4k`=8u0yP0dY7udj9kp;blIqIo+C7V~(24s|!5$RYj!J(D-Xv@?A>A%1d7?*W$~n2P8*UCW`t#H5~XcHad_HB9dV zKvgimC#dqL_R1H*SsJr5zf*|Oi)xj`9O$Xe#2R#m!qk*Cj#fFRais$Z( zgF2uH0hD~`qVCyP5M&7y3V>1!(0u@UGc-fm5eGFLOP3)pP}Ts76iiSapkrAA0}Y1f z!M%U?wm7IGS)j5+6LsLOh($|t4WeAd0<8chXr&Og$3ZQ}mN954kyK4LOx*-h1kn;~ z)e~$Tn|5~`6f~@82DU-*hbn81XezSg$u<~>kX#pZkyzW}pt50^po#^wS=fdyiUoR~)pR29#VJw4FAS&NwJ; zqnV^54%$x32taefzSUA=2z1VoIB46lhUb6l_vy?h<3PrNS1Sj?^S@UseHmRD2Qm(< z&jB+3cQOLQ2<&F|KK664=5P5tbuQnP9~?w)f3hyPi==wd%k2pPUgQiyJbuI1aqAd1 zuzb0mAg{T!E`oabnp8G=>9~GhlU(XuS3K8L@&=+S?3H{Qno)UyX7a4L(@BChTnY6< zHV;ZPV^}pf?5gu36v>fP35kAUp=*#%{ZAMIWIvJ7&!$o_kcHiVAa`|Be^*`}M5`wQ zxl~l!CBPPfRa7u*8pwYKn@h(c|1biPR7H+_bYXW5Ya2vmg~#@G^$vlR&+aQ_eASn^ z9UDJejNh1`0Oux)=Y1hui3H%s&+=!Br;5jC`Gfq4nd#H~;*yJ3`123Kee_6F$RFW_ z)!BVry$24U>*Y9$<8w3QI-6};!?DPcDk6y{1@RW8 zQU9v@5q>dv8=sm0|IuWFB;E;^=>BiZPM>*Z9LPBEs^oxw{`VmUZ9)IVewz8vEl4CD z?8+a2qnG}~(aY)SbH$1J$UD@0Zt+Luda$(zFX3Stb;hzfdwbVDHIJ_28fd$?0Ow6) zCMcB`S3oUQiFONz_}Q7s2Z&AWW&!!}6EO9`dDYqCOx?b9G_SxJQ1Sd|bP_jtHd?Rn z$BGY3PVsYRCWvwHv7jXP}DoX4~BJF$m;?%_I>_9WJ zTwKAR%CJ3I$$$Y_6EI~$5n-~X$eKPiaWlv|+>9(b?K)Z4i+6PGdmxW~U!_SXU0x>V zl9Bq76!fhVBOo-Wi|G@wp1&l~&FYda?9H#!w9O+OAM5xZZVvE2-1oU_+`n`0=B{(g zfctqP_f_s`?$g|dxqs#Ug!>HlH{7=&SoUNb$T-lB1AwjpjopaZAHMX5FMZ)lK78p3 zU-pDAz2VDX__8m283jrFKlG0H^X{3-dqBU~a0JW)< zXTv#eL@g-huT#6jY(cFmq^CA2b>S8SLwB=xF&uL*gRV38au)NshEJ>Retlw3KVUBh zk=0OpHmSWdc+4n}j{_fzez#Djx`C<(P5r41NyJrO@nP2AZdLWVmcHs!FrlzI*h}Hd z>$fRT4)|Wjmq#3l`aqauzz6DnMMOr6cH0&sULA{iX_ym8gwc_;6%8eP#a46+4&C(X zy**Ej=2Z2P(L4l6g|!?0zQM{(KLm#v70CX73z+)h{(?KsKF_`_v;PwqFG_2s;^nsg z6X2=ZL0N9l{!fs4JM_zq+W!fXZ-+v;QTsn(>D!=eZq)uykbFC2&W+mt36gJ#=DBhE zKY?|j=JtO?6RZJ&of=d0`~OLX`*ZFX`&_;Me-2$lo0*f$Gp#27CVulhv>l|hc7Zm1 zIw)y7z~20BI(Y}|`IxdSh&CY4M1fev(M(kaJ5FF53aoPh;?I^O$H`p_+h7~$;QTH+ zd0__WrS;962(l&%eoa()|~d|FFQ=%YcyX$QTW z-%2N+)~ZwPYeDku;F`Yte>cNzLocDd3^5AET<7-p!-cLMbh5s%XQB=0DOj>3P|LKU zA_jbdb^N+vHpjbEe=q8Ks*b^Go8^dL0}UXrt}Y4y)&<0@jy+A#JRJbPp1Yap{H+K7 zaN@b6UC)!Zr#}8Y-w;Cc>!6z2c8P8Vd(m}^T3CJKo&DsxD>MYMISse~_dYe?LcRE>k+ zU9&wjW5s&P7@jRldS%_uhUWvK!*8q*@J01;#IKJNKWbGU>18jCMK4_M=_AA4 zK-1wa+z%)2ABT>?=pO#0!)$~hDa{K;3<2}0bwT9*e`>*z4UBos${+Oq#~AJoRzp+F zV>i3|uU;DLha1*CU{xeJrrx)9Oodz5$^K5=j;dT*vv$zHysZN!YZcuyW!HvFK41aW z0YjL!Dk`EQJFsVVuqH=qhfSX%Yln9~f9FsOhN^noZq;<{KyH*3R`DH8#x|Hi!m*9M z&y}Q=@>xTvi@`20n9v2|pN8XrB~MB59Jo$}MF9-Tnqb8kOeF*P5vA-oLg~Bq?)_jZ zO4|=^G^JDlfzE-}bkf)5l5|o&Yi7u_+oEWO zUSvPOeu+b10r&!XmU}<<#mxTiE7tyR+R<@OY&16Q)|fI(oc1gc)X0Peqos|T488%w z#A)|hlwIbu$3>Je-?Wy{X_LVzO|w&miPH+BD0|syrEfh1|5NY(iQdn$e*eGOtAQ-N zmze``H%lv7$x~5ME;D-LC~0?Hlx6O;5;Dq`dD^oW%4B$IU0X3NX=i52V0_vw{q8uI zw8B%$#(ZiBL!3)mIpJ0!|Kr%_0{Q>T+&Z)5GYsc+f(D06o}ej)qDqz{nAZFrI{CEAu1%i`lW(IaW4@P8KJ8ABJr|x{v{9~6pa0nd z3~2tCVc*Pt1oVIWf-7*d+*`P3xUXmWKQjFv4f;RYokUU^P}-e6qgYSH29$cVJJF&P zkhB9$Q2IYMpnzlps%^|RV@E#bzy@@{v;!niszTbTwrSJrB|sPSb|dQ)DGLj#(ZrD!J-rpZ9uC~J9NRe F{|AOgla.puedeCombatir()} - if (gladiadoresDisponibles.isEmpty()) throw new Exception("No hay gladiadores que puedan combatir") - return gladiadoresDisponibles.max{gla=>gla.poderAtaque()} - } - method combatir(adversario){ - 3.times{ - self.masFuerte().pelear(adversario.masFuerte()) - } - } - method curar(){ - gladiadores.forEach{gla=>gla.curar()} - } - -} - -object coliseo { - const combatientes = [] - - method agregarCombatiente(combatiente){ - combatientes.add(combatiente) - } - method curarATodos(){ - combatientes.forEach{com=>com.curar()} - } - method combateSucesivo(unGrupo){ - combatientes.forEach{com=>unGrupo.combatir(com)} - } + +class Grupo { + const gladiadores = [] + var property nombre + + method agregarGladiador(gladiador) { + gladiadores.add(gladiador) + } + method quitarGladiador(gladiador) { + gladiadores.remove(gladiador) + } + method masFuerte(){ + var gladiadoresDisponibles = gladiadores.filter{gla=>gla.puedeCombatir()} + if (gladiadoresDisponibles.isEmpty()) throw new Exception("No hay gladiadores que puedan combatir") + return gladiadoresDisponibles.max{gla=>gla.poderAtaque()} + } + method combatir(adversario){ + 3.times{ + self.masFuerte().pelear(adversario.masFuerte()) + } + } + method curar(){ + gladiadores.forEach{gla=>gla.curar()} + } + +} + +object coliseo { + const combatientes = [] + + method agregarCombatiente(combatiente){ + combatientes.add(combatiente) + } + method curarATodos(){ + combatientes.forEach{com=>com.curar()} + } + method combateSucesivo(unGrupo){ + combatientes.forEach{com=>unGrupo.combatir(com)} + } } \ No newline at end of file diff --git a/src/gladiador.wlk b/gladiador.wlk similarity index 95% rename from src/gladiador.wlk rename to gladiador.wlk index 5ec5407..aa5bdd3 100644 --- a/src/gladiador.wlk +++ b/gladiador.wlk @@ -1,94 +1,94 @@ -import armas.* -import coliseo.* - -class Mirmillon { - const property destreza = 15 - var property vida = 100 - var fuerza = 10 - var arma - var armadura - - method puedeCombatir() {return vida > 0} - - method poderAtaque() { - return arma.poderAtaque() + fuerza - } - - method defensa() { - return armadura.defensa(self) + self.destreza() - } - - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - } - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - method masFuerte(){ - return self - } - method curar(){ - vida = 100 - } - method armarGrupoCon(gladiador) { - const grupo = new Grupo(nombre = "Mirmillolandia") - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } - -} - -class Dimachaerus { - var destreza - const fuerza = 10 - var armas = [ ] - var property vida = 100 - - - method puedeCombatir() {return vida > 0} - - method arma(nuevaArma) { - armas.add(nuevaArma) - } - - method quitarArma(arma) { - armas.remove(arma) - } - - method poderAtaque() { - return fuerza + armas.sum({ unArma => unArma.poderAtaque() }) - } - - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - destreza = destreza + 1 - } - - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - method defensa() { - return destreza / 2 - } - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - method masFuerte(){ - return self - } - method curar(){ - vida = 100 - } - method armarGrupoCon(gladiador) { - const grupo = new Grupo(nombre = "D-"+(self.poderAtaque()+gladiador.poderAtaque())) - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } +import armas.* +import coliseo.* + +class Mirmillon { + const property destreza = 15 + var property vida = 100 + var fuerza = 10 + var arma + var armadura + + method puedeCombatir() {return vida > 0} + + method poderAtaque() { + return arma.poderAtaque() + fuerza + } + + method defensa() { + return armadura.defensa(self) + self.destreza() + } + + method atacar(unGladiador) { + unGladiador.recibirAtaque(self.poderAtaque()) + } + method recibirAtaque(poderAtaque) { + vida = vida - ( poderAtaque - self.defensa() ) + } + method pelearContra(unGladiador) { + self.atacar(unGladiador) + unGladiador.atacar(self) + } + method masFuerte(){ + return self + } + method curar(){ + vida = 100 + } + method armarGrupoCon(gladiador) { + const grupo = new Grupo(nombre = "Mirmillolandia") + grupo.agregarGladiador(self) + grupo.agregarGladiador(gladiador) + return grupo + } + +} + +class Dimachaerus { + var destreza + const fuerza = 10 + var armas = [ ] + var property vida = 100 + + + method puedeCombatir() {return vida > 0} + + method arma(nuevaArma) { + armas.add(nuevaArma) + } + + method quitarArma(arma) { + armas.remove(arma) + } + + method poderAtaque() { + return fuerza + armas.sum({ unArma => unArma.poderAtaque() }) + } + + method atacar(unGladiador) { + unGladiador.recibirAtaque(self.poderAtaque()) + destreza = destreza + 1 + } + + method recibirAtaque(poderAtaque) { + vida = vida - ( poderAtaque - self.defensa() ) + } + method defensa() { + return destreza / 2 + } + method pelearContra(unGladiador) { + self.atacar(unGladiador) + unGladiador.atacar(self) + } + method masFuerte(){ + return self + } + method curar(){ + vida = 100 + } + method armarGrupoCon(gladiador) { + const grupo = new Grupo(nombre = "D-"+(self.poderAtaque()+gladiador.poderAtaque())) + grupo.agregarGladiador(self) + grupo.agregarGladiador(gladiador) + return grupo + } } \ No newline at end of file diff --git a/src/gladiadorHerencia.wlk b/gladiadorHerencia.wlk similarity index 94% rename from src/gladiadorHerencia.wlk rename to gladiadorHerencia.wlk index db9f006..e038d01 100644 --- a/src/gladiadorHerencia.wlk +++ b/gladiadorHerencia.wlk @@ -1,113 +1,113 @@ -import armas.* -import coliseo.* - -class Gladiador { - var property destreza = 15 - var fuerza = 10 - var vida = 100 - - method vida() { return vida } - - method puedeCombatir() {return vida > 0} - - method curar(){ - vida = 100 - } - - method atacar(unGladiador) { - unGladiador.recibirAtaque(self.poderAtaque()) - } - method recibirAtaque(poderAtaque) { - vida = vida - ( poderAtaque - self.defensa() ) - } - - method poderAtaque() { - return fuerza + self.poderArmas() - } - - method poderArmas() - - method defensa() - - method armarGrupoCon(gladiador) { - const grupo = self.crearGrupo(gladiador) - grupo.agregarGladiador(self) - grupo.agregarGladiador(gladiador) - return grupo - } - - method crearGrupo(gladiador) - - method pelearContra(unGladiador) { - self.atacar(unGladiador) - unGladiador.atacar(self) - } - - method masFuerte(){ - return self - } -} - -class Mirmillon inherits Gladiador { - var arma - var armadura - - //initalize { - // destreza = 15 - //} - - override method poderArmas() { - return arma.poderAtaque() - } - - override method defensa() { - return armadura.defensa(self) + self.destreza() - } - - method arma(armaNueva) { - arma = armaNueva - } - - method armadura(nueva) { - armadura = nueva - } - - override method crearGrupo(gladiador) { - return new Grupo( nombre = "Mirmillolandia") - } - -} - -class Dimachaerus inherits Gladiador{ - var armas = [ ] - - //initialize { - // fuerza = 10 - //} - - method arma(nuevaArma) { - armas.add(nuevaArma) - } - - override method poderArmas() { - return armas.sum({ unArma => unArma.poderAtaque() }) - } - - override method atacar(gladiador) { - super(gladiador) - destreza = destreza + 1 - } - - override method defensa() { - return destreza / 2 - } - - override method crearGrupo(gladiador) { - return new Grupo(nombre = "D-"+(self.poderAtaque()+gladiador.poderAtaque())) - } -} - -class GladiadorDesarmadoException inherits Exception { } - -class GladiadorMuertoException inherits Exception { } - +import armas.* +import coliseo.* + +class Gladiador { + var property destreza = 15 + var fuerza = 10 + var vida = 100 + + method vida() { return vida } + + method puedeCombatir() {return vida > 0} + + method curar(){ + vida = 100 + } + + method atacar(unGladiador) { + unGladiador.recibirAtaque(self.poderAtaque()) + } + method recibirAtaque(poderAtaque) { + vida = vida - ( poderAtaque - self.defensa() ) + } + + method poderAtaque() { + return fuerza + self.poderArmas() + } + + method poderArmas() + + method defensa() + + method armarGrupoCon(gladiador) { + const grupo = self.crearGrupo(gladiador) + grupo.agregarGladiador(self) + grupo.agregarGladiador(gladiador) + return grupo + } + + method crearGrupo(gladiador) + + method pelearContra(unGladiador) { + self.atacar(unGladiador) + unGladiador.atacar(self) + } + + method masFuerte(){ + return self + } +} + +class Mirmillon inherits Gladiador { + var arma + var armadura + + //initalize { + // destreza = 15 + //} + + override method poderArmas() { + return arma.poderAtaque() + } + + override method defensa() { + return armadura.defensa(self) + self.destreza() + } + + method arma(armaNueva) { + arma = armaNueva + } + + method armadura(nueva) { + armadura = nueva + } + + override method crearGrupo(gladiador) { + return new Grupo( nombre = "Mirmillolandia") + } + +} + +class Dimachaerus inherits Gladiador{ + var armas = [ ] + + //initialize { + // fuerza = 10 + //} + + method arma(nuevaArma) { + armas.add(nuevaArma) + } + + override method poderArmas() { + return armas.sum({ unArma => unArma.poderAtaque() }) + } + + override method atacar(gladiador) { + super(gladiador) + destreza = destreza + 1 + } + + override method defensa() { + return destreza / 2 + } + + override method crearGrupo(gladiador) { + return new Grupo(nombre = "D-"+(self.poderAtaque()+gladiador.poderAtaque())) + } +} + +class GladiadorDesarmadoException inherits Exception { } + +class GladiadorMuertoException inherits Exception { } + diff --git a/package.json b/package.json new file mode 100644 index 0000000..d2fa831 --- /dev/null +++ b/package.json @@ -0,0 +1,7 @@ +{ + "name": "clasesColiseo", + "version": "1.0.0", + "wollokVersion": "4.0.0", + "author": "dodain", + "license": "ISC" +} diff --git a/src/WOLLOK.ROOT b/src/WOLLOK.ROOT deleted file mode 100644 index ef28b5a..0000000 --- a/src/WOLLOK.ROOT +++ /dev/null @@ -1 +0,0 @@ -wollokRoot diff --git a/src/log4j.properties b/src/log4j.properties deleted file mode 100644 index b80ab85..0000000 --- a/src/log4j.properties +++ /dev/null @@ -1,10 +0,0 @@ -log4j.rootLogger=WARN, stdout - -# WHOLE UQBAR -log4j.logger.org.uqbar=WARN -## DEBUGGER -org.uqbar.project.wollok.ui.debugger - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n diff --git a/src/gladiador.wtest b/testGladiador.wtest similarity index 96% rename from src/gladiador.wtest rename to testGladiador.wtest index 19e9255..4639915 100644 --- a/src/gladiador.wtest +++ b/testGladiador.wtest @@ -1,81 +1,81 @@ -//import gladiador.* -import gladiadorHerencia.* -import armas.* - -describe "test" { - var dima - var mirmi - var grupo - - method crearMirmiConHacha(){ - const hacha = new ArmaFilosa(longitud = 2, filo = 1) - return new Mirmillon(fuerza = 20, arma = hacha, armadura = escudo) - } - method crearDimaConMartillos(){ - dima = new Dimachaerus(destreza = 10) - dima.arma(new ArmaContundente(peso = 10)) - dima.arma(new ArmaContundente(peso = 20)) - return dima - } - - method crearMirmiConCasco(){ - return new Mirmillon(fuerza = 20, arma = new ArmaContundente(peso =20), armadura = casco) - } - - method crearDimaMuyArmado(){ - dima = new Dimachaerus(destreza = 10) - 10.times{dima.arma(new ArmaFilosa(longitud = 3, filo = 2))} - return dima - } - - -test "un Mirmillon con hacha y escudo tiene poderAtaque 22" { - mirmi = self.crearMirmiConHacha() - assert.equals(22, mirmi.poderAtaque()) -} - -test "un Mirmillon con hacha y escudo tiene defensa 26.5" { - mirmi = self.crearMirmiConHacha() - assert.equals(26.5, mirmi.defensa()) -} - -test "un Dimachearus con 2 armas contundentes de peso 10 y 20 tiene poderAtaque 40" { - dima = self.crearDimaConMartillos() - assert.equals(40, dima.poderAtaque()) -} -test "un Dimachearus con destreza 10 tiene defensa 5" { - dima = self.crearDimaConMartillos() - assert.equals(5, dima.defensa()) -} - -test "un Mirmillon con hacha y escudo ataca a un demicherius con destreza 10 y este queda con 83 vida" -{ - mirmi = self.crearMirmiConHacha() - dima = self.crearDimaConMartillos() - mirmi.atacar(dima) - assert.equals(83, dima.vida()) -} - -test "el grupo que arma un mirmillon y un dimachaerus se llama mirmillolandia" { - mirmi = self.crearMirmiConHacha() - dima = self.crearDimaConMartillos() - grupo = mirmi.armarGrupoCon(dima) - assert.equals("Mirmillolandia", grupo.nombre()) -} - -test "el grupo que arma un dimachaerus y un mirmillon se llama D-62" { - mirmi = self.crearMirmiConHacha() - dima = self.crearDimaConMartillos() - grupo = dima.armarGrupoCon(mirmi) - assert.equals("D-62", grupo.nombre()) -} - -test "el mas fuerte del grupo es el dimachaerus" { - mirmi = self.crearMirmiConHacha() - dima = self.crearDimaConMartillos() - grupo = dima.armarGrupoCon(mirmi) - assert.equals(dima, grupo.masFuerte()) -} - - -} +//import gladiador.* +import gladiadorHerencia.* +import armas.* + +describe "test" { + var dima + var mirmi + var grupo + + method crearMirmiConHacha(){ + const hacha = new ArmaFilosa(longitud = 2, filo = 1) + return new Mirmillon(fuerza = 20, arma = hacha, armadura = escudo) + } + method crearDimaConMartillos(){ + dima = new Dimachaerus(destreza = 10) + dima.arma(new ArmaContundente(peso = 10)) + dima.arma(new ArmaContundente(peso = 20)) + return dima + } + + method crearMirmiConCasco(){ + return new Mirmillon(fuerza = 20, arma = new ArmaContundente(peso =20), armadura = casco) + } + + method crearDimaMuyArmado(){ + dima = new Dimachaerus(destreza = 10) + 10.times{dima.arma(new ArmaFilosa(longitud = 3, filo = 2))} + return dima + } + + +test "un Mirmillon con hacha y escudo tiene poderAtaque 22" { + mirmi = self.crearMirmiConHacha() + assert.equals(22, mirmi.poderAtaque()) +} + +test "un Mirmillon con hacha y escudo tiene defensa 26.5" { + mirmi = self.crearMirmiConHacha() + assert.equals(26.5, mirmi.defensa()) +} + +test "un Dimachearus con 2 armas contundentes de peso 10 y 20 tiene poderAtaque 40" { + dima = self.crearDimaConMartillos() + assert.equals(40, dima.poderAtaque()) +} +test "un Dimachearus con destreza 10 tiene defensa 5" { + dima = self.crearDimaConMartillos() + assert.equals(5, dima.defensa()) +} + +test "un Mirmillon con hacha y escudo ataca a un demicherius con destreza 10 y este queda con 83 vida" +{ + mirmi = self.crearMirmiConHacha() + dima = self.crearDimaConMartillos() + mirmi.atacar(dima) + assert.equals(83, dima.vida()) +} + +test "el grupo que arma un mirmillon y un dimachaerus se llama mirmillolandia" { + mirmi = self.crearMirmiConHacha() + dima = self.crearDimaConMartillos() + grupo = mirmi.armarGrupoCon(dima) + assert.equals("Mirmillolandia", grupo.nombre()) +} + +test "el grupo que arma un dimachaerus y un mirmillon se llama D-62" { + mirmi = self.crearMirmiConHacha() + dima = self.crearDimaConMartillos() + grupo = dima.armarGrupoCon(mirmi) + assert.equals("D-62", grupo.nombre()) +} + +test "el mas fuerte del grupo es el dimachaerus" { + mirmi = self.crearMirmiConHacha() + dima = self.crearDimaConMartillos() + grupo = dima.armarGrupoCon(mirmi) + assert.equals(dima, grupo.masFuerte()) +} + + +} diff --git a/wollokREPL.wlk b/wollokREPL.wlk deleted file mode 100644 index f629bfb..0000000 --- a/wollokREPL.wlk +++ /dev/null @@ -1 +0,0 @@ -object __repl {}