|
@@ -0,0 +1,92 @@
|
|
|
+import { useState } from 'react'
|
|
|
+import './Checkerboard.css'
|
|
|
+import tableData from './CheckerboardData'
|
|
|
+const bgline = [
|
|
|
+ ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14"],
|
|
|
+ ["x", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"],
|
|
|
+];
|
|
|
+const Checkerboard = function () {
|
|
|
+ const [table, updateTable] = useState(tableData)
|
|
|
+ const [userFlag, setUserFlag] = useState(0)
|
|
|
+ const goBangTouchEvent = function (x, y, value) {
|
|
|
+ if (value === 0) {
|
|
|
+ table[x][y] = userFlag
|
|
|
+ updateTable({ ...table })
|
|
|
+ switch (userFlag) {
|
|
|
+ case 1: setUserFlag(2); break;
|
|
|
+ case 2: setUserFlag(1); break;
|
|
|
+ default: setUserFlag(0)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log("此处已经落子了")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return (
|
|
|
+ <div className='center'>
|
|
|
+ <div className='checkerboard'>
|
|
|
+ <div className='board' >
|
|
|
+ {Object.keys(table).map((x) => {
|
|
|
+ return (
|
|
|
+ <div key={x} className='board-grid'>
|
|
|
+ {table[x].map((value, y) => {
|
|
|
+ return (
|
|
|
+ <div
|
|
|
+ onClick={() => {
|
|
|
+ goBangTouchEvent(x, y, value)
|
|
|
+ }}
|
|
|
+ onTouchEnd={()=>{
|
|
|
+ goBangTouchEvent(x, y, value)
|
|
|
+ }}
|
|
|
+ className={(() => {
|
|
|
+ switch (value) {
|
|
|
+ case 0: return 'board-item'
|
|
|
+ case 1: return 'black board-item'
|
|
|
+ case 2: return 'white board-item'
|
|
|
+ default: return 'board-item'
|
|
|
+ }
|
|
|
+ })()}
|
|
|
+ key={y}
|
|
|
+ //style={{border:'1px solid red'}}
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ <div className='bj' >
|
|
|
+ {(() => {
|
|
|
+ const ret = bgline[0].map((x) => {
|
|
|
+ return (
|
|
|
+ <div key={x} className='bj-grid'>
|
|
|
+ {
|
|
|
+ bgline[1].map((y) => {
|
|
|
+ return (
|
|
|
+ <div key={y} className={(() => {
|
|
|
+ let ret = 'bj-item'
|
|
|
+ if (x === '14') {
|
|
|
+ ret += ' bj-bottom'
|
|
|
+ }
|
|
|
+ if (y === 'n') {
|
|
|
+ ret += ' bj-right'
|
|
|
+ }
|
|
|
+ return ret
|
|
|
+ })()}>
|
|
|
+ {x === '0' && y !== 'x' ? <span className='xline'>{y}</span> : ''}
|
|
|
+ {y === 'x' && x !== '0' ? <span className='yline'>{x}</span> : ''}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })
|
|
|
+ return ret
|
|
|
+ })()}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+}
|
|
|
+export default Checkerboard
|