go-tetris/globals.go

104 lines
1.5 KiB
Go

package main
import (
"log"
"time"
"github.com/nsf/termbox-go"
)
const (
blankColor = termbox.ColorBlack
boardXOffset = 4
boardYOffset = 2
rankingFileName = "/tetris.db"
MinoPreview MinoType = iota
MinoCurrent = iota
MinoDrop = iota
)
type (
MinoType int
MinoBlocks [][]termbox.Attribute
MinoRotation [4]MinoBlocks
Mino struct {
x int
y int
length int
rotation int
minoRotation MinoRotation
}
Minos struct {
minoBag [7]MinoRotation
bagRand []int
bagIndex int
}
Board struct {
boardsIndex int
width int
height int
colors [][]termbox.Attribute
rotation [][]int
previewMino *Mino
currentMino *Mino
dropDistance int
}
Boards struct {
colors [][]termbox.Attribute
rotation [][]int
}
KeyInput struct {
stopped bool
chanStop chan struct{}
chanKeyInput chan *termbox.Event
}
View struct {
}
Ai struct {
queue *[]rune
newQueue *[]rune
index int
}
Ranking struct {
scores []uint64
}
Engine struct {
stopped bool
chanStop chan struct{}
keyInput *KeyInput
ranking *Ranking
timer *time.Timer
tickTime time.Duration
paused bool
gameOver bool
previewBoard bool
score int
level int
deleteLines int
ai *Ai
aiEnabled bool
aiTimer *time.Timer
}
)
var (
boards []Boards
baseDir string
logger *log.Logger
minos *Minos
board *Board
view *View
engine *Engine
)