2048-cli-game
Version:
2048 game for terminal.
180 lines (179 loc) • 6.2 kB
JavaScript
import { Text } from 'ink';
import React from 'react';
import { countDigits } from '../../utils.js';
const NumsBoard = props => {
const { nums } = props;
const handleShowNum = (num) => {
if (!num) {
return ' ';
}
if (countDigits(num) === 1) {
return ` ${num} `;
}
if (countDigits(num) === 2) {
return ` ${num} `;
}
if (countDigits(num) === 3) {
return ` ${num} `;
}
if (countDigits(num) === 4) {
return ` ${num}`;
}
return ' ';
};
return (React.createElement(Text, null,
React.createElement(Text, null,
"\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510",
'\n'),
React.createElement(Text, null,
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
handleShowNum(nums[0][0]),
" \u2502 ",
handleShowNum(nums[0][1]),
" \u2502",
` `,
handleShowNum(nums[0][2]),
" \u2502 ",
handleShowNum(nums[0][3]),
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n')),
React.createElement(Text, null,
"\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524",
'\n'),
React.createElement(Text, null,
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
handleShowNum(nums[1][0]),
" \u2502 ",
handleShowNum(nums[1][1]),
" \u2502",
' ',
handleShowNum(nums[1][2]),
" \u2502 ",
handleShowNum(nums[1][3]),
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n')),
React.createElement(Text, null,
"\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524",
'\n'),
React.createElement(Text, null,
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
handleShowNum(nums[2][0]),
" \u2502 ",
handleShowNum(nums[2][1]),
" \u2502",
' ',
handleShowNum(nums[2][2]),
" \u2502 ",
handleShowNum(nums[2][3]),
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n')),
React.createElement(Text, null,
"\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524",
'\n'),
React.createElement(Text, null,
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
handleShowNum(nums[3][0]),
" \u2502 ",
handleShowNum(nums[3][1]),
" \u2502",
' ',
handleShowNum(nums[3][2]),
" \u2502 ",
handleShowNum(nums[3][3]),
" \u2502",
'\n'),
React.createElement(Text, null,
"\u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502 ",
` `,
" \u2502",
'\n')),
React.createElement(Text, null, "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518")));
};
export default NumsBoard;