From 7deeb203ffb8f64361ff8d95170f721e73678a60 Mon Sep 17 00:00:00 2001 From: philippe lhardy Date: Fri, 1 Dec 2017 22:20:33 +0100 Subject: [PATCH] prepare for hand drawing with maze. --- java/org/artisanlogiciel/games/Display.java | 19 ++++++++++++++++++- java/org/artisanlogiciel/games/LabyModel.java | 3 ++- java/org/artisanlogiciel/games/Position.java | 17 +++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/java/org/artisanlogiciel/games/Display.java b/java/org/artisanlogiciel/games/Display.java index e118c8a..8822ade 100644 --- a/java/org/artisanlogiciel/games/Display.java +++ b/java/org/artisanlogiciel/games/Display.java @@ -634,6 +634,7 @@ public class Display extends JFrame final MazeCellParameters cp; Position current = null; LinkedList solvedPath = null; + LinkedList drawingPath = null; final Object lockChange = new Object(); // current postion of human resolving int sX = 0; @@ -650,7 +651,23 @@ public class Display extends JFrame // should find the cell ... int pX = (int) ((double) (e.getX() - cp.getOffsetX()) / cp.getWidth()); int pY = (int) ((double) (e.getY() - cp.getOffsetY()) / cp.getHeight()); - System.out.println("Mouse dragged Cell [" + pX + ',' + pY + ']'); + Position newPosition = new Position(pX,pY); + if (drawingPath == null ) + { + drawingPath = new LinkedList<>(); + } + else + { + DirectionPosition last = drawingPath.getLast(); + if ( last.getPosition().equals(newPosition)) + { + // no move. + return; + } + // short path=computeMove(last,newPosition); + } + System.out.println("Mouse dragged Cell " + newPosition); + drawingPath.addLast(new DirectionPosition((short) 0,newPosition)); map.noWalls(pX,pY); changed(null,null,map); } diff --git a/java/org/artisanlogiciel/games/LabyModel.java b/java/org/artisanlogiciel/games/LabyModel.java index deabdc5..65b8b96 100644 --- a/java/org/artisanlogiciel/games/LabyModel.java +++ b/java/org/artisanlogiciel/games/LabyModel.java @@ -643,7 +643,8 @@ public class LabyModel implements WallsProvider { rlistener.notifySearch(found); } - break; + // support multiple pathes + // break; } } } diff --git a/java/org/artisanlogiciel/games/Position.java b/java/org/artisanlogiciel/games/Position.java index e4f5007..da2a162 100644 --- a/java/org/artisanlogiciel/games/Position.java +++ b/java/org/artisanlogiciel/games/Position.java @@ -1,5 +1,6 @@ package org.artisanlogiciel.games; +/** position of a cell with maze */ public class Position { private int x, y; @@ -38,4 +39,20 @@ public class Position { return "(" + x + "," + y + ")" + "/" + depth; } + + public boolean equals(Object other) + { + // disregards depth + if (other instanceof Position ) + { + Position p = (Position) other; + return (p.getX() == x) && (p.getY() == y); + } + else + { + return false; + } + + + } }