123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- //Bearbeitet von: David Papac
- import java.util.Arrays;
- public class Life implements ILife {
-
- String[] gameWorld;
-
- public static void main(String[] args) {
- Life l = new Life( new String[] { " ",
- " ",
- " *** ",
- " ",
- " "});
- l = (Life) l.nextGeneration();
-
- }
-
- public Life() {
- nukeAll();
-
- }
-
- public Life(String[] setup) {
- this();
- for (int y = 0; y < setup.length; y++)
- for (int x = 0; x < setup[y].length(); x++)
- if (setup[y].charAt(x) != ' ')
- setAlive(x, y);
-
- }
-
-
- @Override
- public void nukeAll() {
- // TODO Auto-generated method stub
- gameWorld = new String[]{" ",
- " ",
- " ",
- " ",
- " "};
-
- }
-
- @Override
- public void setAlive(int x, int y) {
- // TODO Auto-generated method stub
- String newString ="";
- for(int i=0; i< gameWorld[y].length(); i++){
- if(i==x)
- newString +='*';
- else
- newString += gameWorld[y].charAt(i);
-
- }
- gameWorld[y]=newString;
- }
-
- @Override
- public void setDead(int x, int y) {
- // TODO Auto-generated method stub
- String newString ="";
- for(int i=0; i< gameWorld[y].length(); i++){
- if(i==x)
- newString +=' ';
- else
- newString += gameWorld[y].charAt(i);
-
- }
- gameWorld[y]=newString;
- }
-
- @Override
- public boolean isAlive(int x, int y) {
- // TODO Auto-generated method stub
- if(gameWorld[y].charAt(x) =='*'){
- return true;}
- else{
- return false;
- }}
-
- @Override
- public ILife nextGeneration() {
- // TODO Auto-generated method stub
- Life newWorld = new Life();
- for(int y=0; y< gameWorld.length;y++){
- for(int x= 0; x <gameWorld[y].length(); x++){
- int neighbor = countNeighbor(x, y);
- if(isAlive(x,y)) {
- if (neighbor == 3 || neighbor == 2) {
- newWorld.setAlive(x, y);
- }
- if (neighbor < 2 || neighbor > 3) {
- newWorld.setDead(x, y);
- }
- }
- if(!isAlive(x,y)) {
- if (neighbor == 3) {
- newWorld.setAlive(x, y);
- } else {
- newWorld.setDead(x, y);
- }
- }
- }
- }
- newWorld.showBoard();
- return newWorld;
- }
-
- public int countNeighbor(int x, int y) {
- int counter=0;
- //counts top row
- if(y-1 >=0){
- for(int i =x-1; i<= x+1;i++){
- if(i>=0 && i< gameWorld[y-1].length()){
- if(isAlive(i,y-1)){
- counter++;
- }
- }
- }
- }
- //counts bottom row
- if(y+1 <gameWorld.length){
- for(int i =x-1; i<= x+1;i++){
- if(i>=0 && i< gameWorld[y+1].length()){
- if(isAlive(i,y+1)){
- counter++;
- }
- }
- }
- }
- //counts sides
- if(x-1>=0){
- if(isAlive(x-1,y)){
- counter++;
- }
- }
- if( x+1< gameWorld[y].length()){
- if(isAlive(x+1,y)){
- counter++;
- }
- }
- return counter;
- }
-
- public void showBoard() {
- for (int i = 0; i < gameWorld.length; i++)
- System.out.println(Arrays.toString(new String[]{gameWorld[i]}));
- }
- }
|