Kaynağa Gözat

LifeWithoutDeath implementation and test

master
Josh Hofing 12 yıl önce
ebeveyn
işleme
02021b38b7
2 değiştirilmiş dosya ile 34 ekleme ve 7 silme
  1. +7
    -7
      src/Goldfish.java
  2. +27
    -0
      src/rules/LifeWithoutDeath.java

+ 7
- 7
src/Goldfish.java Dosyayı Görüntüle

@@ -15,15 +15,15 @@ public class Goldfish {

public void run () {
//TODO: make it run.
_grid.getPatch(1,0).setState(2);
_grid.getPatch(2,1).setState(2);
_grid.getPatch(2,2).setState(2);
_grid.getPatch(1,2).setState(2);
_grid.getPatch(0,2).setState(2);
_grid.getPatch(1,0).setState(1);
_grid.getPatch(2,1).setState(1);
_grid.getPatch(2,2).setState(1);
_grid.getPatch(1,2).setState(1);
_grid.getPatch(0,2).setState(1);
System.out.println(_grid);

for (int i = 0; i < 6; i++) {
_grid = BriansBrain.run(_grid);
for (int i = 0; i < 10; i++) {
_grid = LifeWithoutDeath.run(_grid);
System.out.println("------------");
System.out.println(_grid);
}


+ 27
- 0
src/rules/LifeWithoutDeath.java Dosyayı Görüntüle

@@ -0,0 +1,27 @@
package edu.stuy.goldfish.rules;

import edu.stuy.goldfish.Grid;
import edu.stuy.goldfish.Patch;

// Conway, without dying cells
public class LifeWithoutDeath extends RuleSet {
public static int states = 2;

public static Grid run (Grid g) {
Grid newGrid = new Grid(g.getWidth(), g.getHeight());
for (int i = 0; i < g.getWidth(); i++) {
for (int j = 0; j < g.getHeight(); j++) {
Patch[] neighbors = g.getPatch(i, j).get8Neighbors();
int numAlive = 0;
for (Patch neighbor : neighbors)
if (neighbor.getState() == 1) numAlive++;
Patch p = g.getPatch(i,j).clone(newGrid);
if (numAlive == 3)
p.setState(1); //Born with 3 neighbors.
newGrid.setPatch(i,j,p);
}
}

return newGrid;
}
}

Yükleniyor…
İptal
Kaydet