本文整理汇总了Golang中github.com/twoodhouse/coup-sim/model/log.Entity类的典型用法代码示例。如果您正苦于以下问题:Golang Entity类的具体用法?Golang Entity怎么用?Golang Entity使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Entity类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: GetStealBlockCardChoice
func (entity *Entity) GetStealBlockCardChoice(log *log.Entity, playerNames []string, coinInfo map[string]int, faceupInfo map[string][]int, deck *deck.Entity) int {
fmt.Println(log.PrettyJsonStr())
printPersonalTable(entity.playerName, playerNames, coinInfo, faceupInfo, deck)
var choice int
fmt.Printf("GetStealBlockCardChoice:\n> ")
fmt.Scanf("%d\n", &choice)
return choice
}
示例2: GetBlock
func (entity *Entity) GetBlock(log *log.Entity, playerNames []string, coinInfo map[string]int, faceupInfo map[string][]int, deck *deck.Entity) bool {
fmt.Println(log.PrettyJsonStr())
printPersonalTable(entity.playerName, playerNames, coinInfo, faceupInfo, deck)
var block bool
fmt.Printf("GetBlock:\n> ")
fmt.Scanf("%t\n", &block)
return block
}
示例3: GetChallenge
func (entity *Entity) GetChallenge(log *log.Entity, playerNames []string, coinInfo map[string]int, faceupInfo map[string][]int, deck *deck.Entity) bool {
fmt.Println(log.PrettyJsonStr())
printPersonalTable(entity.playerName, playerNames, coinInfo, faceupInfo, deck)
var challenge bool
fmt.Printf("GetChallenge:\n> ")
fmt.Scanf("%t\n", &challenge)
return challenge
}
示例4: GetTarget
func (entity *Entity) GetTarget(log *log.Entity, playerNames []string, coinInfo map[string]int, faceupInfo map[string][]int, deck *deck.Entity) string {
fmt.Println(log.PrettyJsonStr())
printPersonalTable(entity.playerName, playerNames, coinInfo, faceupInfo, deck)
var target string
fmt.Printf("GetTarget:\n> ")
fmt.Scanf("%s\n", &target)
return target
}
示例5: GetExchangeReturnChoices
func (entity *Entity) GetExchangeReturnChoices(log *log.Entity, playerNames []string, coinInfo map[string]int, faceupInfo map[string][]int, deck *deck.Entity) (int, int) {
fmt.Println(log.PrettyJsonStr())
// fmt.Printf("Cards gained by using exchange: %d%d\n", c1, c2)
printPersonalTable(entity.playerName, playerNames, coinInfo, faceupInfo, deck)
var r1 int
fmt.Printf("GetExchangeReturnChoices(1):\n> ")
fmt.Scanf("%d\n", &r1)
var r2 int
fmt.Printf("GetExchangeReturnChoices(2):\n> ")
fmt.Scanf("%d\n", &r2)
return r1, r2
}
示例6: disqualifyPlayer
func disqualifyPlayer(player *player.Entity, table *table.Entity, log *log.Entity, reason string) {
player.Kill()
disqualifiedPlayerFaceupDeck := table.FaceupDecks()[player.Name()]
if disqualifiedPlayerFaceupDeck[0] != 0 {
disqualifiedPlayerFaceupDeck[1] = disqualifiedPlayerFaceupDeck[0]
}
disqualifiedPlayerFaceupDeck[0] = player.Deck().TakeTopCard()
if player.Deck().Size() > 0 {
disqualifiedPlayerFaceupDeck := table.FaceupDecks()[player.Name()]
if disqualifiedPlayerFaceupDeck[0] != 0 {
disqualifiedPlayerFaceupDeck[1] = disqualifiedPlayerFaceupDeck[0]
}
disqualifiedPlayerFaceupDeck[0] = player.Deck().TakeTopCard()
}
log.CreateDisqualify(reason)
}
示例7: DoTurn
//order of turn operation:
//1. Assign action and target
//2. Check general challenge concerning action
//3. Check block from targeted player
//4. Check challenge concerning block from source player
//5. Set action results given challenge/block success
func DoTurn(player *player.Entity, otherPlayers []*player.Entity, log *log.Entity, table *table.Entity, turnCounter int) (*log.Entity, *table.Entity) {
log.SetPlayerName(player.Name())
action := player.Strategy().GetAction(log, table.PlayerNames(), table.PlayerCoins(), table.FaceupDecks(), player.Deck())
targetedPlayer := player //set default - not used unless assassinate or steal happens
log.SetActionName(action)
challengeLoss := false
var target string
//mid-game coin outputs
// fmt.Print(player.Name() + ": ")
// fmt.Print(player.Coins())
// fmt.Println()
if !player.Dead() && action != "tax" && action != "income" && action != "foreign_aid" && action != "coup" && action != "steal" && action != "assassinate" && action != "exchange" && action != "coup" {
disqualifyPlayer(player, table, log, "Player attempted invalid action "+action)
}
if action != "coup" && player.Coins() >= 10 && !player.Dead() {
disqualifyPlayer(player, table, log, "Player had 10+ coins and did not coup")
}
if action == "coup" && player.Coins() < 7 && !player.Dead() {
disqualifyPlayer(player, table, log, "Player had "+strconv.Itoa(player.Coins())+" coins and needed 7 to Coup")
}
if action == "assassinate" && !player.Dead() {
if player.Coins() < 3 {
disqualifyPlayer(player, table, log, "Player had "+strconv.Itoa(player.Coins())+" coins and needed 3 to Assassinate")
} else {
player.AddCoins(-3)
}
}
//get target for certain actions
if action == "steal" || action == "assassinate" || action == "coup" && !player.Dead() {
target = player.Strategy().GetTarget(log, table.PlayerNames(), table.PlayerCoins(), table.FaceupDecks(), player.Deck())
if validLiveOtherPlayerName(otherPlayers, target) {
targetedPlayer = playerByName(otherPlayers, target)
log.CreateTarget(target)
} else {
disqualifyPlayer(player, table, log, "Target '"+target+"' is not a valid opposing-player name")
}
}
//top-level challenge logic - it can only happen with these actions
if (action == "tax" || action == "steal" || action == "assassinate" || action == "exchange") && !player.Dead() {
for i := 0; i < len(otherPlayers); i++ {
if !otherPlayers[i].Dead() && otherPlayers[i].Strategy().GetChallenge(log, table.PlayerNames(), table.PlayerCoins(), table.FaceupDecks(), otherPlayers[i].Deck()) {
challengeSuccess := !player.Deck().HasCardForAction(action)
losingPlayer := player
if challengeSuccess {
challengeLoss = true
losingPlayer = player
} else {
losingPlayer = otherPlayers[i]
var cardValue int
switch action {
case "tax":
cardValue = 1
case "steal":
cardValue = 2
case "assassinate":
cardValue = 3
case "block":
cardValue = 4
case "exchange":
cardValue = 5
}
swapChallengedCard(player, table, log, cardValue)
}
log.CreateChallenge(otherPlayers[i].Name(), challengeSuccess)
cardLoss := revealCard(losingPlayer, table, log)
log.CreateChallengeCardLoss(cardLoss)
break
}
}
}
if (action == "steal" || action == "assassinate") && !player.Dead() && !challengeLoss && !targetedPlayer.Dead() {
if targetedPlayer.Strategy().GetBlock(log, table.PlayerNames(), table.PlayerCoins(), table.FaceupDecks(), targetedPlayer.Deck()) {
log.CreateBlock()
var blockCardClaim int
if action == "steal" {
blockCardClaim = targetedPlayer.Strategy().GetStealBlockCardChoice(log, table.PlayerNames(), table.PlayerCoins(), table.FaceupDecks(), targetedPlayer.Deck())
log.CreateBlockCardClaim(blockCardClaim)
if blockCardClaim != 2 && blockCardClaim != 5 {
disqualifyPlayer(targetedPlayer, table, log, "Block card '"+strconv.Itoa(blockCardClaim)+"' is not valid for blocking steal'")
}
}
if player.Strategy().GetChallenge(log, table.PlayerNames(), table.PlayerCoins(), table.FaceupDecks(), player.Deck()) {
var neededCardAction string
if action == "steal" {
if blockCardClaim == 2 {
neededCardAction = "steal"
//.........这里部分代码省略.........