【Go/TUI】使徒に侵食される気分になれるツール作ってみた
作ってみた
感謝
以下ガイドラインを参照しています。
背景・動機
- Goの勉強
- TUIツールの作り方の勉強
- 楽しいことをしたかった
使い方
Linux/amd64の場合はこちらからバイナリをDLして、実行
wget [ireul_vxxx_amd64_linux.zipのURL]
unzip [zipファイル名]
chmodu u+x ireul
./ireul
それ以外の環境ではGoの動作する環境で以下のように実施
git clone [email protected]:kuredev/ireul.git
go run main.go
作り方のメモ
動き
アルゴリズムで侵食や回復の動きを作れたらかっこいいなと思いつつ、仕組みはパラパラ漫画です。
各状態のアスキーアートを1ファイルずつ準備して、それっぽくなるよう sleep させつつ順次表示しています。
例
1ファイル目
H """""""""""""""""""""" H
H H
H H
+-+-+-+-+-+ +-+-+-+ H H
|C|O|D|E|:| |2|6|3| H H
+-+-+-+-+-+ +-+-+-+ H H
H H
H H
H H
H H
H (((((((((((((((((, .W. .B ((((((((((((((((( H
H .YJ. 7W, .J" .T^ H
H TQ, TN, .H^ .J" H
H (h, """""""""" .T^ H
H .Ta. .J" H
H 7H, ..T' H
H (S, J" H
H H H H
H H H H
H H H H
H...............................H H.................................H
2ファイル名
H """""""""""""""""""""" H
H H
H H
+-+-+-+-+-+ +-+-+-+ H H +-+-+-+-+-+ +-+-+-+
|C|O|D|E|:| |2|6|3| H H |Under Deliberation|
+-+-+-+-+-+ +-+-+-+ H H +-+-+-+-+-+ +-+-+-+
H H
H H
H H
H H
H (((((((((((((((((, .W. .B ((((((((((((((((( H
H .YJ. 7W, .J" .T^ MMMMMMMMMMMMMMMMMH
H TQ, TN, .H^ .J"MMMMMMMMMMMMMMMMMMMMMH
H (h, """""""""" .T^ MMMMMMMMMMMMMMMMMMMMMMH
H .Ta. .J"MMMMMMMMMMMMMMMMMMMMMMMMMMH
H 7H, ..T'MMMMMMMMMMMMMMMMMMMMMMMMMMMMH
H (S, J" MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMH
H H H MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMH
H H H MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMH
H H H MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMH
H...............................H H.................................H
実装
表示部は tcell というツールを使っています。
ファイルの内容を1Byteずつ表示しつつ、侵食されている部分は M
で表示しているため、そこだけ色を変えるようにしています。
主な表示処理部抜粋
bytes, err := files.ReadFile(fileName)
if err != nil {
panic(err)
}
s := string(bytes)
x := 1
y := 1
for _, c := range s {
if string(c) == "\n" {
x = 1
y = y + 1
} else {
if string(c) == "M" {
screen.SetContent(x, y, c, nil, tcell.StyleDefault.Foreground(tcell.ColorRed))
} else {
screen.SetContent(x, y, c, nil, tcell.StyleDefault.Foreground(tcell.ColorDarkCyan))
}
x = x + 1
}
}
screen.Show()
その他
- 推しはマヤ、日向、青葉のオペレーターズ
- 感謝:
Author And Source
この問題について(【Go/TUI】使徒に侵食される気分になれるツール作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/kure/items/e0fd27e9c12d07c47c05著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .