<commit_before>{-# LANGUAGE DeriveGeneric   #-}
{-# LANGUAGE ExplicitForAll  #-}
{-# LANGUAGE GADTs           #-}
{-# LANGUAGE RankNTypes      #-}
{-# LANGUAGE RecordWildCards #-}

-- |
-- = How to Play Acquire
--
-- These game rules are stolen from <http://www.cs.cmu.edu/~lanthony/classes/SEng/Design/acquire.html this page> which
-- is part of CS curriculum.
--
-- The main object of Acquire is to become the wealthiest player by the end of the game.  This is done by forming
-- hotel chains, shrewdly buying the right stock at the right time, merging chains to obtain capital and adding
-- hotels to the chains in which you have controlling interest to increase their value.
module Acquire.Game (
  -- * Types
  Game(..), Order(Cancel), GameId,
  module Acquire.Game.Cells,
  module Acquire.Game.Tiles,
  module Acquire.Game.Hotels,
  -- * High-level interface to game play
  -- ** Query/update game state
  currentPlayer, newGame, play, possiblePlay, highlightPlayableTiles,
  module Acquire.Game.Player,
  -- ** Main Game Loop
  PlayerInput(..), Handler, Message(..), initialisedGame, interpretCommand
    ) where

import           Acquire.Game.Cells
import           Acquire.Game.Core
import           Acquire.Game.Hotels
import           Acquire.Game.Play
import           Acquire.Game.Player
import           Acquire.Game.Tiles
import           Acquire.Game.Turn
import           Control.Monad.Prompt
import           Data.Aeson           (ToJSON)
import           Data.Array           ((//))
import           GHC.Generics
import           System.Random


data PlayerInput a where
  GetOrder    :: Player -> Game -> PlayerInput Order
  PlayedOrder :: Player -> Game -> Order -> PlayerInput ()
  Quit        :: Game -> PlayerInput ()<commit_msg>export Game.Play to enhance documentation<commit_after>{-# LANGUAGE DeriveGeneric   #-}
{-# LANGUAGE ExplicitForAll  #-}
{-# LANGUAGE GADTs           #-}
{-# LANGUAGE RankNTypes      #-}
{-# LANGUAGE RecordWildCards #-}

-- |
-- = How to Play Acquire
--
-- These game rules are stolen from <http://www.cs.cmu.edu/~lanthony/classes/SEng/Design/acquire.html this page> which
-- is part of CS curriculum.
--
-- The main object of Acquire is to become the wealthiest player by the end of the game.  This is done by forming
-- hotel chains, shrewdly buying the right stock at the right time, merging chains to obtain capital and adding
-- hotels to the chains in which you have controlling interest to increase their value.
module Acquire.Game (
  -- * Types
  Game(..), Order(Cancel), GameId,
  module Acquire.Game.Cells,
  module Acquire.Game.Tiles,
  module Acquire.Game.Hotels,
  -- * High-level interface to game play
  -- ** Query/update game state
  currentPlayer, newGame, possiblePlay, highlightPlayableTiles,
  module Acquire.Game.Player,
  -- ** Main Game Loop
  module Acquire.Game.Play,
  PlayerInput(..), Handler, Message(..), initialisedGame, interpretCommand
    ) where

import           Acquire.Game.Cells
import           Acquire.Game.Core
import           Acquire.Game.Hotels
import           Acquire.Game.Play
import           Acquire.Game.Player
import           Acquire.Game.Tiles
import           Acquire.Game.Turn
import           Control.Monad.Prompt
import           Data.Aeson           (ToJSON)
import           Data.Array           ((//))
import           GHC.Generics
import           System.Random


data PlayerInput a where
  GetOrder    :: Player -> Game -> PlayerInput Order
  PlayedOrder :: Player -> Game -> Order -> PlayerInput ()
  Quit        :: Game -> PlayerInput ()
{'fraction_non_alphanumeric': 0.10208098987626546, 'fraction_numerical': 0.0, 'mean_word_length': 2.4975417895771876, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4009598', 'n_tokens_mistral': 1045, 'n_tokens_neox': 1024, 'n_words': 329}