本文整理匯總了Golang中github.com/gdamore/tcell.Screen類的典型用法代碼示例。如果您正苦於以下問題:Golang Screen類的具體用法?Golang Screen怎麽用?Golang Screen使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Screen類的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: makebox
func makebox(s tcell.Screen) {
w, h := s.Size()
if w == 0 || h == 0 {
return
}
glyphs := []rune{'@', '#', '&', '*', '=', '%', 'Z', 'A'}
lx := rand.Int() % w
ly := rand.Int() % h
lw := rand.Int() % (w - lx)
lh := rand.Int() % (h - ly)
st := tcell.StyleDefault
gl := ' '
if s.Colors() > 1 {
st = st.Background(tcell.Color(rand.Int() % s.Colors()))
} else {
st = st.Reverse(rand.Int()%2 == 0)
gl = glyphs[rand.Int()%len(glyphs)]
}
for row := 0; row < lh; row++ {
for col := 0; col < lw; col++ {
s.SetCell(lx+col, ly+row, st, gl)
}
}
s.Show()
}
示例2: drawBox
func drawBox(s tcell.Screen, x1, y1, x2, y2 int, style tcell.Style, r rune) {
if y2 < y1 {
y1, y2 = y2, y1
}
if x2 < x1 {
x1, x2 = x2, x1
}
for col := x1; col <= x2; col++ {
s.SetCell(col, y1, style, tcell.RuneHLine)
s.SetCell(col, y2, style, tcell.RuneHLine)
}
for row := y1 + 1; row < y2; row++ {
s.SetCell(x1, row, style, tcell.RuneVLine)
s.SetCell(x2, row, style, tcell.RuneVLine)
}
if y1 != y2 && x1 != x2 {
// Only add corners if we need to
s.SetCell(x1, y1, style, tcell.RuneULCorner)
s.SetCell(x2, y1, style, tcell.RuneURCorner)
s.SetCell(x1, y2, style, tcell.RuneLLCorner)
s.SetCell(x2, y2, style, tcell.RuneLRCorner)
}
for row := y1 + 1; row < y2; row++ {
for col := x1 + 1; col < x2; col++ {
s.SetCell(col, row, style, r)
}
}
}
示例3: emitStr
func emitStr(s tcell.Screen, x, y int, style tcell.Style, str string) {
for _, c := range str {
var comb []rune
w := runewidth.RuneWidth(c)
if w == 0 {
comb = []rune{c}
c = ' '
w = 1
}
s.SetContent(x, y, c, comb, style)
x += w
}
}
示例4: drawSelect
func drawSelect(s tcell.Screen, x1, y1, x2, y2 int, sel bool) {
if y2 < y1 {
y1, y2 = y2, y1
}
if x2 < x1 {
x1, x2 = x2, x1
}
for row := y1; row <= y2; row++ {
for col := x1; col <= x2; col++ {
mainc, combc, style, width := s.GetContent(col, row)
if style == tcell.StyleDefault {
style = defStyle
}
style = style.Reverse(sel)
s.SetContent(col, row, mainc, combc, style)
col += width - 1
}
}
}
示例5: puts
func puts(s tcell.Screen, style tcell.Style, x, y int, str string) {
i := 0
var deferred []rune
dwidth := 0
for _, r := range str {
switch runewidth.RuneWidth(r) {
case 0:
if len(deferred) == 0 {
deferred = append(deferred, ' ')
dwidth = 1
}
case 1:
if len(deferred) != 0 {
s.SetContent(x+i, y, deferred[0], deferred[1:], style)
i += dwidth
}
deferred = nil
dwidth = 1
case 2:
if len(deferred) != 0 {
s.SetContent(x+i, y, deferred[0], deferred[1:], style)
i += dwidth
}
deferred = nil
dwidth = 2
}
deferred = append(deferred, r)
}
if len(deferred) != 0 {
s.SetContent(x+i, y, deferred[0], deferred[1:], style)
i += dwidth
}
}
示例6: Puts
func Puts(s tcell.Screen, style tcell.Style, x, y int, str string) {
i := 0
var deferred []rune
dwidth := 0
for _, r := range str {
switch runewidth.RuneWidth(r) {
case 0:
if len(deferred) == 0 {
deferred = append(deferred, ' ')
dwidth = 1
}
case 1:
if len(deferred) != 0 {
s.SetCell(x+i, y, style, deferred...)
i += dwidth
}
deferred = deferred[0:0]
dwidth = 1
case 2:
if len(deferred) != 0 {
s.SetCell(x+i, y, style, deferred...)
i += dwidth
}
deferred = deferred[0:0]
dwidth = 2
}
deferred = append(deferred, r)
}
if len(deferred) != 0 {
s.SetCell(x+i, y, style, deferred...)
i += dwidth
}
}
示例7: drawSelect
func drawSelect(s tcell.Screen, x1, y1, x2, y2 int, sel bool) {
if y2 < y1 {
y1, y2 = y2, y1
}
if x2 < x1 {
x1, x2 = x2, x1
}
for row := y1; row <= y2; row++ {
for col := x1; col <= x2; col++ {
if cp := s.GetCell(col, row); cp != nil {
st := cp.Style
if st == tcell.StyleDefault {
st = defStyle
}
st = st.Reverse(sel)
cp.Style = st
s.PutCell(col, row, cp)
}
}
}
}
示例8: emitStr
func emitStr(s tcell.Screen, x, y int, style tcell.Style, str string) {
for _, c := range str {
s.SetCell(x, y, style, c)
x++
}
}
示例9: RegisterFallbacks
// RegisterFallbacks registers the UTF-8 runes we use in this game with
// reasonable (best effort) ASCII fallbacks.
func RegisterFallbacks(screen tcell.Screen) {
// Register a few fallback runes - best we can do for ASCII
screen.RegisterRuneFallback('Ξ', "M")
screen.RegisterRuneFallback('Ѧ', "A")
screen.RegisterRuneFallback('Ж', "X")
screen.RegisterRuneFallback('▖', "\\")
screen.RegisterRuneFallback('▗', "/")
screen.RegisterRuneFallback('▟', "/")
screen.RegisterRuneFallback('▛', "/")
screen.RegisterRuneFallback('▙', "\\")
screen.RegisterRuneFallback('▜', "\\")
screen.RegisterRuneFallback('˄', "^")
screen.RegisterRuneFallback('˃', ">")
screen.RegisterRuneFallback('˂', "<")
screen.RegisterRuneFallback('˅', "v")
screen.RegisterRuneFallback('♥', "A")
screen.RegisterRuneFallback('─', "-")
screen.RegisterRuneFallback('━', "-")
screen.RegisterRuneFallback('═', "=")
screen.RegisterRuneFallback('⁐', "O")
screen.RegisterRuneFallback('•', "*")
}