Prechádzať zdrojové kódy

Bugfix and Pos::add method.

Fixed a bug causing pattern positions to be incorrect.
Tankernn 8 rokov pred
rodič
commit
6f65a7956c

+ 1 - 1
src/main/java/eu/tankernn/mines/Mines.java

@@ -132,7 +132,7 @@ public class Mines extends TankernnGame {
 	public void calculateMinesAround(Tile tile, List<Pos> pattern) {
 		hiddenTiles--;
 
-		List<Tile> testTiles = pattern.stream().map(p -> new Pos(p.x + tile.pos.x, p.y + tile.pos.y))
+		List<Tile> testTiles = pattern.stream().map(p -> p.add(tile.pos))
 				.map(p -> tiles.get(p)).filter(t -> t != null).collect(Collectors.toList());
 
 		int minesAround = (int) testTiles.stream().filter(t -> t.isMine).count();

+ 4 - 0
src/main/java/eu/tankernn/mines/Pos.java

@@ -27,4 +27,8 @@ public class Pos {
 	public String toString() {
 		return "(" + x + ", " + y + ")";
 	}
+	
+	public Pos add(Pos other) {
+		return new Pos(this.x + other.x, this.y + other.y);
+	}
 }

+ 6 - 8
src/main/java/eu/tankernn/mines/SettingsEditor.java

@@ -19,7 +19,8 @@ public class SettingsEditor extends JFrame {
 	private JPanel contentPane;
 	private int radius = 3, size = radius * 2 + 1;
 	private Mines gameInstance;
-	private JSpinner minesSpinner = new JSpinner(), sizeSpinner = new JSpinner();
+	private JSpinner minesSpinner = new JSpinner(),
+			sizeSpinner = new JSpinner();
 	JCheckBox[][] boxes;
 
 	/**
@@ -60,14 +61,11 @@ public class SettingsEditor extends JFrame {
 
 		JButton save = new JButton("Save");
 		save.addActionListener(e -> {
-			List<Pos> pattern = Mines.allPositions(size, size).filter(p -> boxes[p.x][p.y].isSelected())
-					.collect(Collectors.toList());
+			Pos delta = new Pos(-radius, -radius);
+			List<Pos> pattern = Mines.allPositions(size, size).filter(p -> boxes[p.x][p.y].isSelected()).map(p -> p.add(delta)).collect(Collectors.toList());
+
+			gameInstance.setSettings(new Settings(pattern, (int) sizeSpinner.getValue(), (int) sizeSpinner.getValue(), (int) minesSpinner.getValue()));
 
-			if (gameInstance != null) {
-				gameInstance.setSettings(new Settings(pattern, (int) sizeSpinner.getValue(),
-						(int) sizeSpinner.getValue(), (int) minesSpinner.getValue()));
-				dispose();
-			}
 		});
 
 		contentPane.add(options, BorderLayout.NORTH);