- Enter key now triggers createGame action on home page - Remove redundant setNickname action from home page - Remove unused code: join channel, Leave(), Stop() methods - Consolidate ID generation into game.GenerateID() - Remove unused CreatedAt field from Game struct
38 lines
795 B
Go
38 lines
795 B
Go
package game
|
|
|
|
type PlayerID string
|
|
|
|
type Player struct {
|
|
ID PlayerID
|
|
Nickname string
|
|
Color int // 1 = Red, 2 = Yellow
|
|
}
|
|
|
|
type GameStatus int
|
|
|
|
const (
|
|
StatusWaitingForPlayer GameStatus = iota
|
|
StatusInProgress
|
|
StatusWon
|
|
StatusDraw
|
|
)
|
|
|
|
type Game struct {
|
|
ID string
|
|
Board [6][7]int // 6 rows, 7 columns; 0=empty, 1=red, 2=yellow
|
|
Players [2]*Player // Index 0 = creator (Red), Index 1 = joiner (Yellow)
|
|
CurrentTurn int // 1 or 2 (matches player color)
|
|
Status GameStatus
|
|
Winner *Player
|
|
WinningCells [][2]int // Coordinates of winning 4 cells for highlighting
|
|
}
|
|
|
|
func NewGame(id string) *Game {
|
|
return &Game{
|
|
ID: id,
|
|
Board: [6][7]int{},
|
|
CurrentTurn: 1, // Red goes first
|
|
Status: StatusWaitingForPlayer,
|
|
}
|
|
}
|