Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
AIDecisionUtility.hpp File Reference
#include "AIUtility.hpp"
#include "AITradeUtility.hpp"
#include <array>
#include <cstdint>
#include <optional>
#include <span>
Include dependency graph for AIDecisionUtility.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  monopoly::ai::decision::EconomicActionPlan
 
struct  monopoly::ai::decision::WorthFactors
 
struct  monopoly::ai::decision::WinningChanceConfig
 
struct  monopoly::ai::decision::TradeEvaluationConfig
 
struct  monopoly::ai::decision::AuctionBidConfig
 
struct  monopoly::ai::decision::FairTradeConfig
 
struct  monopoly::ai::decision::MonopolyProposalConfig
 
struct  monopoly::ai::decision::SemiImportantTradeInputs
 
struct  monopoly::ai::decision::ProactiveTradeInputs
 
struct  monopoly::ai::decision::ProactiveTradeResult
 
struct  monopoly::ai::decision::CounterProposalSession
 
struct  monopoly::ai::decision::CounterProposalPreflightInputs
 
struct  monopoly::ai::decision::CounterProposalPreflightConfig
 
struct  monopoly::ai::decision::CounterProposalPreflightResult
 
struct  monopoly::ai::decision::CounterProposalBalanceConfig
 
struct  monopoly::ai::decision::CounterProposalBalanceResult
 

Namespaces

namespace  monopoly
 
namespace  monopoly::ai
 
namespace  monopoly::ai::decision
 

Enumerations

enum class  monopoly::ai::decision::CashStrategy : std::uint8_t {
  monopoly::ai::decision::MinimumAmount = 0 , monopoly::ai::decision::ExpectedRentIncludingMonopolies , monopoly::ai::decision::ExpectedRentExcludingMonopolies , monopoly::ai::decision::HighestRent ,
  monopoly::ai::decision::MonopolyDependent , monopoly::ai::decision::Count
}
 
enum class  monopoly::ai::decision::HousePurchaseDecision : std::uint8_t { monopoly::ai::decision::No = 0 , monopoly::ai::decision::Yes = 1 , monopoly::ai::decision::Later = 2 }
 
enum class  monopoly::ai::decision::EconomicActionKind : std::uint8_t {
  monopoly::ai::decision::None = 0 , monopoly::ai::decision::MortgageProperty , monopoly::ai::decision::UnmortgageProperty , monopoly::ai::decision::BuyHouse ,
  monopoly::ai::decision::SellBuilding
}
 
enum class  monopoly::ai::decision::HousingAuctionBuilding : std::uint8_t { monopoly::ai::decision::House = 0 , monopoly::ai::decision::Hotel }
 
enum class  monopoly::ai::decision::JailExitChoice : std::uint8_t { monopoly::ai::decision::Roll = 0 , monopoly::ai::decision::Pay = 1 , monopoly::ai::decision::Card = 2 }
 
enum class  monopoly::ai::decision::ProactiveTradeKind : std::uint8_t {
  monopoly::ai::decision::None = 0 , monopoly::ai::decision::GiveMonopolyForCash , monopoly::ai::decision::AcquireMonopoly , monopoly::ai::decision::SemiImportant ,
  monopoly::ai::decision::NeedsSemiImportant
}
 
enum class  monopoly::ai::decision::CounterProposalStatus : std::uint8_t {
  monopoly::ai::decision::Ready = 0 , monopoly::ai::decision::InvalidInput , monopoly::ai::decision::InvalidTime , monopoly::ai::decision::NotInvolved ,
  monopoly::ai::decision::FutureOrImmunity , monopoly::ai::decision::TooManyCounters , monopoly::ai::decision::RepeatedProperties , monopoly::ai::decision::ProbabilitySkipped ,
  monopoly::ai::decision::NotSeriousTrader , monopoly::ai::decision::NoTradePartners , monopoly::ai::decision::AnnoyedWithTrader
}
 
enum class  monopoly::ai::decision::CounterProposalBalanceStatus : std::uint8_t {
  monopoly::ai::decision::Ready = 0 , monopoly::ai::decision::InvalidInput , monopoly::ai::decision::TooPoor , monopoly::ai::decision::CouldNotReturnMonopoly ,
  monopoly::ai::decision::Unaffordable , monopoly::ai::decision::Improper
}
 

Functions

