Raven7 commited on
Commit
066a426
·
verified ·
1 Parent(s): 4b1124a

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +30 -15
index.html CHANGED
@@ -78,7 +78,7 @@
78
  .square.valid-move::after {
79
  content: '•';
80
  position: absolute;
81
- color: rgba(0,0,0,0.3);
82
  font-size: 2em;
83
  }
84
 
@@ -125,7 +125,6 @@
125
  <div class="status-panel">
126
  <h3>Position Analysis</h3>
127
  <p id="status">White to move</p>
128
- <p id="evaluation">Evaluation: 0.0</p>
129
  </div>
130
  <button onclick="resetBoard()">Reset Board</button>
131
  </div>
@@ -137,6 +136,7 @@
137
  this.board = this.createInitialBoard();
138
  this.currentPlayer = 'white';
139
  this.selectedPiece = null;
 
140
  this.initializeBoard();
141
  }
142
 
@@ -163,6 +163,7 @@
163
  square.dataset.row = row;
164
  square.dataset.col = col;
165
  square.onclick = (e) => this.handleSquareClick(e);
 
166
  if (this.board[row][col]) {
167
  const piece = document.createElement('div');
168
  piece.className = 'piece';
@@ -172,6 +173,7 @@
172
  boardElement.appendChild(square);
173
  }
174
  }
 
175
  }
176
 
177
  handleSquareClick(event) {
@@ -190,24 +192,37 @@
190
  }
191
 
192
  selectPiece(row, col) {
193
- document.querySelectorAll('.square').forEach(sq => sq.classList.remove('selected', 'valid-move', 'attack-move'));
194
- document.querySelector(`[data-row="${row}"][data-col="${col}"]`).classList.add('selected');
195
  this.selectedPiece = { row, col };
 
 
 
196
  }
197
 
198
- tryMove(toRow, toCol) {
199
- const fromRow = this.selectedPiece.row;
200
- const fromCol = this.selectedPiece.col;
201
- this.makeMove(fromRow, fromCol, toRow, toCol);
202
- this.selectedPiece = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  }
204
 
205
- makeMove(fromRow, fromCol, toRow, toCol) {
206
- this.board[toRow][toCol] = this.board[fromRow][fromCol];
207
- this.board[fromRow][fromCol] = null;
208
- this.currentPlayer = this.currentPlayer === 'white' ? 'black' : 'white';
209
- document.getElementById('status').textContent = `${this.currentPlayer} to move`;
210
- this.initializeBoard();
211
  }
212
  }
213
 
 
78
  .square.valid-move::after {
79
  content: '•';
80
  position: absolute;
81
+ color: var(--move-highlight);
82
  font-size: 2em;
83
  }
84
 
 
125
  <div class="status-panel">
126
  <h3>Position Analysis</h3>
127
  <p id="status">White to move</p>
 
128
  </div>
129
  <button onclick="resetBoard()">Reset Board</button>
130
  </div>
 
136
  this.board = this.createInitialBoard();
137
  this.currentPlayer = 'white';
138
  this.selectedPiece = null;
139
+ this.validMoves = [];
140
  this.initializeBoard();
141
  }
142
 
 
163
  square.dataset.row = row;
164
  square.dataset.col = col;
165
  square.onclick = (e) => this.handleSquareClick(e);
166
+
167
  if (this.board[row][col]) {
168
  const piece = document.createElement('div');
169
  piece.className = 'piece';
 
173
  boardElement.appendChild(square);
174
  }
175
  }
176
+ this.highlightValidMoves();
177
  }
178
 
179
  handleSquareClick(event) {
 
192
  }
193
 
194
  selectPiece(row, col) {
 
 
195
  this.selectedPiece = { row, col };
196
+ this.validMoves = this.getValidMoves(row, col);
197
+ this.initializeBoard();
198
+ document.querySelector(`[data-row="${row}"][data-col="${col}"]`).classList.add('selected');
199
  }
200
 
201
+ getValidMoves(row, col) {
202
+ const piece = this.board[row][col];
203
+ const moves = [];
204
+ const directions = {
205
+ '♖': [[-1,0], [1,0], [0,-1], [0,1]],
206
+ '♗': [[-1,-1], [-1,1], [1,-1], [1,1]],
207
+ '♕': [[-1,0], [1,0], [0,-1], [0,1], [-1,-1], [-1,1], [1,-1], [1,1]]
208
+ };
209
+
210
+ if (piece in directions) {
211
+ for (const [dx, dy] of directions[piece]) {
212
+ let r = row + dx, c = col + dy;
213
+ while (r >= 0 && r < 8 && c >= 0 && c < 8 && !this.board[r][c]) {
214
+ moves.push([r, c]);
215
+ r += dx; c += dy;
216
+ }
217
+ }
218
+ }
219
+ return moves;
220
  }
221
 
222
+ highlightValidMoves() {
223
+ for (const [row, col] of this.validMoves) {
224
+ document.querySelector(`[data-row="${row}"][data-col="${col}"]`).classList.add('valid-move');
225
+ }
 
 
226
  }
227
  }
228