initial commit
This commit is contained in:
commit
ac9aa86d33
14 changed files with 1021 additions and 0 deletions
56
internal/game/player.go
Normal file
56
internal/game/player.go
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package game
|
||||
|
||||
type Player struct {
|
||||
ID string
|
||||
Name string
|
||||
Hand []Card
|
||||
Booked [][]Card // sets of 4 cards
|
||||
Connected bool
|
||||
}
|
||||
|
||||
func NewPlayer(id, name string) *Player {
|
||||
return &Player{
|
||||
ID: id,
|
||||
Name: name,
|
||||
Hand: []Card{},
|
||||
Booked: [][]Card{},
|
||||
Connected: true,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Player) Draw(card Card) {
|
||||
p.Hand = append(p.Hand, card)
|
||||
}
|
||||
|
||||
func (p *Player) RemoveCard(rank Rank) []Card {
|
||||
var removed []Card
|
||||
var remaining []Card
|
||||
for _, c := range p.Hand {
|
||||
if c.Rank == rank && len(removed) < 4 {
|
||||
removed = append(removed, c)
|
||||
} else {
|
||||
remaining = append(remaining, c)
|
||||
}
|
||||
}
|
||||
p.Hand = remaining
|
||||
return removed
|
||||
}
|
||||
|
||||
func (p *Player) HasCard(rank Rank) bool {
|
||||
for _, c := range p.Hand {
|
||||
if c.Rank == rank {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (p *Player) HasBook(rank Rank) bool {
|
||||
count := 0
|
||||
for _, c := range p.Hand {
|
||||
if c.Rank == rank {
|
||||
count++
|
||||
}
|
||||
}
|
||||
return count == 4
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue