simulate in console

This commit is contained in:
Baipyrus 2024-04-15 01:25:33 +02:00
parent 27f84eca71
commit 93322ad555

13
main.go
View File

@ -4,11 +4,13 @@ import (
"fmt"
"log"
"github.com/buger/goterm"
"github.com/go-resty/resty/v2"
"github.com/joho/godotenv"
)
func output(client *resty.Client, url string, width, height int, arr [][]Cell) {
goterm.MoveCursor(0, 0)
// Prepare instructions for matrix
instructions := make([]interface{}, 0)
// Append all live cells as pixel instructions
@ -16,13 +18,20 @@ func output(client *resty.Client, url string, width, height int, arr [][]Cell) {
for j := 0; j < height; j++ {
if arr[i][j].live {
instructions = append(instructions, Pixel{X: i, Y: j, Endpoint: PIXEL})
goterm.Print("X")
continue
}
goterm.Print(" ")
}
goterm.Println()
}
// Append update instruction
instructions = append(instructions, Update{Endpoint: UPDATE})
// Send to matrix
sendRequest(client, url, instructions)
// Update terminal UI
goterm.Flush()
}
func main() {
@ -36,6 +45,8 @@ func main() {
url, width, height := loadMatrixData()
log.Printf("At '%s': %d x %d\n", url, width, height)
// Initialize terminal UI
goterm.Clear()
// Initialize resty client
client := resty.New()
// Initialize pixel color
@ -44,7 +55,7 @@ func main() {
// Run Game of Life
done := setup(func(c [][]Cell) {
output(client, url, width, height, c)
}, width, height, 5)
}, width, height, 10)
// Wait for user input to quit
fmt.Scanln()