tcellで画面左下に文字列を出力する



上のキャプチャのように指定した箇所(今回は画面左下)に文字列を出力する方法を見ていきます。


画面左下に文字列を出力するには、画面左下の座標を把握する必要があります。

画面(スクリーン)のサイズはScreenパッケージのSizeメソッドで取得出来ます。

tcell/screen.go at main · gdamore/tcell


上記内容を踏まえた上で、tcellのscreen.SetContentメソッドについてで作成したコードを改修します。


package main

import (
	"github.com/gdamore/tcell/v2"
)

func main() {
	screen, err := tcell.NewScreen()
	if err != nil {
		panic(err)
	}
	if err := screen.Init(); err != nil {
		panic(err)
	}
	defer screen.Fini()

	runes := []rune{'a', 'b', 'c'}

	// screen.Size()でw(幅)とh(高さ)を取得できるが、wは使用しないので破棄
	_, h := screen.Size()

	screen.SetContent(0, h-1, 'z', runes, tcell.StyleDefault)
	screen.Show()

	// Escでプログラムを終了できるようにする
	for {
		ev := screen.PollEvent() // イベントを取得する
		switch ev := ev.(type) {
		case *tcell.EventKey:
			switch ev.Key() { // 何のキーが押されたか?を調べる
			case tcell.KeyEscape: // ESCキーが押されたら終了する
				return
			}
		default:
			//
		}
	}
}

_, h := screen.Size()

で画面の幅と高さを取得し、

screen.SetContent(0, h-1, 'z', runes, tcell.StyleDefault)

で、幅ギリギリの箇所(h-1)で文字列を出力するように指定しています。

同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。