|
|
- module Strategy1 where
-
- import Datatypes
- import VM
- import Datatypes.Game (Command(..))
-
-
- strat1 :: Game -> ([Command],Int)
- strat1 game = if new_notes == GameOver
- then (new_command : [], score new_game)
- else (new_command : (fst $ strat1 new_game), snd $ strat1 new_game)
- where
- (new_game_se,notes_se) = step game MoveSE
- (new_game_sw,notes_sw) = step game MoveSW
- se = (new_game_se,notes_se,MoveSE)
- sw = (new_game_sw,notes_sw,MoveSW)
- (new_game,new_notes,new_command) = case (notes_sw,notes_se) of
- (GameOver,GameOver) -> se
- (_,GameOver) -> sw
- (GameOver,_) -> se
- (Lock i,OK) -> if i > 0
- then sw
- else se
- (OK,Lock i) -> if i > 0
- then se
- else sw
- (OK,OK) -> sw
- (Lock i,Lock j) -> if i > j
- then sw
- else se
- otherwise -> (game,GameOver,MoveE)
|