Not logged in. · Lost password · Register

Page:  1  2  next 
Jazzpirate
Member since Oct 2016
803 posts
Subject: Scala->Java
+2 obet, Shadow992
Ich hab wieder das git repo geupdated. Es sollte jetzt scala 2.10 kompatibel sein.

Aber viel eichtiger: Marcel a.k.a. Shadow992 hat ein java interface gebaut, das euch die konvertiererei der scala datenstrukturen abnimmt (ich hätte ja nicht gedacht dass das nötig ist, aber scheinbar ist es das :-( ), ihr findet es in src.
Wenn ihr also java benutzt ist das definitiv euer Freund.

Sollte es noch probleme mit interfacing geben, bitte lasst es mich so schnell es geht wissen, damit ihr euch um den eigentlichen code kümmern könnt ;-)
Jazzpirate
Member since Oct 2016
803 posts
Push.

Hab eine timeoutMove variable für Agenten eingeführt; falls die move funktion timeouted(? ist das ein Wort?) wird die variable ausgelesen.
Jazzpirate
Member since Oct 2016
803 posts
As requested: Nach einem timeout werden jetzt die entsprechenden threads gekillt (arme threads... :( ). Das gilt natürlich sowohl für die init als auch die move funktionen.
nenas
Avatar
Member since May 2012
229 posts
Killed thread!
  1. Exception in thread "main" java.lang.RuntimeException: Error killing thread: No thread started
  2.     at info.kwarc.teaching.AI.Kalah.Game.$anonfun$playerMove$2(Framework.scala:234)
  3.     at info.kwarc.teaching.AI.Kalah.Game$$Lambda$36/1899073220.apply(Unknown Source)
  4.     at scala.Option.getOrElse(Option.scala:121)
  5.     at info.kwarc.teaching.AI.Kalah.Game.playerMove(Framework.scala:234)
  6.     at info.kwarc.teaching.AI.Kalah.Game.play(Framework.scala:298)
  7.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$2(Test.scala:20)
  8.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$2$adapted(Test.scala:18)
  9.     at info.kwarc.teaching.AI.Kalah.Tournament$$Lambda$9/335471116.apply(Unknown Source)
  10.     at scala.collection.immutable.List.foreach(List.scala:378)
  11.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$1(Test.scala:18)
  12.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$1$adapted(Test.scala:17)
  13.     at info.kwarc.teaching.AI.Kalah.Tournament$$Lambda$8/1121172875.apply(Unknown Source)
  14.     at scala.collection.immutable.List.foreach(List.scala:378)
  15.     at info.kwarc.teaching.AI.Kalah.Tournament.run(Test.scala:17)
  16.     at info.kwarc.teaching.AI.Kalah.Test$.main(Test.scala:43)
  17.     at info.kwarc.teaching.AI.Kalah.Test.main(Test.scala)
  18.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  19.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  20.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  21.     at java.lang.reflect.Method.invoke(Method.java:497)
  22.     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Soll das passieren, bzw. mach ich da was falsch?
Sometimes, I guess there just aren't enough rocks.
Shadow992
Member since Jan 2014
290 posts
Quote by nenas:
Killed thread!
  1. Exception in thread "main" java.lang.RuntimeException: Error killing thread: No thread started
  2.     at info.kwarc.teaching.AI.Kalah.Game.$anonfun$playerMove$2(Framework.scala:234)
  3.     at info.kwarc.teaching.AI.Kalah.Game$$Lambda$36/1899073220.apply(Unknown Source)
  4.     at scala.Option.getOrElse(Option.scala:121)
  5.     at info.kwarc.teaching.AI.Kalah.Game.playerMove(Framework.scala:234)
  6.     at info.kwarc.teaching.AI.Kalah.Game.play(Framework.scala:298)
  7.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$2(Test.scala:20)
  8.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$2$adapted(Test.scala:18)
  9.     at info.kwarc.teaching.AI.Kalah.Tournament$$Lambda$9/335471116.apply(Unknown Source)
  10.     at scala.collection.immutable.List.foreach(List.scala:378)
  11.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$1(Test.scala:18)
  12.     at info.kwarc.teaching.AI.Kalah.Tournament.$anonfun$run$1$adapted(Test.scala:17)
  13.     at info.kwarc.teaching.AI.Kalah.Tournament$$Lambda$8/1121172875.apply(Unknown Source)
  14.     at scala.collection.immutable.List.foreach(List.scala:378)
  15.     at info.kwarc.teaching.AI.Kalah.Tournament.run(Test.scala:17)
  16.     at info.kwarc.teaching.AI.Kalah.Test$.main(Test.scala:43)
  17.     at info.kwarc.teaching.AI.Kalah.Test.main(Test.scala)
  18.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  19.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  20.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  21.     at java.lang.reflect.Method.invoke(Method.java:497)
  22.     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Soll das passieren, bzw. mach ich da was falsch?

Ne das ist sicher ungewollt, ich erinnere mich aber, dass irgendjemand schon einmal ähnliche Probleme hatte.
Versuch mal direkt auf den Source-Dateien (also auf *.scala und *.java) zu arbeiten und nicht die *.class oder *.jar files zu benutzen. Besonders "idiotensicher" geht das mit IntelliJ (Ich spreche aus Erfahrung :D). Sag Bescheid, wenn es dennoch Probleme gibt. :)
Jazzpirate
Member since Oct 2016
803 posts
Error killing thread: No thread started
Meeh, nee, das sollte nicht passieren; weder mit den source-files noch mit der .ja (.class-files hab ich nicht getestet) :-(
Ich guck's mir mal genauer an...
Jazzpirate
Member since Oct 2016
803 posts
Neue vesion mit expliziten executioncontexts gepusht; kannst du mal probieren, ob das den "No thread started"-fehler auch eliminiert?
nenas
Avatar
Member since May 2012
229 posts
Quote by Jazzpirate:
Neue vesion mit expliziten executioncontexts gepusht; kannst du mal probieren, ob das den "No thread started"-fehler auch eliminiert?

Danke, klappt jetzt.
Sometimes, I guess there just aren't enough rocks.
Jazzpirate
Member since Oct 2016
803 posts
In reply to post #1
pushed.

HumanPlayers haben jetzt kein time constraint, Tournament verschoben; tournament kann scores in dateien speichern/lesen
Jazzpirate
Member since Oct 2016
803 posts
Pushed.

Captures werden jetzt richtig berechnet und es gibt eine Interface-klasse die jeglichen output übernimmt. Ein Game/Tournament übernimmt ein Interface-Objekt und gibt darüber alle infos aus. Es gibt ein object Terminal, dass einfach die Konsole benutzt, aber ich arbeite grad an was fancyerem. java swing is a bitch.
nenas
Avatar
Member since May 2012
229 posts
+1 Jazzpirate
Quote by Jazzpirate:
Pushed.

Captures werden jetzt richtig berechnet [...]

Sicher?

Player2:
      |-----|-----|-----|-----|-----|-----|
|-----|  0  |  1  |  0  |  0  |  0  |  0  |-----|
| 41  |-----|-----|-----|-----|-----|-----| 27  |
|-----|  0  |  1  |  2  |  0  |  0  |  0  |-----|
      |-----|-----|-----|-----|-----|-----|
         1     2     3     4     5     6 
Player2: House 5
Finished in round 8. Final score: 30 : 42
      |-----|-----|-----|-----|-----|-----|
|-----|  0  |  0  |  0  |  0  |  0  |  0  |-----|
| 42  |-----|-----|-----|-----|-----|-----| 27  |
|-----|  0  |  1  |  2  |  0  |  0  |  0  |-----|
      |-----|-----|-----|-----|-----|-----|
         1     2     3     4     5     6

Den Commit "Bugfix" von 11:09 hab ich übernommen. Evtl. hast du vergessen nochmal zu pushen?
Sometimes, I guess there just aren't enough rocks.
Jazzpirate
Member since Oct 2016
803 posts
jupp, push vergessen :D
jetzt aber ^^
Jazzpirate
Member since Oct 2016
803 posts
+1 Shadow992
fancy interface gepusht
nenas
Avatar
Member since May 2012
229 posts
Wiki:
When one player no longer has any seeds in any of their houses, the game ends. The other player moves all remaining seeds to their store, and the player with the most seeds in their store wins.
It is possible for the game to end in a draw.

Kalah framework:

[Image: https://i.imgur.com/NZRHLEK.jpg]

Edit: Ist das Absicht kein Untenschieden zuzulassen?:
  1.  
  2. def play : (Int,Int) = {
  3. [...]
  4.       val (sc1,sc2) = if (finished == Some(Player1)) {
  5.         val (r1,r2) = (Store1.sum, Store2.get)
  6.         if (r1 == r2) (r1 +1,r2) else (r1,r2)
  7.       } else {
  8.         val (r1,r2) = (Store1.get, Store2.sum)
  9.         if (r1 == r2) (r1,r2 + 1) else (r1,r2)
  10.       }
  11. [...]
Sometimes, I guess there just aren't enough rocks.
This post was edited on 2016-12-14, 23:05 by nenas.
Shadow992
Member since Jan 2014
290 posts
Quote by nenas:
Wiki:
When one player no longer has any seeds in any of their houses, the game ends. The other player moves all remaining seeds to their store, and the player with the most seeds in their store wins.
It is possible for the game to end in a draw.

Edit: Ist das Absicht kein Untenschieden zuzulassen?:
  1.  
  2. def play : (Int,Int) = {
  3. [...]
  4.       val (sc1,sc2) = if (finished == Some(Player1)) {
  5.         val (r1,r2) = (Store1.sum, Store2.get)
  6.         if (r1 == r2) (r1 +1,r2) else (r1,r2)
  7.       } else {
  8.         val (r1,r2) = (Store1.get, Store2.sum)
  9.         if (r1 == r2) (r1,r2 + 1) else (r1,r2)
  10.       }
  11. [...]

Absicht ja, aber angeblich will Dennis das für morgen noch ändern, sodass es Draw gibt und das Turnier dann "2 Punkte für Sieg", "1 Punkt beide für Draw" und "0 punkte für Niederlage" berechnet.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  1  2  next 
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen