1. 02 Dec, 2011 1 commit
    • Sam Moore's avatar
      Fixed "forfax" sample AI · 53a66690
      Sam Moore authored
      Forfax now plays a fairly mediocre game of Stratego
      He usually beats the dummy AI. Usually. After a while.
      
      Sometimes he gets stuck in a loop where he repeats the same moves over and over again.
      Sometimes he attempts to move bombs or the flag (???)
      He also never actually captures the flag; he just destroys all the enemy pieces before going into a loop.
      This is probably due to the movement value being very low for moving over pieces that are likely to be bombs
      And when all mobile pieces are destroyed, the remainder are seen to be likely to be bombs.
      
      The segfault was caused by much stupidity involving a for loop in Board::ForgetPiece and the continue statement
      Changed to a while loop to fix.
      
      Since Forfax works (Although it plays pretty badly) I will probably move onto other things for a while.
      53a66690
  2. 01 Dec, 2011 1 commit
    • Sam Moore's avatar
      Mostly messing with "forfax" AI · 041c37d1
      Sam Moore authored
      It would be nice to have an AI that doesn't segfault.
      
      Currently segfault caused by Board::ForgetPiece.
      valgrind outputs a lot of wierd crap about std::vector and uninitialised values
      Uninitialised values created by std::vector::push_back()
      All I am pushing is a simple pointer (Piece*), so I don't know WHY uninitialised values happen...
      The std::list used in MakeMove is somehow using the same memory as the std::vectors of the board, which is causing invalid reads
      Stupid, stupid stdlib.
      
      I think that once that is fixed, forfax is pretty much done. I'd like to see how well it plays, but... segfaults.
      
      I also fixed dummy to take into account the modified turn protocol which prints piece ranks. dummy just reads them and ignores them.
      
      I plan to make the manager program more useful
      	- Enable human players
      	- Add command line arguments for things like timeouts, graphics on/off etc
      	- Read a game from a file (so that games can be viewed after they are run)
      I need to go through the manager program carefully and make sure that the way AI programs quit actually works
      Ideally the AI program has a short period to exit gracefully before it is killed
      I think for some reason the AI program always just gets killed.
      
      At some point I need to setup a VM for this. I should probably do that.
      
      I also might change minor things like the tokens (from random characters to digits + a few characters) and the internal ordering of the enum Piece::Type
      041c37d1
  3. 29 Nov, 2011 1 commit