[Haskell-cafe] Re: Haskell shootout game
apfelmus
apfelmus at quantentunnel.de
Mon Jul 16 05:14:53 EDT 2007
Hugh Perkins wrote:
> Had an idea: a real shootout game for Haskell.
>
> scripts "fight" in an arena for a second or so, and the results are
> published to the website
Sounds great :)
There are lots of "robot battle" games out there, like
http://realtimebattle.sourceforge.net/
http://robocode.sourceforge.net
but none in Haskell, of course. I think there's a classic predecessor to
those but I don't know exactly.
> Each turn is represented by a function something like:
>
> doturn :: String -> [[GridValue]] -> (Action,String)
The explicit state can be dispensed with by introducing a stream type
data Robot = Robot (BattleField -> (Action, Robot)
type BattleField = [[GridValue]]
This way, the program is entirely free in how to choose its state
representation. You can turn any doturn - based program into a
stream-based one
toRobot :: String -> (BattleField -> String -> (Action,String))
-> Robot
toRobot s doturn = Robot $ \arena ->
let (action, s') = doturn bf s in (action, toRobot s' doturn)
The drawback is that it's no longer possible to save a snapshot of each
program's state to disk and resume the fight later.
Regards,
apfelmus
More information about the Haskell-Cafe
mailing list