Termbox-go: ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ ์กฐ์ •์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•?

์— ๋งŒ๋“  2013๋…„ 04์›” 26์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nsf/termbox-go

์ €๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ UI๋ฅผ ํ•œ ๋ฒˆ๋„ ์ž‘์„ฑํ•ด ๋ณธ ์ ์ด ์—†์ง€๋งŒ ํ…€๋ฐ•์Šค๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•ด ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์‹œ๋„ํ•ด ๋ณด๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ต์ˆ™ํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ๋‚˜๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“œ๋Š” ํ•œ ๊ฐ€์ง€๋Š” ํ„ฐ๋ฏธ๋„ ์ฐฝ ํฌ๊ธฐ ์กฐ์ • ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. termbox๋Š” ์ด ๊ฒฝ์šฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ? ์ด์ƒ์ ์œผ๋กœ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ„ฐ๋ฏธ๋„์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด ํ•จ์ˆ˜๋Š” ์ƒˆ ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์…€์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ์–ด๋–ค ๋ฌธ์„œ๋„ ๋ณด์ง€ ๋ชปํ–ˆ๊ณ  ๊ทธ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ณ  ์–ด๋ ค์šด์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Termbox์—๋Š” ํŠน๋ณ„ํ•œ ํฌ๊ธฐ ์กฐ์ • ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ๋•Œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. http://godoc.org/github.com/nsf/termbox-go#Event - ์ด ๊ตฌ์กฐ๋Š” Type ๊ฐ€ EventResize $ ๋กœ ์„ค์ •๋˜๊ณ  ์œ ํšจํ•œ Width ๋ฐ Height ์ด ๋ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์‹œ ๊ทธ๋ฆด ๋•Œ๋งˆ๋‹ค ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋ฒ„ํผ๋Š” Clear ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ Flush ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ง€์šฐ๊ธฐ ์ „๊ณผ ํ”Œ๋Ÿฌ์‹œํ•˜๊ธฐ ์ „์— ๋‚ด๋ถ€ ๋ฐฑ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Size ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ํฌ๊ธฐ ์กฐ์ •์„ ์žก๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ• ์ง€๋Š” ์ •๋ง ๋…ผ๋ฆฌ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์™„์ „ํžˆ ๋‹ค์‹œ ๊ทธ๋ฆฐ ๋‹ค์Œ ๋งค๋ฒˆ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์•ฑ์ด ์‹ ์ค‘ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋งค๋ฒˆ ์ž์ฒด๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํฌ๊ธฐ ์กฐ์ • ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ด ๋™์ž‘์˜ ์˜ฌ๋ฐ”๋ฅธ ์˜๋ฏธ์— ๋Œ€ํ•ด ์•„์ง ํ™•์‹ ์ด ์„œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฌธ์„œํ™”๋ฅผ ๋” ์ž˜ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ํ…€๋ฐ•์Šค์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ์„ค๋ช…ํ•˜๋Š” ์ผ์ข…์˜ ์ž์Šต์„œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๋ฏธ๋ฆฌ ์•Œ๋ฆผ์œผ๋กœ ๋‚จ๊ฒจ๋‘ก๋‹ˆ๋‹ค.

๋‚ด ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด: EventResize ์ˆ˜์‹  ์งํ›„ termbox.Size() ๋ฅผ ํ˜ธ์ถœํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜ํ™˜ ๊ฐ’์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ event.Width, event.Height ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์› ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ๊ฒ€์ƒ‰์„ ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” resize() ๊ฐ€ termbox.Size() ์—์„œ ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€๋งŒ ์•ฝ๊ฐ„์˜ ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ termbox.Size() ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋Ÿฌํ•œ ํ–‰๋™์„ ๊ฒฝ๊ณ ํ•˜๋Š” ์ฃผ์„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Size() ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ๋Š”๋ฐ ์ง€๊ธˆ์ด ๋” ๋‚ซ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๊ทธ๊ฒŒ ๋” ๋ช…ํ™•ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