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 }