initial commit

This commit is contained in:
Daniel Noulet 2026-10-07 15:16:00 +02:00
commit ac9aa86d33
14 changed files with 1021 additions and 0 deletions

56
internal/game/player.go Normal file
View 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
}