diff --git a/main.go b/main.go index 8e6f2eb..f3a7ed7 100644 --- a/main.go +++ b/main.go @@ -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()