class Ant { constructor(grid, startX, startY) { this.grid = grid; this.x = startX; this.y = startY; this.direction = 0; // 0: N, 90: E, 180: S, 270: W this.colors = { white: 0, black: 1 }; } // Effectue un pas de la fourmi step() { const currentColor = this.grid[this.y][this.x]; if (currentColor === this.colors.white) { // Case blanche : la repeindre en noir et tourner à droite this.grid[this.y][this.x] = this.colors.black; this.direction = (this.direction + 90) % 360; } else { // Case noire : la repeindre en blanc et tourner à gauche this.grid[this.y][this.x] = this.colors.white; this.direction = (this.direction - 90 + 360) % 360; } // Déplacer la fourmi d'une case dans sa nouvelle direction switch (this.direction) { case 0: this.y--; break; // Nord case 90: this.x++; break; // Est case 180: this.y++; break; // Sud case 270: this.x--; break; // Ouest } // Gérer les bords de la grille (déplacement cyclique) const gridSize = this.grid.length; this.x = (this.x + gridSize) % gridSize; this.y = (this.y + gridSize) % gridSize; } // Réinitialise la fourmi et la grille reset() { const gridSize = this.grid.length; for (let y = 0; y < gridSize; y++) { for (let x = 0; x < gridSize; x++) { this.grid[y][x] = this.colors.white; } } this.x = Math.floor(gridSize / 2); this.y = Math.floor(gridSize / 2); this.direction = 90; // Réinitialise la direction vers l'est } }