go_games_collection/player.go
2026-07-04 13:51:04 +03:00

51 lines
1.5 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
// PlayerState — состояние одного игрока в партии.
type PlayerState struct {
Name string
Hand []Card
IsHuman bool
Balance int // текущий капитал игрока (в условных фишках/деньгах)
}
// HandValue — суммарная очковая стоимость карт на руке игрока.
func (p *PlayerState) HandValue() int {
return HandValue(p.Hand)
}
// HasCard проверяет наличие конкретной карты на руке.
func (p *PlayerState) HasCard(c Card) bool {
for _, card := range p.Hand {
if card == c {
return true
}
}
return false
}
// RemoveCard удаляет карту из руки, если она там есть. Возвращает
// false, если карты не было (вызывающий код должен считать это
// программной ошибкой, а не игровой ситуацией).
func (p *PlayerState) RemoveCard(c Card) bool {
for i, card := range p.Hand {
if card == c {
p.Hand = append(p.Hand[:i], p.Hand[i+1:]...)
return true
}
}
return false
}
// RemoveCards удаляет несколько карт разом. Если хотя бы одной не
// было на руке — не удаляет ничего и возвращает false.
func (p *PlayerState) RemoveCards(cards []Card) bool {
for _, c := range cards {
if !p.HasCard(c) {
return false
}
}
for _, c := range cards {
p.RemoveCard(c)
}
return true
}