hcheckers-0.1.0.2: src/Rules/Brazilian.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
module Rules.Brazilian (Brazilian, brazilian) where
import Data.Typeable
import Core.Types
import Core.Board
import Core.Evaluator
import Rules.Generic
import Rules.International
import Rules.Russian
newtype Brazilian = Brazilian GenericRules
deriving (Typeable, HasBoardOrientation)
instance HasTopology Brazilian where
boardTopology _ = Diagonal
instance Show Brazilian where
show = rulesName
instance GameRules Brazilian where
type EvaluatorForRules Brazilian = SimpleEvaluator
boardSize _ = (8, 8)
initBoard rnd _ = initBoard rnd russian
initPiecesCount _ = 24
dfltEvaluator r = defaultEvaluator r
boardNotation _ = boardNotation international
parseNotation _ = parseNotation international
rulesName _ = "brazilian"
pdnId _ = "26"
updateRules r _ = r
possibleMoves (Brazilian rules) side board = gPossibleMoves rules side board
mobilityScore (Brazilian rules) side board = gMobilityScore rules side board
getGameResult = genericGameResult
getAllAddresses r = addresses8 r
brazilian :: Brazilian
brazilian = Brazilian $
let rules = internationalBase rules
in rules