Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Noah Kissinger
- //162.01 Elzer
- //Due 2012.02.06
- import java.util.*;
- public class Update {
- public final static int ITERATIONS = 5;
- public static void main(String[] args) {
- System.out.println("This program will simulate the game of Life.");
- Scanner console = new Scanner(System.in);
- System.out.println("Please input the size of your board.");
- System.out.println("Rows:");
- final int rows = console.nextInt();
- System.out.println("Columns:");
- final int columns = console.nextInt();
- System.out.println("Please enter a seed:");
- final long seed = console.nextLong();
- int[] birthLive = new int[4];
- boolean[][] board = new boolean[rows][columns];
- createMatrix(board, seed);
- birthAndLive(birthLive);
- for (int i = 0; i < ITERATIONS; i++) {
- printMatrix(board);
- updateMatrix(board, birthLive);
- }
- }
- public static void createMatrix(boolean[][] board, long seed) {
- Random seedBool = new Random(seed);
- for (int i = 0; i < board.length; i++) {
- for (int j = 0; j < board[i].length; j++) {
- board[i][j] = false;
- }
- }
- for (int i = 1; i < board.length - 1; i++) {
- for (int j = 1; j < board[i].length - 1; j++) {
- board[i][j] = seedBool.nextBoolean();
- }
- }
- }
- public static void birthAndLive(int[] birthLive) {
- Scanner console = new Scanner(System.in);
- System.out.println("Please input the birth range and the live range:");
- System.out.println("Birth (Low):");
- birthLive[0] = console.nextInt();
- System.out.println("Birth (High):");
- birthLive[1] = console.nextInt();
- System.out.println("Live (Low):");
- birthLive[2] = console.nextInt();
- System.out.println("Live (High):");
- birthLive[3] = console.nextInt();
- }
- public static void printMatrix(boolean[][] board) {
- for (int i = 0; i < board.length; i++) {
- for (int j = 0; j < board[i].length; j++) {
- if (board[i][j] == false)
- System.out.print(" - ");
- else
- System.out.print(" # ");
- }
- System.out.println();
- }
- System.out.println();
- }
- public static void updateMatrix(boolean[][] board, int[] birthLive) {
- //clone the board so modified values don't affect the results of upcoming spaces
- boolean[][] boardCopy = board.clone();
- for (int i = 0; i < board.length; i++)
- boardCopy[i] = board[i].clone();
- int count = 0;
- for (int i = 1; i < board.length - 1; i++) {
- for (int j = 1; j < board[i].length - 1; j++) {
- //different requirements for dead or living pieces' living status
- if (board[i][j] == false) {
- //check the nine-by-nine square, starting at (-1, 1) and ending at (1, -1) where 0 is the affected location
- // * * *
- // * 0 *
- // * * *
- for (int ii = boardCopy[i - 1].length; ii < boardCopy[i + 1].length; ii++) {
- for (int jj = boardCopy[j - 1].length; jj < boardCopy[j + 1].length; jj++) {
- if (boardCopy[i][j] == true)
- count++;
- }
- }
- //check to see what high and low amt of required adjacent lifeforms is
- if (count >= birthLive[0] && count <= birthLive[1])
- board[i][j] = true;
- else
- board[i][j] = false;
- count = 0;
- }
- else {
- for (int ii = boardCopy[i - 1].length; ii < boardCopy[i + 1].length; ii++) {
- for (int jj = boardCopy[j - 1].length; jj < boardCopy[j + 1].length; jj++) {
- if (boardCopy[i][j] == true)
- count++;
- }
- }
- count -= 1; //For boardCopy[i][j] is always true
- if (count >= birthLive[2] && count <= birthLive[3])
- board[i][j] = true;
- else
- board[i][j] = false;
- count = 0;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement