in src/gemini_95/index.ts [1216:1252]
function createGrid() {
boardElement.innerHTML = ''; // Clear previous grid
grid = []; // Reset internal grid state
boardElement.style.gridTemplateColumns = `repeat(${minesweeperGridSize.cols}, 20px)`;
boardElement.style.gridTemplateRows = `repeat(${minesweeperGridSize.rows}, 20px)`;
for (let r = 0; r < minesweeperGridSize.rows; r++) {
const row: MinesweeperCell[] = [];
for (let c = 0; c < minesweeperGridSize.cols; c++) {
const cellElement = document.createElement('div');
cellElement.classList.add('minesweeper-cell');
const cellData: MinesweeperCell = {
isMine: false,
isRevealed: false,
isFlagged: false,
adjacentMines: 0,
element: cellElement,
row: r,
col: c,
};
cellElement.addEventListener('click', () => handleCellClick(cellData));
cellElement.addEventListener('contextmenu', (e) => {
e.preventDefault();
handleCellRightClick(cellData);
});
row.push(cellData);
boardElement.appendChild(cellElement);
}
grid.push(row);
}
console.log(`Grid created (${minesweeperGridSize.rows}x${minesweeperGridSize.cols})`);
// Mines will be placed on the first click
}