인생의 게임
13269 단어 javascript
규칙
세포의 운명을 결정하는 네 가지 규칙이 있습니다.
구현을 위해 이러한 규칙을 더욱 단순화할 수 있습니다.
구현
be using p5.js to implement 이거, all the code can be found here .
첫 번째 단계는 그리드를 만들고 셀이 죽었는지 살아 있는지 무작위로 선택하는 것입니다.
let grid;
let columns;
let rows;
let size = 20;
function setup() {
createCanvas(800, 600);
columns = width / size;
rows = height / size;
grid = createGrid();
for (let i = 0; i < columns; i++) {
for (let j = 0; j < rows; j++) {
grid[i][j] = floor(random(2));
}
}
}
function draw() {
background(0);
for (let i = 0; i < columns; i++) {
for (let j = 0; j < rows; j++) {
let x = i * size;
let y = j * size;
if (grid[i][j] == 1) {
fill(0, 255, 255);
stroke(0, 255, 255);
rect(x, y, size, size);
}
}
}
}
그러면 다음과 같이 표시됩니다. 여기서 파란색은 살아있는 세포를 나타냅니다.
다음 단계는 다음 세대를 만드는 것입니다.
function createNewGeneration() {
let nextGeneration = createGrid();
for (let i = 0; i < columns; i++) {
for (let j = 0; j < rows; j++) {
let currentState = grid[i][j];
let count = countNeighbours(i, j);
if (currentState == 1 && count == 2 || count == 3) {
nextGeneration[i][j] = 1;
} else if (currentState == 0 && count == 3) {
nextGeneration[i][j] = 1;
} else {
nextGeneration[i][j] = 0;
}
}
}
return nextGeneration;
}
function countNeighbours(x, y) {
let sum = 0;
for (let i = -1; i <= 1; i++) {
for (let j = -1; j <= 1; j++) {
let col = (x + i + columns) % columns;
let row = (y + j + rows) % rows;
sum += grid[col][row];
}
}
sum -= grid[x][y];
return sum;
}
이제 그리기 기능에서 새로운 세대를 현재 그리드:
grid = createNewGeneration()
에 할당하기만 하면 됩니다.각 셀을 조금 더 작게 만들어 모집단 크기를 늘립니다:
let size = 5
결론
Game of Life는 놀라운 시뮬레이션입니다. 몇 가지 간단한 규칙과 구조가 어떻게 매우 복잡한 시스템을 형성할 수 있는지 보여줍니다. 특정 동작을 수행하는 Game of Lifethere's a whole lexicon of patterns에 대해 더 많은 정보를 얻을 수 있습니다.
Game of Life에서 더욱 놀라운 점은 그것이 Turing Complete 이라는 것입니다. 그것은 임의로 복잡한 계산을 할 수 있습니다. 즉, Game of Life의 시뮬레이션을 실행할 수 있는 Game of Life에 컴퓨터를 구축할 수 있습니다.
Reference
이 문제에 관하여(인생의 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lukegarrigan/the-game-of-life-28fm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)