From c3f5f04dbd0349df4167a1f5c1891d73b8688074 Mon Sep 17 00:00:00 2001 From: dorian Date: Sun, 16 Feb 2020 19:46:57 +0100 Subject: [PATCH] added some comments, forcing aspect ratio now --- src/de/itsblue/ConnectFour/ConnectFour.java | 11 +--- src/de/itsblue/ConnectFour/GameBoard.java | 42 ++++++++------ src/de/itsblue/ConnectFour/Plate.java | 56 ++++++++++++++----- .../itsblue/ConnectFour/PlateContainer.java | 21 ++++--- 4 files changed, 80 insertions(+), 50 deletions(-) diff --git a/src/de/itsblue/ConnectFour/ConnectFour.java b/src/de/itsblue/ConnectFour/ConnectFour.java index e7a127f..fe67e89 100644 --- a/src/de/itsblue/ConnectFour/ConnectFour.java +++ b/src/de/itsblue/ConnectFour/ConnectFour.java @@ -29,15 +29,8 @@ public class ConnectFour extends JFrame { /** * */ - private static final long serialVersionUID = 1L; - - - @Override - public void setTitle(String name) { - super.setTitle(name); - } + private static final long serialVersionUID = 1L; - ConnectFour() { // Constructor @@ -50,7 +43,7 @@ public class ConnectFour extends JFrame { this.getContentPane().setLayout(new GridBagLayout()); GameBoard board = new GameBoard(); - //board.setPreferredSize(new Dimension(600,600)); + board.setPreferredSize(new Dimension(200,200)); this.add(board); for(int i = 0; i < 7; i++) { diff --git a/src/de/itsblue/ConnectFour/GameBoard.java b/src/de/itsblue/ConnectFour/GameBoard.java index 80cfe10..04e82f0 100644 --- a/src/de/itsblue/ConnectFour/GameBoard.java +++ b/src/de/itsblue/ConnectFour/GameBoard.java @@ -28,8 +28,6 @@ public class GameBoard extends JPanel { */ private static final long serialVersionUID = 1L; - private boolean isInited = false; - /** * The rows of the board */ @@ -49,7 +47,6 @@ public class GameBoard extends JPanel { * Constructor */ GameBoard() { - this.setPreferredSize(new Dimension(this.BoardColumns * 50, this.BoardRows * 50)); this.initBoard(); } @@ -108,35 +105,44 @@ public class GameBoard extends JPanel { this.add(this.BoardContainers[j][i]); } } - - this.isInited = true; } - + + public int getSuggestedContainerSize(Dimension parentSize) { + int containerSize; + + if (parentSize.getWidth() / this.BoardColumns > parentSize.getHeight() / this.BoardRows) + containerSize = (int) parentSize.getHeight() / this.BoardRows; + else + containerSize = (int) parentSize.getWidth() / this.BoardColumns; + + return containerSize; + } + + /** + * Override paint function to rescale all caontainers on every repaint + */ @Override public void paint(Graphics g) { System.out.println("updating sizes"); - int containerSize; - - if (this.getSize().getWidth() / this.BoardColumns > this.getSize().getHeight() / this.BoardRows) - containerSize = (int) this.getSize().getHeight() / this.BoardRows; - else - containerSize = (int) this.getSize().getWidth() / this.BoardColumns; - - containerSize = 30; - - System.out.println(containerSize); - System.out.println(this.getSize()); for (PlateContainer[] plateContainers : BoardContainers) { for (PlateContainer plateContainer : plateContainers) { - //plateContainer.setPreferredSize(new Dimension(containerSize, containerSize)); + plateContainer.setPreferredSize(new Dimension(this.getSuggestedContainerSize(this.getSize()), + this.getSuggestedContainerSize(this.getSize()))); } } super.paint(g); } + @Override + public void setPreferredSize(Dimension preferredSize) { + Dimension newSize = new Dimension(this.getSuggestedContainerSize(preferredSize) * this.BoardColumns, + this.getSuggestedContainerSize(preferredSize) * this.BoardRows); + super.setPreferredSize(newSize); + } + /* * void winningCondition() { for (int i = 0; i <= 2; i++) for (int j = 0; j <= * 6; j++) { if (GameBoard[i][j] == p && GameBoard[i + 1][j] == p && GameBoard[i diff --git a/src/de/itsblue/ConnectFour/Plate.java b/src/de/itsblue/ConnectFour/Plate.java index 8b52ffa..eb52595 100644 --- a/src/de/itsblue/ConnectFour/Plate.java +++ b/src/de/itsblue/ConnectFour/Plate.java @@ -17,18 +17,21 @@ */ package de.itsblue.ConnectFour; - -import javax.swing.*; - import java.awt.*; +/** + * Plate models to plate or 'coin' to be inserted into + * game grid. It therefore has a type (X or O) which + * comes with a color (X = RED; O = BLACK) and a value + * (X = -1; O = 1) for further processing. this is a + * helper class and does not come with any standalone + * usage. + * + * @author Oliver Schappacher + * @author Dorian Zedler + */ public class Plate { - /** - * - */ - private static final long serialVersionUID = 1L; - /** * Enum containing all plate types */ @@ -43,27 +46,52 @@ public class Plate { /** * Constructor + * * @param type type of the plate */ Plate(PlateType type) { - this.setType(type); + this.type = type; } /** * Function to get the type of the plate + * * @return PlateType */ - public PlateType getType() { + public PlateType getType() { return this.type; } /** - * Function to change the type of the plate + * Function to get the type of the plate as int * - * @param type the type to set the plate to + * @return plate type as int (O=1; X=-1) */ - private void setType(PlateType type) { - this.type = type; + public int getValue() { + switch (this.type) { + case O: + return 1; + case X: + return -1; + default: + return 0; + } + } + + /** + * Function to get the color of the plate + * + * @return the color of the plate + */ + public Color getColor() { + switch (this.type) { + case O: + return Color.BLACK; + case X: + return Color.RED; + default: + return Color.WHITE; + } } } \ No newline at end of file diff --git a/src/de/itsblue/ConnectFour/PlateContainer.java b/src/de/itsblue/ConnectFour/PlateContainer.java index c8b4f21..8d133dc 100644 --- a/src/de/itsblue/ConnectFour/PlateContainer.java +++ b/src/de/itsblue/ConnectFour/PlateContainer.java @@ -19,10 +19,6 @@ package de.itsblue.ConnectFour; import javax.swing.JPanel; - -import de.itsblue.ConnectFour.Plate.PlateType; - -import javax.swing.*; import java.awt.*; public class PlateContainer extends JPanel { @@ -72,7 +68,8 @@ public class PlateContainer extends JPanel { /** * Function to check if the container is occupied * - * @return true if occupied, false if not + * @return true if occupied + * false if not */ public boolean containsPlate() { if (this.containedPlate != null) @@ -84,7 +81,7 @@ public class PlateContainer extends JPanel { /** * Function to clear the container * - * @return if it was occupied: contained plate, else: null + * @return if it was occupied: contained plate, else: null */ public Plate removePlate() { if (!this.containsPlate()) @@ -97,16 +94,22 @@ public class PlateContainer extends JPanel { return ret; } + /** + * Override the paint function to draw the shape of the plate + */ @Override public void paint(Graphics g) { + // draw background g.setColor(Color.lightGray); g.fillRect(0, 0, this.getWidth(), this.getHeight()); - if (this.containsPlate()) { - g.setColor(this.containedPlate.getType() == PlateType.X ? Color.RED : Color.BLACK); - } else + // set color according to contained plate + if (this.containsPlate()) + g.setColor(this.containedPlate.getColor()); + else g.setColor(Color.white); + // draw plate g.fillOval((int) (this.getWidth() * 0.1), (int) (this.getHeight() * 0.1), (int) (this.getWidth() * 0.8), (int) (this.getHeight() * 0.8)); }