package main import ( "fmt" "time" ) type Piece int const ( IPiece Piece = iota JPiece LPiece SPiece ZPiece TPiece OPiece ) type Field [20][10]bool func (f Field) String() (output string) { var toprow [10]bool var top bool for _, row := range f { top = !top for i, block := range row { if top { toprow[i] = block continue } switch { case toprow[i] && block: output += "\u2588" case toprow[i] && !block: output += "\u2580" case !toprow[i] && block: output += "\u2584" default: output += " " } } if !top { output += "\n" } } return output } func main() { var f Field fmt.Print("\033[2J") // Clear screen for i := 0; i < 200; i++ { if (i+i/10)%2 == 0 { f[i/10][i%10] = true } fmt.Print("\033[0;0H") // Position to 0,0 fmt.Println(f.String()) time.Sleep(time.Second/1000) } }