From d443e03d6a64aea8b349c4c0e530f5c6d8072e07 Mon Sep 17 00:00:00 2001 From: strangeCamel Date: Sat, 2 Apr 2022 00:10:01 +0300 Subject: [PATCH 1/3] add handy shell scripts to recompile and run game --- .gitignore | 1 + README | 2 ++ rebuild.sh | 4 ++++ run.sh | 2 ++ 4 files changed, 9 insertions(+) create mode 100644 .gitignore create mode 100755 rebuild.sh create mode 100755 run.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b468b6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.class diff --git a/README b/README index c4fae44..eccc331 100644 --- a/README +++ b/README @@ -5,3 +5,5 @@ fast enough for complex algorithms and complex games. Please look at the INSTALL file for installation tips. Please look at the HACKER file for ideas for developers. + +Also under Linux may use ./rebuild.sh && ./run.sh to build&run game inplace diff --git a/rebuild.sh b/rebuild.sh new file mode 100755 index 0000000..397f7b4 --- /dev/null +++ b/rebuild.sh @@ -0,0 +1,4 @@ +#!/bin/sh +find -type f -name *.class -delete +javac -cp "$(pwd)/src:$(pwd)/res" src/friendless/games/filler/Filler.java +javac -cp "$(pwd)/src:$(pwd)/res" src/friendless/games/filler/player/*.java diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..aaed901 --- /dev/null +++ b/run.sh @@ -0,0 +1,2 @@ +#!/bin/sh +java -cp "$(pwd)/src:$(pwd)/res" friendless/games/filler/Filler From 9ea55415fc3e0abcc78269ce06f604687daf7920 Mon Sep 17 00:00:00 2001 From: strangeCamel Date: Sat, 2 Apr 2022 00:11:05 +0300 Subject: [PATCH 2/3] make hexes sizes to follow board resizing --- src/friendless/games/filler/FillerBoard.java | 65 +++++++++++++++----- src/friendless/games/filler/FillerPanel.java | 31 ++++++++-- 2 files changed, 76 insertions(+), 20 deletions(-) diff --git a/src/friendless/games/filler/FillerBoard.java b/src/friendless/games/filler/FillerBoard.java index f44ec2b..b9278e1 100644 --- a/src/friendless/games/filler/FillerBoard.java +++ b/src/friendless/games/filler/FillerBoard.java @@ -16,27 +16,38 @@ import java.awt.*; import java.awt.image.BufferedImage; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; import java.io.File; import java.io.IOException; import java.text.MessageFormat; import javax.imageio.ImageIO; import javax.swing.*; + /** * A graphical component which is the array of hexagons. * * @author John Farrell */ -public class FillerBoard extends JComponent { +public class FillerBoard extends JComponent implements ComponentListener { /** the pixel coordinates of the hexes */ - static Point[] topLefts, botRights; - private static final int SIZE = 7; + Point[] topLefts, botRights; + public final static int MIN_SIZE = 5; + int count; + int SIZE = MIN_SIZE; + Dimension dim; - static { + public void updateSize() { + Dimension mySize = getSize(); + int dX = FillerSettings.COLUMNS > 0 ? (mySize.width - 10) / FillerSettings.COLUMNS : MIN_SIZE; + int dY = FillerSettings.ROWS > 0 ? (mySize.height - 10) / FillerSettings.ROWS / 4 : MIN_SIZE; +// System.out.printf("width=%d height=%d cols=%d rows=%d dx=%d dy=%d\n", +// mySize.width, mySize.height, FillerSettings.COLUMNS, FillerSettings.ROWS, dX, dY); + SIZE = (dX < dY) ? dX : dY; + if (SIZE < MIN_SIZE) { SIZE = MIN_SIZE; } int size = FillerSettings.SIZE; - topLefts = new Point[size]; - botRights = new Point[size]; - for (int i=0; i Date: Sat, 2 Apr 2022 00:35:05 +0300 Subject: [PATCH 3/3] do exact fit --- src/friendless/games/filler/FillerBoard.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/friendless/games/filler/FillerBoard.java b/src/friendless/games/filler/FillerBoard.java index b9278e1..c0bbbd1 100644 --- a/src/friendless/games/filler/FillerBoard.java +++ b/src/friendless/games/filler/FillerBoard.java @@ -40,8 +40,8 @@ public class FillerBoard extends JComponent implements ComponentListener { public void updateSize() { Dimension mySize = getSize(); - int dX = FillerSettings.COLUMNS > 0 ? (mySize.width - 10) / FillerSettings.COLUMNS : MIN_SIZE; - int dY = FillerSettings.ROWS > 0 ? (mySize.height - 10) / FillerSettings.ROWS / 4 : MIN_SIZE; + int dX = FillerSettings.COLUMNS > 0 ? mySize.width / (FillerSettings.COLUMNS + 1) : MIN_SIZE; + int dY = FillerSettings.ROWS > 0 ? mySize.height / FillerSettings.ROWS / 4 : MIN_SIZE; // System.out.printf("width=%d height=%d cols=%d rows=%d dx=%d dy=%d\n", // mySize.width, mySize.height, FillerSettings.COLUMNS, FillerSettings.ROWS, dX, dY); SIZE = (dX < dY) ? dX : dY;