wood101 / ChessAITiraLab

Chess AI for a Helsinki University course
0 stars 0 forks source link

Koodikatselmointi 1 #1

Closed Eetusav closed 5 years ago

Eetusav commented 6 years ago

Projekti ladattu 1.10 n. klo 13.15

Pitäisikö projektiin lisätä tasapelin mahdollisuus. Ainakin kolminkertainen toisto-tasapeli ei mahdollinen. Entäpä muut tasapelin tapaukset?

TestFoolsMate testi epäonnistuu (ainakin minulla ajaessa). Varmaankin virhe assertEqualsin syntaksien kanssa. (Failed tests: testFoolsMate(AITest): expected: but was:fi.helsinki.chessai.board.MoveTransition@6bd61f98)

Mielestäni koodi on erittäin selkeästi ja johdonmukaisesti kirjoitettu sekä dokumentoitu. Siihen en osaa antaa parannusehdotuksia. Todella hieno työ.

Yritin pelata AI:ta vastaan. 6 vuoron jälkeen antoi NullPointerExceptionin pelattuani vuoroni ja AI lakkasi pelaamasta, eikä pysty manuaalisestikaan pelata vihollisen/AI:n vuoroa? Lopussa pikku pätkä lokista. En mielestäni tehnyt mitään ihmeellistä/laitonta/rikkovaa peliä. En valitettavasti saanut replikoitua tilannetta kunnolla. (En oikein tämän asian kanssa osaa valitettavasti auttaa vaan tämä oli pikemminkin vain huomio.) Toisessakin tapauksessa tuli ensimmäisen vuoron jälkeen nullpointerexception ja peli jää jumiin. En tiedä oletko tietoinen juuri näistä bugeista, mutta kuitenkin tiedoksi varmuuden varalta.

Pelatessa valkoisella (vs Depth lvl 6 AI. Suluissa mustan vuorot) vuorot: e2->e4, (e7->e5,) e1->e2, (d8->h4,) e2->e4, (h4->f4) tilanteessa. Nyt jos kuninkaalla yrittää 'syödä' (rämpätä) mustan kuningatarta, niin peli saattaa mennä tilttiin siten, että kuningatar syö kuninkaan, ilman että valkoinen tekee validia vuoroa ollenkaan. (ja vuoro vain jotenkin mystisesti katoaa?) Tämän bugin onnistuin toistamaan.

at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at javax.swing.SwingWorker.get(SwingWorker.java:602) at fi.helsinki.chessai.gui.Table$AIThinkTank.done(Table.java:230) at javax.swing.SwingWorker$5.run(SwingWorker.java:737) at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832) at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112) at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842) at javax.swing.Timer.fireActionPerformed(Timer.java:313) at javax.swing.Timer$DoPostEvent.run(Timer.java:245) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703)