2013-07-03 5 views
-1

Я ударил стену в своей новейшей лаборатории для школы. Мы перерабатываем игру жизни Конвей с использованием массивов, и они хотят, чтобы мы сделали один массив в качестве оригинала и сделали изменения в другом массиве.Использование массивов в игре жизни Конвея

, где я застрял в соседней логике! im не совсем уверен в синтаксисе или реализации на самом деле, чтобы проверить, жив или нет сосед или следующий индекс в массиве.

вот мой исходный код до сих пор (приходилось копировать и вставлять из-за низкой репутации)

import java.util.Arrays; 

public class life { 
    public static void main(String[] args) { 
     Game(); 
    } 

    public static void Game() { 
     char [][] board; //original board 
     board = new char[5][5]; 

     char [][] boardCopy; 
     board = new char [5][6]; // board to use as a replacement. 

     for (int i = 0; i < 5; i++) { //loops that makes the original board. 
      for (int j = 0 ; j < 5; j++) { 
       int x = (int)(Math.random() * 11); 
       if (x <= 5) { board[i][j] = 'X'; } 
       if(x > 5) { board[i][j] = '.'; } 
      } 
     } 

     printTable(board); 
    } 

    public static void printTable(char[][] x){ 
     //prints the arrays in a table. 
     for(int i = 0; i < 5; i++) System.out.println(Arrays.toString(x[i])); 
    } 
} 
+0

Вы никогда не используете 'boardCopy' после его определения. Это может быть хорошим местом для начала. После этого подумайте о том, какие индексы массива будут составлять соседа в игре Конвей, выложив свою доску на сетчатую бумагу. – cjc343

ответ

2

Лучший способ понять эту проблему, чтобы взять элемент выборки из вашего массива, давайте назовем его

board[i][j] 

Так я бы себе это выглядит следующим образом:

Любой случайный элемент в середине массива (не по краям или углам) имеет 8 соседей, либо в живых или мертвых. Просто изобразите квадрат, окруженный квадратами равного размера. У него есть сосед слева, справа, сверху, снизу, сверху-слева, справа вверху, внизу слева и внизу справа.

Ваша задача - просто пройти через эти 8 элементов и проверить их статус (метод isAlive() был бы логичным).

Как вы представляете каждый элемент кода? Будет рассматривать сосед справа. Он находится в том же «ряду», что и ваш массив (мы его назвали i), но он один «столбец» справа (j + 1). Таким образом, он будет представлен в виде

board[i][j + 1] 

Точно так же, сосед слева будет

board[i][j - 1] 

Имеет ли это смысл?

Затем, чтобы завершить проект, вам просто нужно убедиться, что элемент, чьи соседи вы проверяете, не находится на краях, и если это так: убедитесь, что вы не проверяли границы вашего массива, Получаете исключение ArrayIndexOutOfBoundsException.

Смежные вопросы