std::int64_t monopoly::ai::decision::excessCashAvailable (const rules::GameState &state, rules::PlayerNumber player, bool cashOnly, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
 
std::int64_t monopoly::ai::decision::cashAvailableAfterHousing (const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
 
bool monopoly::ai::decision::shouldBuyProperty (const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareType property, CashStrategy strategy, std::int64_t minCashOnHand, std::span< const std::int64_t > moneyOwed) noexcept
 
bool monopoly::ai::decision::hypotheticalBuyHouse (rules::GameState &state, rules::PlayerNumber player, std::int64_t moneyOwed) noexcept
 
rules::board::SquareType monopoly::ai::decision::hypotheticalUnmortgageMonopolyProperty (rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
 
rules::board::SquareType monopoly::ai::decision::hypotheticalUnmortgageProperty (rules::GameState &state, rules::PlayerNumber player, bool onlyMonopolies, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
 
bool monopoly::ai::decision::shouldUnmortgageProperty (const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
 
HousePurchaseDecision monopoly::ai::decision::shouldBuyHouse (const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::uint8_t housingPurchaseStrategy, std::int64_t moneyOwed) noexcept
 
EconomicActionPlan monopoly::ai::decision::planBuyHouseAction (const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::uint8_t housingPurchaseStrategy, std::int64_t moneyOwed) noexcept
 
std::optional< rules::board::SquareType > monopoly::ai::decision::chooseHousingAuctionSquare (const rules::GameState &state, rules::PlayerNumber player, HousingAuctionBuilding building, CashStrategy strategy, std::int64_t minCashOnHand, rules::board::PropertySet legalSquares, bool reservedBuilding, std::int64_t moneyOwed) noexcept
 
EconomicActionPlan monopoly::ai::decision::planHouseSaleAction (const rules::GameState &state, rules::board::SquareType referenceSquare) noexcept
 
EconomicActionPlan monopoly::ai::decision::planDebtLiquidationStep (const rules::GameState &state, rules::PlayerNumber player, bool sellHouses) noexcept
 
EconomicActionPlan monopoly::ai::decision::planUnmortgagePropertyAction (const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
 
std::optional< bool > monopoly::ai::decision::chooseFractionTax (const rules::GameState &state, rules::PlayerNumber player) noexcept
 
std::optional< JailExitChoice > monopoly::ai::decision::chooseJailExitChoice (const rules::GameState &state, rules::PlayerNumber player, bool canRollDoubles, bool canPayFee, bool canUseCard) noexcept
 
std::int64_t monopoly::ai::decision::totalWorthWithFactors (const rules::GameState &state, rules::PlayerNumber player, const WorthFactors &factors) noexcept
 
bool monopoly::ai::decision::mortgageWorstProperty (rules::GameState &state, rules::PlayerNumber player, bool sellHouses, bool mortgageMonopoly) noexcept
 
void monopoly::ai::decision::mortgageNegativeCashPlayers (rules::GameState &state) noexcept
 
double monopoly::ai::decision::evaluateWinningChances (const rules::GameState &state, rules::PlayerNumber player, const WinningChanceConfig &config, std::span< double > savePlayerChances) noexcept
 
std::int64_t monopoly::ai::decision::tradeBidForProperty (const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareType property, std::int64_t currentBid, rules::PlayerNumber currentBidder, const AuctionBidConfig &config) noexcept
 
std::int64_t monopoly::ai::decision::bidForAuctionItem (const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareType item, std::int64_t currentBid, rules::PlayerNumber currentBidder, const AuctionBidConfig &config, bool useTenDollarIncrement) noexcept
 
double monopoly::ai::decision::evaluateTrade (const rules::GameState &state, rules::PlayerNumber player, rules::PlayerNumber strategyPlayer, const ai::trade::TradeProposalList &proposals, const TradeEvaluationConfig &config) noexcept
 
void monopoly::ai::decision::evaluateTradePlayerList (const rules::GameState &state, std::span< const rules::PlayerNumber > players, rules::PlayerNumber strategyPlayer, const ai::trade::TradeProposalList &proposals, bool givingMonopolyForCash, const TradeEvaluationConfig &config, std::span< double > evaluations) noexcept
 
bool monopoly::ai::decision::makeTradeFair (const rules::GameState &state, rules::PlayerNumber player, std::span< const rules::PlayerNumber > partners, std::int64_t giveMost, bool givingMonopoly, ai::trade::TradeProposalList &proposals, const FairTradeConfig &config, std::span< const ai::trade::FutureImmunityRecord > immunities) noexcept
 
bool monopoly::ai::decision::buildMonopolyTrade (const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareGroup group, std::span< const rules::PlayerNumber > partners, const ai::trade::PropertySets &properties, ai::trade::TradeProposalList &proposals, const MonopolyProposalConfig &config) noexcept
 
bool monopoly::ai::decision::buildMonopolyForCash (const rules::GameState &state, rules::PlayerNumber player, rules::PlayerNumber firstPartner, const ai::trade::PropertySets &properties, ai::trade::TradeProposalList &proposals, const MonopolyProposalConfig &config) noexcept
 
bool monopoly::ai::decision::buildSemiImportantTrade (const rules::GameState &state, rules::PlayerNumber player, std::span< const double > playerAttitudes, const ai::trade::PropertySets &properties, const SemiImportantTradeInputs &inputs, ai::trade::TradeProposalList &proposals, const MonopolyProposalConfig &config) noexcept
 
ProactiveTradeResult monopoly::ai::decision::buildProactiveTrade (const rules::GameState &state, rules::PlayerNumber player, std::span< const double > playerAttitudes, const ai::trade::PropertySets &properties, const ProactiveTradeInputs &inputs, const MonopolyProposalConfig &config) noexcept
 
CounterProposalPreflightResult monopoly::ai::decision::counterProposalPreflight (const rules::GameState &state, rules::PlayerNumber player, const ai::trade::TradeProposalList &currentTrade, const CounterProposalPreflightInputs &inputs, const CounterProposalPreflightConfig &config, CounterProposalSession &session, std::span< const ai::trade::FutureImmunityRecord > immunities) noexcept
 
CounterProposalBalanceResult monopoly::ai::decision::counterProposalBalance (const rules::GameState &state, rules::PlayerNumber player, const CounterProposalPreflightResult &preflight, ai::trade::TradeProposalList &proposals, const CounterProposalBalanceConfig &config, std::span< const ai::trade::FutureImmunityRecord > immunities) noexcept
 
bool monopoly::ai::decision::shouldGiveAwayMonopoly (const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, int maxHousesPerSquareForGiveAway, std::span< const std::int64_t > moneyOwed) noexcept
 

Variables

constexpr std::array< double, 8 > monopoly::ai::decision::MonopolyAverageLandingFrequency
 
constexpr std::uint8_t monopoly::ai::decision::CriticalHousingLevel = 3
 
constexpr std::uint8_t monopoly::ai::decision::HouseBuyAtLeast3 = 1u << 0
 
constexpr std::uint8_t monopoly::ai::decision::HouseBuyWithin12 = 1u << 1