From 0a1a0bf8fc6614afddc94f56d8198cdf185a3959 Mon Sep 17 00:00:00 2001 From: Noah Date: Tue, 28 Sep 2021 12:35:46 +0200 Subject: [PATCH] ControlGUI.java finished --- .idea/misc.xml | 2 +- src/data/control.gif | Bin 0 -> 44809 bytes src/data/icon.png | Bin 0 -> 18344 bytes src/gui/StartGUI.java | 259 +++++++++++++++++++++++++++++++++++++ src/main/Main.java | 16 +++ src/v3/Control.java | 113 ---------------- src/v3/GUI.java | 109 ---------------- src/v3/Main.java | 10 -- src/v4/draw/Draw.java | 38 ------ src/v4/game/Clock.java | 21 --- src/v4/game/Control.java | 73 ----------- src/v4/gui/GUI.java | 31 ----- src/v4/main/Main.java | 20 --- src/v5/draw/Draw.java | 45 ------- src/v5/game/Clock.java | 27 ---- src/v5/game/Control.java | 109 ---------------- src/v5/gui/ControlGUI.java | 67 ---------- src/v5/gui/GUI.java | 37 ------ src/v5/main/Main.java | 26 ---- 19 files changed, 276 insertions(+), 727 deletions(-) create mode 100644 src/data/control.gif create mode 100644 src/data/icon.png create mode 100644 src/gui/StartGUI.java create mode 100644 src/main/Main.java delete mode 100644 src/v3/Control.java delete mode 100644 src/v3/GUI.java delete mode 100644 src/v3/Main.java delete mode 100644 src/v4/draw/Draw.java delete mode 100644 src/v4/game/Clock.java delete mode 100644 src/v4/game/Control.java delete mode 100644 src/v4/gui/GUI.java delete mode 100644 src/v4/main/Main.java delete mode 100644 src/v5/draw/Draw.java delete mode 100644 src/v5/game/Clock.java delete mode 100644 src/v5/game/Control.java delete mode 100644 src/v5/gui/ControlGUI.java delete mode 100644 src/v5/gui/GUI.java delete mode 100644 src/v5/main/Main.java diff --git a/.idea/misc.xml b/.idea/misc.xml index c3dfb30..6bc01a8 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/src/data/control.gif b/src/data/control.gif new file mode 100644 index 0000000000000000000000000000000000000000..7907ad27118c94e78b8e42d52bdd617c73092161 GIT binary patch literal 44809 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 literal 0 HcmV?d00001 diff --git a/src/gui/StartGUI.java b/src/gui/StartGUI.java new file mode 100644 index 0000000..c8488cd --- /dev/null +++ b/src/gui/StartGUI.java @@ -0,0 +1,259 @@ +package gui; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + + +public class StartGUI{ + + private JFrame jf; + + private JLabel heading; + private int xAxisSize = 6; + private JSlider xAxis; + private JLabel xAxisName; + private JLabel xAxisLabel; + private int yAxisSize = 6; + private JSlider yAxis; + private JLabel yAxisName; + private JLabel yAxisLabel; + private JSlider startCells; + private JLabel startCellsName; + private JLabel startCellsLabel; + + private MouseListener hover; + + private JButton randomStart; + private JButton manuelStart; + + + public StartGUI(){ + + jf = new JFrame(); + + jf.setTitle("CT-Conway's Game of Life"); + + ImageIcon imageIcon = new ImageIcon("src/data/icon.png"); + jf.setIconImage(imageIcon.getImage()); + + //getContentPane().setBackground(Color.decode("#121212")); + + jf.setUndecorated(false); + + jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + jf.setAutoRequestFocus(false); + jf.setLayout(null); + jf.setSize(752, 424); + //jf.getContentPane().setPreferredSize(new Dimension(752, 423)); + + jf.setResizable(false); + + + initComponents(); + addComponents(); + + + jf.setLocationRelativeTo(null); + jf.setVisible(true); + + } + + public void initComponents(){ + + Font head = new Font("Segoe UI Light", Font.PLAIN, 24); + Font text = new Font("Segoe UI Light", Font.PLAIN, 16); + + heading = new JLabel("Conway's Game of Life Control"); + heading.setFont(head); + heading.setForeground(Color.decode("#121212")); + heading.setBounds(50, 25, 400, 50); + heading.setVisible(true); + + int xAxisMin = 6; + int xAxisMax = 1024; + xAxis = new JSlider(xAxisMin, xAxisMax); + xAxis.setBounds(180, 110, 200, 20); + xAxis.setFont(text); + xAxis.setForeground(Color.decode("#121212")); + xAxis.setValue(6); + xAxis.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + xAxisSize = xAxis.getValue(); + updateSliderLables(0, xAxisSize); + updateStartCells(); + } + }); + xAxis.setVisible(true); + + xAxisName = new JLabel("Breite in Zellen:"); + xAxisName.setBounds(50, 100, 200, 30); + xAxisName.setFont(text); + xAxisName.setForeground(Color.decode("#121212")); + xAxisName.setVisible(true); + + xAxisLabel = new JLabel("6"); + xAxisLabel.setBounds(180, 80, 200, 30); + xAxisLabel.setFont(text); + xAxisLabel.setForeground(Color.decode("#121212")); + xAxisLabel.setVisible(true); + + + int yAxisMin = 6; + int yAxisMax = 1024; + yAxis = new JSlider(yAxisMin, yAxisMax); + yAxis.setBounds(180, 160, 200, 20); + yAxis.setFont(text); + yAxis.setForeground(Color.decode("#121212")); + yAxis.setValue(6); + yAxis.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + yAxisSize = yAxis.getValue(); + updateSliderLables(1, yAxisSize); + updateStartCells(); + } + }); + yAxis.setVisible(true); + + yAxisName = new JLabel("Höhe in Zellen:"); + yAxisName.setBounds(50, 150, 200, 30); + yAxisName.setFont(text); + yAxisName.setForeground(Color.decode("#121212")); + yAxisName.setVisible(true); + + yAxisLabel = new JLabel("6"); + yAxisLabel.setBounds(180, 130, 200, 30); + yAxisLabel.setFont(text); + yAxisLabel.setForeground(Color.decode("#121212")); + yAxisLabel.setVisible(true); + + + + + + startCells = new JSlider(6, 6); + startCells.setBounds(180, 210, 200, 20); + startCells.setFont(text); + startCells.setForeground(Color.decode("#121212")); + startCells.setValue(6); + startCells.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + int value = startCells.getValue(); + updateSliderLables(2, value); + } + }); + startCells.setVisible(true); + + startCellsName = new JLabel("Start Zellen:"); + startCellsName.setBounds(50, 200, 200, 30); + startCellsName.setFont(text); + startCellsName.setForeground(Color.decode("#121212")); + startCellsName.setVisible(true); + + startCellsLabel = new JLabel("6"); + startCellsLabel.setBounds(180, 180, 200, 30); + startCellsLabel.setFont(text); + startCellsLabel.setForeground(Color.decode("#121212")); + startCellsLabel.setVisible(true); + + updateStartCells(); + + hover = new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + super.mouseEntered(e); + JButton b = (JButton) e.getSource(); + b.setContentAreaFilled(true); + b.setBackground(Color.decode("#121212")); + b.setForeground(Color.decode("#F8F8FF")); + } + + @Override + public void mouseExited(MouseEvent e) { + super.mouseExited(e); + JButton b = (JButton) e.getSource(); + b.setForeground(Color.decode("#121212")); + b.setContentAreaFilled(false); + + } + }; + + randomStart = new JButton(); + randomStart.setText("Random Start"); + randomStart.setFont(text); + randomStart.setForeground(Color.decode("#121212")); + randomStart.setBorderPainted(false); + randomStart.setFocusPainted(false); + randomStart.setContentAreaFilled(false); + randomStart.setBounds(50, 280, 150, 50); + randomStart.setVisible(true); + randomStart.addMouseListener(hover); + + manuelStart = new JButton(); + manuelStart.setText("Manuel Start"); + manuelStart.setFont(text); + manuelStart.setForeground(Color.decode("#121212")); + manuelStart.setBorderPainted(false); + manuelStart.setFocusPainted(false); + manuelStart.setContentAreaFilled(false); + manuelStart.setBounds(225, 280, 150, 50); + manuelStart.setVisible(true); + manuelStart.addMouseListener(hover); + + + manuelStart.setBounds(225, 280, 150, 50); + + Icon gif = new ImageIcon("src/data/control.gif"); + JLabel gifLabel = new JLabel(gif); + gifLabel.setBounds(391, 25, 336, 336); + jf.getContentPane().add(gifLabel); + + } + + private void updateStartCells() { + + startCells.setMaximum(xAxisSize * yAxisSize); + + } + + private void updateSliderLables(int slider, int val){ + switch (slider){ + case 0: + xAxisLabel.setText(String.valueOf(val)); + break; + case 1: + yAxisLabel.setText(String.valueOf(val)); + break; + case 2: + startCellsLabel.setText(String.valueOf(val)); + break; + } + } + + + public void addComponents(){ + jf.add(heading); + jf.add(xAxis); + jf.add(xAxisName); + jf.add(xAxisLabel); + jf.add(yAxis); + jf.add(yAxisName); + jf.add(yAxisLabel); + jf.add(startCells); + jf.add(startCellsName); + jf.add(startCellsLabel); + jf.add(randomStart); + jf.add(manuelStart); + + } + + + +} diff --git a/src/main/Main.java b/src/main/Main.java new file mode 100644 index 0000000..ddb510f --- /dev/null +++ b/src/main/Main.java @@ -0,0 +1,16 @@ +package main; + +import gui.StartGUI; + +public class Main { + + public static void main(String[] args) { + StartGUI startGUI = new StartGUI(); + float x = 0; + + + + } + + +} diff --git a/src/v3/Control.java b/src/v3/Control.java deleted file mode 100644 index 8d48256..0000000 --- a/src/v3/Control.java +++ /dev/null @@ -1,113 +0,0 @@ -package v3; - -public class Control { - - private boolean[][] generation = new boolean[6][6]; - private GUI g = new GUI(this); - - public Control() { - for (int x = 0; x < 6; x++) { - for (int y = 0; y < 6; y++) { - generation[x][y] = false; - } - } - - generation[1][2] = true; - generation[2][2] = true; - generation[2][4] = true; - generation[3][1] = true; - generation[3][3] = true; - generation[4][3] = true; - - - } - - - public void start() { - g.showGeneration(bool2int(generation)); - } - - public void update(){ - generation = calcNextGeneration(); - g.showGeneration(bool2int(generation)); - } - - private int[][] bool2int(boolean[][] booleans) { - - int[][] ret = new int[6][6]; - - for (int x = 0; x < 6; x++) { - for (int y = 0; y < 6; y++) { - if (booleans[x][y]){ - ret[x][y] = 1; - } else { - ret[x][y] = 0; - } - } - } - return ret; - } - - private int countNeighboursAlive(int x, int y) { - int count = 0; - //Anfang mitte rechts, Uhrzeigersinn - int[] xoff = {1, 1, 0, -1, -1, -1, 0, 1}; - int[] yoff = {0, 1, 1, 1, 0, -1, -1, -1}; - - for (int i = 0; i < 8; i++) { - try { - if (generation[x + xoff[i]][y + yoff[i]]) count++; - } catch (Exception e) { - - } - } - - - System.out.println(count); - return count; - } - - public boolean[][] calcNextGeneration() { - - boolean[][] gen = new boolean[6][6]; - - - for (int x = 0; x < 6; x++) { - for (int y = 0; y < 6; y++) { - int n = countNeighboursAlive(x, y); - //Regel 1: Wiederbeleben - if (n == 3 && !gen[x][y]) { - gen[x][y] = true; - } - - //Regel 2: Unterbevölkerung - if (n < 2) { - gen[x][y] = false; - } - - //Regel 3: Am Leben bleiben - if (n == 2 || n == 3) { - //Zelle bleibt unverändert - } - - //Regel 4: Überbevölkerung - if (n > 3) { - gen[x][y] = false; - } - - } - } - - return gen; - } - - - public void newData(boolean[][] data) { - - generation = data; - - - } -} - - diff --git a/src/v3/GUI.java b/src/v3/GUI.java deleted file mode 100644 index 9b0193f..0000000 --- a/src/v3/GUI.java +++ /dev/null @@ -1,109 +0,0 @@ -package v3; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Objects; -import v3.Control; - -public class GUI extends JFrame { - - private JButton[][] buttons = new JButton[6][6]; - private JButton nextGen = new JButton(); - public Control c; - - public GUI(Control c){ - - this.c = c; - - setTitle("Test"); - setUndecorated(false); - - setDefaultCloseOperation(EXIT_ON_CLOSE); - setAutoRequestFocus(false); - setLayout(null); - setSize(500, 500); - setResizable(true); - - - initComponents(); - addComponents(); - - - setLocationRelativeTo(null); - setVisible(true); - - } - - private void initComponents() { - - nextGen.setBounds(0, 0, 100, 50); - nextGen.setText("Next"); - nextGen.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - c.update(); - } - }); - - for (int i = 0; i < 6; i++) { - for (int y = 0; y < 6; y++) { - buttons[i][y] = new JButton(); - buttons[i][y].setBounds(i * 50 + 50, y * 50 + 50, 50, 50); - int finalI = i; - int finalY = y; - buttons[i][y].addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (Objects.equals(buttons[finalI][finalY].getText(), "0")){ - buttons[finalI][finalY].setText("1"); - buttons[finalI][finalY].setBackground(Color.green); - } else { - buttons[finalI][finalY].setText("0"); - buttons[finalI][finalY].setBackground(Color.yellow); - } - - boolean[][] data = new boolean[6][6]; - - for (int i = 0; i < 6; i++) { - for (int y = 0; y < 6; y++) { - if (Objects.equals(buttons[i][y].getText(), "1")){ - data[i][y] = true; - } else { - data[i][y] = false; - } - } - } - - c.newData(data); - } - }); - } - } - } - private void addComponents() { - add(nextGen); - for (int i = 0; i < 6; i++) { - for (int y = 0; y < 6; y++) { - add(buttons[i][y]); - } - } - - } - - public void showGeneration(int[][] pGeneration) { - for (int i = 0; i < 6; i++) { - for (int y = 0; y < 6; y++) { - buttons[i][y].setText(String.valueOf(pGeneration[y][i])); - if (Objects.equals(buttons[i][y].getText(), "0")){ - buttons[i][y].setBackground(Color.green); - } else { - buttons[i][y].setBackground(Color.yellow); - } - } - } - } -} - - diff --git a/src/v3/Main.java b/src/v3/Main.java deleted file mode 100644 index 6b5427d..0000000 --- a/src/v3/Main.java +++ /dev/null @@ -1,10 +0,0 @@ -package v3; - -public class Main { - - public static void main(String[] args) { - Control c = new Control(); - c.start(); - } - -} \ No newline at end of file diff --git a/src/v4/draw/Draw.java b/src/v4/draw/Draw.java deleted file mode 100644 index 077c297..0000000 --- a/src/v4/draw/Draw.java +++ /dev/null @@ -1,38 +0,0 @@ -package v4.draw; - -import v4.game.Control; -import v4.gui.GUI; - -import javax.swing.*; -import java.awt.*; - -public class Draw extends JLabel { - - protected void paintComponent(Graphics g){ - super.paintComponent(g); - Graphics2D g2d = (Graphics2D) g; - - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); - - g.setColor(Color.RED); - g.drawRect(9 ,9, GUI.WIDTH + 2, GUI.HEIGHT + 2); - - repaint(); - - for (int x = 0; x < Control.CELLCOUNT; x++){ - for (int y = 0; y < Control.CELLCOUNT; y++){ - if (Control.cells[x][y]){ - g.setColor(Color.BLACK); - g.drawRect(x +GUI.XOFF, y + GUI.YOFF, 1, 1); - } else { - g.setColor(Color.WHITE); - g.drawRect(x +GUI.XOFF, y + GUI.YOFF, 1, 1); - } - } - } - - } - - - -} diff --git a/src/v4/game/Clock.java b/src/v4/game/Clock.java deleted file mode 100644 index 670dbcb..0000000 --- a/src/v4/game/Clock.java +++ /dev/null @@ -1,21 +0,0 @@ -package v4.game; - -public class Clock extends Thread { - - public static boolean running = true; - - public void run(){ - - while (running){ - try { - sleep(50); - v4.game.Control.nextGen(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - } - - } - -} diff --git a/src/v4/game/Control.java b/src/v4/game/Control.java deleted file mode 100644 index 3449f10..0000000 --- a/src/v4/game/Control.java +++ /dev/null @@ -1,73 +0,0 @@ -package v4.game; - -import java.util.concurrent.ThreadLocalRandom; - -public class Control { - - public static final int CELLCOUNT = 512; - public static boolean[][] cells = new boolean[CELLCOUNT][CELLCOUNT]; - - int startCells = 10000; - static int gen = 0; - - public void create(){ - for(int i = 0; i < startCells; i++){ - int x = rand(0, CELLCOUNT); - int y = rand(0, CELLCOUNT); - - cells[x][y] = true; - } - } - - public static void nextGen(){ - gen ++; - System.out.println("Generation:" + gen); - - for (int x = 0; x < CELLCOUNT; x++){ - for (int y = 0; y < CELLCOUNT; y++) { - int n = aliveNeigbours(x, y); - - if (n == 3 && !cells[x][y]){ - cells[x][y] = true; - } - - if (n < 2){ - cells[x][y] = false; - } - - if (n == 2 || n == 3){ - - } - - if (n > 3){ - cells[x][y] = false; - } - - } - } - } - - public static int aliveNeigbours(int x, int y){ - int count = 0; - - int[] xoff = {1, 1, 0, -1, -1, -1, 0, 1}; - int[] yoff = {0, 1, 1, 1, 0, -1, -1, -1}; - - for (int i = 0; i < 8; i++){ - try { - if (cells[x + xoff[i]][y + yoff[i]]){ - count ++; - } - } catch (Exception e) { - - } - } - - return count; - } - - public static int rand(int min, int max){ - return ThreadLocalRandom.current().nextInt(min, max); - } - -} diff --git a/src/v4/gui/GUI.java b/src/v4/gui/GUI.java deleted file mode 100644 index 5b4a78a..0000000 --- a/src/v4/gui/GUI.java +++ /dev/null @@ -1,31 +0,0 @@ -package v4.gui; - -import v4.draw.Draw; - -import javax.swing.*; - -public class GUI { - - JFrame jf; - - public static Draw d; - - public static final int WIDTH = 512, HEIGHT = 512, XOFF = 10, YOFF = 10; - - public void create(){ - jf = new JFrame("Game of Live"); - jf.setSize(550, 570); - jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - jf.setLocationRelativeTo(null); - jf.setResizable(false); - - d = new Draw(); - d.setBounds(0, 0, 550, 570); - d.setVisible(true); - - jf.add(d); - - jf.setVisible(true); - } - -} diff --git a/src/v4/main/Main.java b/src/v4/main/Main.java deleted file mode 100644 index c1364b6..0000000 --- a/src/v4/main/Main.java +++ /dev/null @@ -1,20 +0,0 @@ -package v4.main; - -import v4.game.Clock; -import v4.game.Control; -import v4.gui.GUI; - -public class Main { - - public static void main(String[] args) { - - GUI g = new GUI(); - Control c = new Control(); - Clock clk = new Clock(); - - c.create(); - g.create(); - clk.start(); - } - -} diff --git a/src/v5/draw/Draw.java b/src/v5/draw/Draw.java deleted file mode 100644 index 73f3c62..0000000 --- a/src/v5/draw/Draw.java +++ /dev/null @@ -1,45 +0,0 @@ -package v5.draw; - -import v4.gui.GUI; -import v5.game.Control; - -import javax.swing.*; -import java.awt.*; - -public class Draw extends JLabel { - - protected void paintComponent(Graphics g) { - super.paintComponent(g); - Graphics2D g2d = (Graphics2D) g; - - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); - - g.setColor(Color.RED); - g.drawRect(9 ,9, Control.CELLCOUNT_X + 1, Control.CELLCOUNT_Y + 1); - - - repaint(); - -// for (int x = 0; x < Control.CELLCOUNT_X; x++) { -// for (int y = 0; y < Control.CELLCOUNT_Y; y++) { -// if (Control.cells[x][y]) { -// g.setColor(Color.BLACK); -// g.fillRect(x + GUI.XOFF, y + GUI.YOFF, 1, 1); -// } -// } -// } - - - for (int x = 0; x < Control.CELLCOUNT_X; x++) { - for (int y = 0; y < Control.CELLCOUNT_X; y++) { - if (Control.cells[x][y]) { - g.setColor(Color.BLACK); - g.fillRect(x * 85 + GUI.XOFF, y * 85 + GUI.YOFF, 85, 85); - } else { - g.setColor(Color.WHITE); - g.fillRect(x * 85 + GUI.XOFF, y * 85 + GUI.YOFF, 85, 85); - } - } - } - } -} \ No newline at end of file diff --git a/src/v5/game/Clock.java b/src/v5/game/Clock.java deleted file mode 100644 index becdb23..0000000 --- a/src/v5/game/Clock.java +++ /dev/null @@ -1,27 +0,0 @@ -package v5.game; - -import java.util.Timer; -import java.util.TimerTask; - -public class Clock extends Thread{ - - public static boolean running = true; - - public void start(){ - - Timer t = new Timer(); - TimerTask tt = new TimerTask() { - @Override - public void run() { - if (running){ - Control.nextGen(); - } - } - }; - - t.scheduleAtFixedRate(tt, 1, 1); - - } - -} - diff --git a/src/v5/game/Control.java b/src/v5/game/Control.java deleted file mode 100644 index e3b5c0a..0000000 --- a/src/v5/game/Control.java +++ /dev/null @@ -1,109 +0,0 @@ -package v5.game; - -import java.util.concurrent.ThreadLocalRandom; - -public class Control { - - public static final int CELLCOUNT_X = 6; - public static final int CELLCOUNT_Y = 6; - public static boolean[][] cells = new boolean[CELLCOUNT_X][CELLCOUNT_Y]; - public static boolean[][] newcells = new boolean[CELLCOUNT_X][CELLCOUNT_Y]; - - int startCells = 6; - static int gen = 0; - - - public void create(){ -// for(int i = 0; i < startCells; i++){ -// int x = rand(0, CELLCOUNT_X); -// int y = rand(0, CELLCOUNT_Y); -// -// cells[x][y] = true; -// } - - - for (int x = 0; x < 6; x++) { - for (int y = 0; y < 6; y++) { - cells[x][y] = false; - } - } - - cells[1][2] = true; - cells[2][2] = true; - cells[2][4] = true; - cells[3][1] = true; - cells[3][3] = true; - cells[4][3] = true; - - - for (int x = 0; x < CELLCOUNT_X; x++) { - for (int y = 0; y < CELLCOUNT_Y; y++) { - newcells[x][y] = cells[x][y]; - } - } - - } - - public static void nextGen(){ - gen ++; - System.out.println("Generation:" + gen); - - for (int x = 0; x < CELLCOUNT_X; x++){ - for (int y = 0; y < CELLCOUNT_Y; y++) { - int n = aliveNeigbours(x, y); - - if (n == 3 && !cells[x][y]){ - newcells[x][y] = true; - } - - if (n < 2){ - newcells[x][y] = false; - } - - if (n == 2 || n == 3){ - - } - - if (n > 3){ - newcells[x][y] = false; - } - - } - } - - for (int x = 0; x < CELLCOUNT_X; x++) { - for (int y = 0; y < CELLCOUNT_Y; y++) { - cells[x][y] = newcells[x][y]; - } - } - - } - - public static int aliveNeigbours(int x, int y){ - int count = 0; - - int[] xoff = {1, 1, 0, -1, -1, -1, 0, 1}; - int[] yoff = {0, 1, 1, 1, 0, -1, -1, -1}; - - for (int i = 0; i < 8; i++){ - try { - if (cells[x + xoff[i]][y + yoff[i]]){ - count ++; - } - } catch (Exception e) { - - } - } - - return count; - } - - public static int rand(int min, int max){ - return ThreadLocalRandom.current().nextInt(min, max); - } - - private void calcDimension(int cellsX, int cellsY){ - - } - -} diff --git a/src/v5/gui/ControlGUI.java b/src/v5/gui/ControlGUI.java deleted file mode 100644 index ba7da78..0000000 --- a/src/v5/gui/ControlGUI.java +++ /dev/null @@ -1,67 +0,0 @@ -package v5.gui; - - -import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -public class ControlGUI { - - public static final int WIDTH = 512, HEIGHT = 512, XOFF = 10, YOFF = 10; - private JFrame jf; - - private JSlider gridSize; - private JLabel gridSizeLabel; - private JSlider startCells; - - private JButton start; - - public void create() { - jf = new JFrame("Game of Live"); - jf.setSize(305, 500); - jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - jf.setLayout(null); - jf.setLocationRelativeTo(null); - jf.setResizable(false); - - gridSize = new JSlider(6, 512); - gridSize.setBounds(50, 50, 150, 30); - gridSize.setValue(6); - gridSize.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - int value = gridSize.getValue(); - update(value); - } - }); - - gridSizeLabel = new JLabel("6"); - gridSizeLabel.setBounds(50, 30, 30, 30); - - startCells = new JSlider(); - startCells.setBounds(50, 100, 150, 30); - - start = new JButton("start"); - start.setBounds(0, 0, 50, 10); - start.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - - } - }); - - jf.add(start); - jf.add(gridSize); - jf.add(startCells); - jf.add(gridSizeLabel); - jf.setVisible(true); - } - - - private void update(int val){ - gridSizeLabel.setText(String.valueOf(val)); - } - -} diff --git a/src/v5/gui/GUI.java b/src/v5/gui/GUI.java deleted file mode 100644 index ee3c7ab..0000000 --- a/src/v5/gui/GUI.java +++ /dev/null @@ -1,37 +0,0 @@ -package v5.gui; - -import v5.draw.Draw; -import v5.game.Control; - -import javax.swing.*; -import java.awt.*; - -public class GUI { - - JFrame jf; - - public static Draw d; - - public static final int WIDTH = 512, HEIGHT = 512, XOFF = 10, YOFF = 10; - - - - public void create(){ - jf = new JFrame("Game of Live"); - - jf.getContentPane().setPreferredSize(new Dimension(Control.CELLCOUNT_X + 19, Control.CELLCOUNT_Y + 19)); - jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - jf.setResizable(true); - - d = new Draw(); - d.setVisible(true); - - jf.add(d); - - jf.pack(); - jf.setLocationRelativeTo(null); - jf.setVisible(true); - } - -} diff --git a/src/v5/main/Main.java b/src/v5/main/Main.java deleted file mode 100644 index 41e1e75..0000000 --- a/src/v5/main/Main.java +++ /dev/null @@ -1,26 +0,0 @@ -package v5.main; - -import v5.game.Clock; -import v5.game.Control; -import v5.gui.ControlGUI; -import v5.gui.GUI; -import v5.draw.Draw; - -public class Main { - - public static void main(String[] args) { - -// ControlGUI controlGUI = new ControlGUI(); -// controlGUI.create(); - - Control control = new Control(); - GUI gui = new GUI(); - Clock clock = new Clock(); - - control.create(); - gui.create(); - clock.start(); - - } - -}