Node.js๋ก ๋ญ๊ฐ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ค ๋ณด๋ฉด ํฐ๋ฏธ๋์ ๋ค๋ฃจ๊ณ ์ถ์๋๊ฐ ์๋ค.
๋จ์ํ Console.log๋ก ๋ก๊ทธ๋ง ๋จ๊ธฐ๋ ์์ค์์ ์ข ๋ ๋์ ๋ ๋ฒจ๋ก ํฐ๋ฏธ๋์ ๋ค๋ฃจ๊ณ ์ถ์๊ฒฝ์ฐ process.stdout ์ ์ด์ฉํ๋ฉด ๋ ๋ง์๊ฑธ ํ ์ ์๋ค.
์ฌ์ค ์ด ๊ธ์ ๋จ๊ธฐ๋ ์ด์ ๋ ๋ฏธ๋์ ๋ด๊ฐ ๊น๋จน์ ๊ฒ์ ๋๋นํด์ ์ผ์ข ์ ๋ฐฑ์ ์ฉ์ผ๋ก..
์ฐ์ ํ๋ฉด์ ์ ๋ฆฌํ๋๊ฑฐ ๋ถํฐ.
process.stdout.write('\033c');
์์ ๊ฐ์ด ์ ๋ ฅ์ ํ๋ฉด ์ ์ฒด ํ๋ฉด์ด ํด๋ฆฌ์ด๊ฐ ๋๋ค. ํฐ๋ฏธ๋์์ clear๋ฅผ ์ ๋ ฅํ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค.
ํ์ฌ ํ๋ฉด์ ํฐ๋ฏธ๋์ ํฌ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
๋ง์ฝ์ ํ๋ฉด์ ๋ฆฌ์ฌ์ด์ฆ ํ์ ๊ฒฝ์ฐ ์ฌ์ด์ฆ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ตฌํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ๊ฐ๋ฅํ๋ค.
process.stdout.on('resize', () => {
process.stdout.write('\033c');
console.log('screen size has changed!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
๋ค์์ผ๋ก ์ปค์๋ฅผ ์์นํ๋ ๋ฐฉ๋ฒ์ด๋ค.
2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ์๋ ์์น๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ, ๋ค๋ฅธ ํ๋๋ ์ ๋ ์์น๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด ๋ฐฉ๋ฒ์๋ ๊ธฐ๋ณธ ๋ชจ๋์ด ํ๋ ํ์ํ๋ค.
const readline = require('readline');
์์ ๊ฐ์ ๋ชจ๋์ ๋จผ์ ๋ถ๋ฌ์ค๊ณ ..
readline.cursorTo(process.stdout, posx,posy);
์ด ๋ฐฉ๋ฒ์ ์ ๋ ์์น๋ก ํ๋ฉด ์ผ์ชฝ์๋ฅผ 0,0 ์ผ๋ก ๊ธฐ์ค์ผ๋ก ํ์ฌ x ๊ฐ , y ๊ฐ์ผ๋ก ์ปค์๋ฅผ ์ด๋์ํค๋๊ฒ.
readline.moveCursor(process.stdout, posx,posy);
์ด ๋ฐฉ๋ฒ์ ํ์ฌ ์ปค์์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ ์ด๋์ํค๊ฒ ๋๋ค. posy ๋ ๋๋ค ์๋ต ๊ฐ๋ฅ.
๊ทธ๋ฆฌ๊ณ ์์ฝ๊ฒ๋, ํ์ฌ ์์น๋ฅผ ์ป์ด์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ค. ๋ฐ๋ผ์ ๊ณ์ฐํ๋ ์๋ฐ์ ์์.