Help with conways game of life java program. this is the code i have so far. imp
ID: 3570163 • Letter: H
Question
Help with conways game of life java program. this is the code i have so far.
import java.io.*;
import java.util.Scanner;
public class GameOfLife
{
private char[][] board;
private int columns;
private int rows;
private int generation;
public static void main(String[] args) throws FileNotFoundException
{
GameOfLife game = new GameOfLife();
Scanner kb = new Scanner(System.in);
System.out.print("Enter how many generations to compute: ");
int gen = kb.nextInt();
System.out.println("Generation 1 ");
game.print();
for(int i = 2; i <= gen; i++)
{
System.out.println();
System.out.println("Generation " + i);
System.out.println();
game.computeNextGeneration(gen);
game.printNew();
}
}
public GameOfLife() throws FileNotFoundException
{
Scanner kb = new Scanner(System.in);
System.out.print("Enter file name: ");
String filename = kb.nextLine();
File file = new File(filename);
Scanner inputFile = new Scanner(file);
int columns = inputFile.nextInt();
int rows = inputFile.nextInt();
inputFile.nextLine();
board = new char[rows][columns];
for(int i = 0; i < rows; i++)
{
String line = inputFile.nextLine();
for(int j = 0; j < columns; j++)
{
board[i][j] = line.charAt(j);
}
}
}
public int getColumns()
{
return columns;
}
public int getRows()
{
return rows;
}
public int getCell(int rows, int columns)
{
if(board[rows][columns] == 'X' || board[rows][columns] == '0')
{
return board[rows][columns];
}
else
{
return 0;
}
}
public void setCell(int rows, int columns, int value)
{
for(int i = 0; i < board.length; i++)
{
for(int j = 0; j < board[0].length; j++)
{
value = board[rows][columns];
}
}
}
public int numOfNeighbors(int rows, int columns)
{
int count = 0;
int i = rows;
int j = columns;
int left;
int right;
int up;
int down;
if(i > 0)
{
up = i-1;
}
else
{
up = board.length-1;
}
if(i < (board.length-1))
{
down = i+1;
}
else
{
down = 0;
}
if(j > 0)
{
left = j-1;
}
else
{
left = board[i].length-1;
}
if (j < (board[i].length-1))
{
right = j+1;
}
else
{
right = 0;
}
if(board[up][left] == '0')
{
count++;
}
if(board[up][j] == '0')
{
count++;
}
if(board[up][right] == '0')
{
count++;
}
if(board[i][left] == '0')
{
count++;
}
if(board[i][right] == '0')
{
count++;
}
if(board[down][left] == '0')
{
count++;
}
if(board[down][j] == '0')
{
count++;
}
if(board[down][right] == '0')
{
count++;
}
return count;
}
public void computeNextGeneration(int generation)
{
char[][] boardTwo = new char[board.length][board[0].length];
for(int i = 0; i < board.length; i++)
{
for(int j = 0; j < board[0].length; j++)
{
if(board[i][j] == '0' && numOfNeighbors(i,j) == 3)
{
boardTwo[i][j] = 'X';
}
else if(board[i][j] == 'X' && numOfNeighbors(i,j) < 2)
{
boardTwo[i][j] = '0';
}
else if(board[i][j] == 'X' && numOfNeighbors(i,j) >3)
{
boardTwo[i][j] = '0';
}
else if(board[i][j] == 'X' && numOfNeighbors(i,j) == 2 || numOfNeighbors(i,j) == 3)
{
boardTwo[i][j] = 'X';
}
else
{
boardTwo[i][j] += board[i][j];
}
}
}
for (int i = 0; i < boardTwo.length; i++)
{
for(int j = 0; j < boardTwo[0].length; j++)
{
System.out.print(boardTwo[i][j]);
}
System.out.println();
}
board = boardTwo;
}
public void print()
{
for(int i = rows; i < board.length; i++)
{
for(int j = columns; j < board[i].length; j++)
{
System.out.print( board[i][j] );
}
System.out.println();
}
}
public void printNew()
{
}
}
the question i have is when i run the program it gives me an output like this:
Generation 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 X 0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 X X X 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 0 X 0 0
0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 X X X 0 0 0 0 0 X 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Generation 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0X0X0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0X0X0 0 0 0 0 0 0 X X X 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0X0X0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0X0X0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0X0X0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Generation 3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 00000 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 X X X 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0
0 0 0 0 0 0 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
and its supposed to look like this:
Generation 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 X X X 0 0 0
0 0 X 0 0 0 0 X 0 0
0 0 X 0 0 0 0 X 0 0
0 0 X 0 0 0 0 X 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 X X X 0 0 0
0 0 0 0 0 0 0 0 0 0
Generation 2
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 X 0 0 0 0
0 0 0 0 0 X X 0 0 0
0 0 0 X 0 X 0 X 0 0
0 X X X 0 0 X X X 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 X X 0 0 0
0 0 0 0 0 X 0 0 0 0
0 0 0 0 0 X 0 0 0 0
Generation 3
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 X X 0 0 0
0 0 0 0 0 X 0 0 0 0
0 0 0 X 0 X 0 0 X 0
0 0 X X X 0 X X X 0
0 0 X 0 0 X 0 0 0 0
0 0 0 0 0 X X 0 0 0
0 0 0 0 X X 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Generation 4
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 X X 0 0 0
0 0 0 0 0 X 0 0 0 0
0 0 X X 0 X 0 0 X 0
0 0 X 0 0 0 X X X 0
0 0 X 0 0 0 0 0 0 0
0 0 0 0 0 0 X 0 0 0
0 0 0 0 X X X 0 0 0
0 0 0 0 0 0 0 0 0 0
how do i fix the problem?
Explanation / Answer
import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; import java.awt.event.MouseListener; import java.util.Hashtable; public class SwingLife extends JApplet { LifePanel lifePanel; public void init() { Container contentPane = getContentPane(); lifePanel = new LifePanel(); contentPane.add(lifePanel); lifePanel.startAnimation(); } public String getAppletInfo() { return "Title: Swing Game of Life Applet v1.0b, 20 Oct 2000. " + "Author: Brett Alistair Kromkamp. " + "Copyright (C) 2000 - Brett Alistair Kromkamp. " + "A simple Swing applet demonstrating Conway's Game of Life."; } public String[][] getParameterInfo() { String [][] info = {{"NONE", "NONE", "This applet takes no HTML-parameters"}}; return info; } } class LifeGridComponent extends JComponent { final static int XSIZE = 362; // class constants final static int YSIZE = 162; private Dimension preferredSize = new Dimension(XSIZE, YSIZE); private Cursor cursor; private int row; private int col; private int size; private LifePanel lp; public LifeGridComponent(LifePanel newPanel, int newRow, int newCol, int newSize) { setPreferredSize(preferredSize); setMinimumSize(preferredSize); setCursor(cursor.getPredefinedCursor(cursor.CROSSHAIR_CURSOR)); this.row = newRow; this.col = newCol; this.size = newSize; this.lp = newPanel; } public void paint(Graphics g) { int i, j; for (i = 0; iRelated Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.