thomas
This commit is contained in:
63
TP1/EX2/Ant.js
Normal file
63
TP1/EX2/Ant.js
Normal file
@@ -0,0 +1,63 @@
|
||||
class Ant {
|
||||
constructor(grid, startX, startY, transitionTable) {
|
||||
this.grid = grid;
|
||||
this.x = startX;
|
||||
this.y = startY;
|
||||
this.direction = 90; // 0: N, 90: E, 180: S, 270: W
|
||||
this.antState = 0;
|
||||
this.transitionTable = transitionTable;
|
||||
this.numAntStates = transitionTable.length;
|
||||
this.numTileStates = transitionTable[0].length;
|
||||
}
|
||||
|
||||
step() {
|
||||
const tileState = this.grid[this.y][this.x];
|
||||
const transition = this.transitionTable[this.antState][tileState];
|
||||
|
||||
const [antStateChange, directionChange, tileStateChange] = transition;
|
||||
|
||||
// Appliquer les changements
|
||||
this.antState = (this.antState + antStateChange) % this.numAntStates;
|
||||
this.direction = (this.direction + directionChange + 360) % 360;
|
||||
this.grid[this.y][this.x] = (tileState + tileStateChange) % this.numTileStates;
|
||||
|
||||
// Déplacer la fourmi
|
||||
switch (this.direction) {
|
||||
case 0: this.y--; break;
|
||||
case 90: this.x++; break;
|
||||
case 180: this.y++; break;
|
||||
case 270: this.x--; break;
|
||||
}
|
||||
|
||||
// Gérer les bords de la grille
|
||||
const gridSize = this.grid.length;
|
||||
this.x = (this.x + gridSize) % gridSize;
|
||||
this.y = (this.y + gridSize) % gridSize;
|
||||
}
|
||||
|
||||
reset() {
|
||||
const gridSize = this.grid.length;
|
||||
for (let y = 0; y < gridSize; y++) {
|
||||
for (let x = 0; x < gridSize; x++) {
|
||||
this.grid[y][x] = 0;
|
||||
}
|
||||
}
|
||||
this.x = Math.floor(gridSize / 2);
|
||||
this.y = Math.floor(gridSize / 2);
|
||||
this.direction = 90;
|
||||
this.antState = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Exemple d'utilisation dans app.js
|
||||
// const langtonTable = [
|
||||
// [[0, 90, 1], [0, -90, 0]]
|
||||
// ];
|
||||
// ant = new Ant(grid, Math.floor(gridSize / 2), Math.floor(gridSize / 2), langtonTable);
|
||||
|
||||
// Exemple de la table du TP
|
||||
const tpTable = [
|
||||
// Tuile 0 Tuile 1
|
||||
[[1, 0, 1], [0, 90, 1]], // Fourmi 0
|
||||
[[0, -90, 1], [1, 0, 1]] // Fourmi 1
|
||||
];
|
Reference in New Issue
Block a user