func (c *Circuit) display() { stdscr, err := gc.Init() if err != nil { log.Println(err) } defer gc.End() rows, cols := stdscr.MaxYX() height, width := len(c.circuit)+1, len(c.circuit[0])+1 y, x := (rows-height)/2, (cols-width)/2 var win *gc.Window win, err = gc.NewWindow(height, width, y, x) if err != nil { log.Println(err) } defer win.Delete() win.Timeout(500) for i := 0; i != height-1; i++ { for j := 0; j != width-1; j++ { if c.circuit[i][j] == "" { continue } char := gc.Char([]rune(c.circuit[i][j])[0]) win.MoveAddChar(i, j, char) } } main: for { for _, com := range c.Components { com.Update() } for _, com := range c.Components { cx, cy, _, _ := com.Space() for coord, out := range com.Visual() { char := gc.Char([]rune(*out)[0]) win.MoveAddChar(cx+coord.X, cy+coord.Y, char) } } win.NoutRefresh() gc.Update() switch win.GetChar() { case 'q': break main } } }