mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
Store chess board as objects instead of arrays
This commit is contained in:
parent
a2fa4ec53b
commit
87b2a2d5c9
@ -9,7 +9,7 @@ class ChessBoardSquare extends React.Component {
|
||||
}
|
||||
|
||||
selectSquare() {
|
||||
console.log(`Clicked: ${this.props.rank}, ${this.props.file}`);
|
||||
console.log(`Clicked: ${this.props.file}${this.props.rank}`);
|
||||
};
|
||||
|
||||
render() {
|
||||
|
||||
@ -12,13 +12,11 @@ class ChessBoard extends React.Component {
|
||||
return store.getState().board;
|
||||
}
|
||||
|
||||
chessBoardRow(row, i) {
|
||||
chessBoardRow(row, rank) {
|
||||
return (
|
||||
<div className="board-rank" key={i}>
|
||||
{row.map(
|
||||
(square, j) => (
|
||||
<ChessBoardSquare key={j} rank={i} file={j} square={square} />
|
||||
)
|
||||
<div className="board-rank" key={rank}>
|
||||
{Object.keys(row).map(
|
||||
(file) => <ChessBoardSquare key={file} rank={rank} file={file} square={row[file]} />
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
@ -27,7 +25,9 @@ class ChessBoard extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<div className="board">
|
||||
{this.chessBoardRows().map((row, i) => this.chessBoardRow(row, i))}
|
||||
{Object.keys(this.chessBoardRows()).reverse().map(
|
||||
(rank) => this.chessBoardRow(this.chessBoardRows()[rank], rank)
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@ -8,6 +8,12 @@ const chessBoardReducer = (state = defaultState, action) => {
|
||||
state.board[from.rank][from.file] = null;
|
||||
return state;
|
||||
|
||||
var newBoard = state.board.map((item, index) => {
|
||||
});
|
||||
return Object.assign({}, state, {
|
||||
board: newBoard
|
||||
});
|
||||
|
||||
case "SELECT_PIECE":
|
||||
return Object.assign({}, state, { selectedSquare: action.coords });
|
||||
|
||||
|
||||
@ -1,52 +1,52 @@
|
||||
const defaultState = {
|
||||
selectedSquare: null,
|
||||
|
||||
board: [
|
||||
[
|
||||
{ type: "rook", colour: "black" },
|
||||
{ type: "knight", colour: "black" },
|
||||
{ type: "bishop", colour: "black" },
|
||||
{ type: "queen", colour: "black" },
|
||||
{ type: "king", colour: "black" },
|
||||
{ type: "bishop", colour: "black" },
|
||||
{ type: "knight", colour: "black" },
|
||||
{ type: "rook", colour: "black" },
|
||||
],
|
||||
[
|
||||
{ type: "pawn", colour: "black" },
|
||||
{ type: "pawn", colour: "black" },
|
||||
{ type: "pawn", colour: "black" },
|
||||
{ type: "pawn", colour: "black" },
|
||||
{ type: "pawn", colour: "black" },
|
||||
{ type: "pawn", colour: "black" },
|
||||
{ type: "pawn", colour: "black" },
|
||||
{ type: "pawn", colour: "black" },
|
||||
],
|
||||
[null, null, null, null, null, null, null, null],
|
||||
[null, null, null, null, null, null, null, null],
|
||||
[null, null, null, null, null, null, null, null],
|
||||
[null, null, null, null, null, null, null, null],
|
||||
[
|
||||
{ type: "pawn", colour: "white" },
|
||||
{ type: "pawn", colour: "white" },
|
||||
{ type: "pawn", colour: "white" },
|
||||
{ type: "pawn", colour: "white" },
|
||||
{ type: "pawn", colour: "white" },
|
||||
{ type: "pawn", colour: "white" },
|
||||
{ type: "pawn", colour: "white" },
|
||||
{ type: "pawn", colour: "white" },
|
||||
],
|
||||
[
|
||||
{ type: "rook", colour: "white" },
|
||||
{ type: "knight", colour: "white" },
|
||||
{ type: "bishop", colour: "white" },
|
||||
{ type: "queen", colour: "white" },
|
||||
{ type: "king", colour: "white" },
|
||||
{ type: "bishop", colour: "white" },
|
||||
{ type: "knight", colour: "white" },
|
||||
{ type: "rook", colour: "white" },
|
||||
],
|
||||
],
|
||||
board: {
|
||||
8: {
|
||||
a: { type: "rook", colour: "black" },
|
||||
b: { type: "knight", colour: "black" },
|
||||
c: { type: "bishop", colour: "black" },
|
||||
d: { type: "queen", colour: "black" },
|
||||
e: { type: "king", colour: "black" },
|
||||
f: { type: "bishop", colour: "black" },
|
||||
g: { type: "knight", colour: "black" },
|
||||
h: { type: "rook", colour: "black" }
|
||||
},
|
||||
7: {
|
||||
a: { type: "pawn", colour: "black" },
|
||||
b: { type: "pawn", colour: "black" },
|
||||
c: { type: "pawn", colour: "black" },
|
||||
d: { type: "pawn", colour: "black" },
|
||||
e: { type: "pawn", colour: "black" },
|
||||
f: { type: "pawn", colour: "black" },
|
||||
g: { type: "pawn", colour: "black" },
|
||||
h: { type: "pawn", colour: "black" }
|
||||
},
|
||||
6: { a: null, b: null, c: null, d: null, e: null, f: null, g: null, h: null },
|
||||
5: { a: null, b: null, c: null, d: null, e: null, f: null, g: null, h: null },
|
||||
4: { a: null, b: null, c: null, d: null, e: null, f: null, g: null, h: null },
|
||||
3: { a: null, b: null, c: null, d: null, e: null, f: null, g: null, h: null },
|
||||
2: {
|
||||
a: { type: "pawn", colour: "white" },
|
||||
b: { type: "pawn", colour: "white" },
|
||||
c: { type: "pawn", colour: "white" },
|
||||
d: { type: "pawn", colour: "white" },
|
||||
e: { type: "pawn", colour: "white" },
|
||||
f: { type: "pawn", colour: "white" },
|
||||
g: { type: "pawn", colour: "white" },
|
||||
h: { type: "pawn", colour: "white" }
|
||||
},
|
||||
1: {
|
||||
a: { type: "rook", colour: "white" },
|
||||
b: { type: "knight", colour: "white" },
|
||||
c: { type: "bishop", colour: "white" },
|
||||
d: { type: "queen", colour: "white" },
|
||||
e: { type: "king", colour: "white" },
|
||||
f: { type: "bishop", colour: "white" },
|
||||
g: { type: "knight", colour: "white" },
|
||||
h: { type: "rook", colour: "white" }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export default defaultState;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user