Skip to content

Commit

Permalink
Style and document fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
macwille committed Aug 19, 2020
1 parent 29fb1e9 commit 00cd8f5
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 34 deletions.
18 changes: 13 additions & 5 deletions Dokumentit/Kayttoohje.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,20 @@ Ohjelman voi myös suorittaa ilman paketointia komennolla `mvn compile exec:java

## Syötteet

Käyttäjä voi valita minkä kokoisen labyrintin ohjelma ratkaisee.
Käyttäjä voi valita minkä kokoisen labyrintin ohjelma ratkaisee sekä käytetäänkö rekursiivista vai while-loop ratkaisua.

### Koko taulukko
### Koko taulukko

* Small - 20 x 20
Rekursiivinen koko, While-loop koko.

* Medium - 40 x 40
* Small - 20 x 20 ja 40 x 40

* Large - 80 x 80
* Medium - 40 x 40 ja 80 x 80

* Large - 80 x 80 ja 2000 x 1000

### Rekursiivinen tai While-loop

* Rekursiivinen ratkaisulla on tällä hetkellä huono optimointi suurilla kutsuilla joten se on rajoitettu opertoimaan alle 100x100 kokoisilla taulukoilla.

* While-loop ratkaisu ei aiheuta ongelmia muistin suhteen joten sillä voidaan ratkaista suurempiakin taulukoita. Valittaessa vaihtoehdot `Large` sekä While-loop ohjelma ratkaisee 2000x1000 kokoisen taulukon, tämä voi kestää riippuen tietokoneen tehosta.
6 changes: 3 additions & 3 deletions Dokumentit/Testausdokumentti.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@

Ohjelma käyttää yksikkötestaukseen JUnit-kirjastoa. Testien tulokset ja raportit ilmestyvät projektikansioon `/target`, jossa niitä voidaan tarkastella

## JUnit
## JUnit - Yksikkötestaus

JUnit testis voidaan suorittaa komennolla `mvn test`. **HUOM** raporttien luomiseksi täytyy tämä komento suorittaa ensiksi.

`/target` kansio voidaan poistaa komennolla `mvn clean`.


### Testikattavuus -Jacoco
### Jacoco - Testikattavuus

Testikattavuus voidaan tarkistaa Jacoco-raportilla joka voidaan luoda komennolla `mvn jacoco:report`.

`/target` kansioon ilmestyy `/site` kansio josta voidaan tarkastella testikattavuutta, tiedosto `index.html` kertoo koko ohjelman kattavuudesta.

### Checkstyle
### Checkstyle - Koodin tyyli

Checkstyle raportti voidaan luoda komennolla `mvn checkstyle:checkstyle`, jonka jälkeen `/target/site` kansioon ilmestyy tiedosto `checkstyle.html`, tästä nähdään koodissa olevia puutteita tai rikkeitä konventiossa.
26 changes: 18 additions & 8 deletions Dokumentit/Toteutusdokumentti.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
# Ohjelman rakenne

Projekti on jaettu kolmeen pakettiin jotka sisältävät jonkin ohjelman osa-alueen.
Projekti on jaettu seuraaviin paketteihin jotka sisältävät tietyn ohjelman osa-alueen.

## Paketit

* `.maze` - Sisältää labyrintin luomiseen ja muokkaamiseen tarvittavat luokat.
* `.maze` - Sisältää labyrintin luomiseen, muokkaamiseen sekä sen toimintaan liittyvät luokat.

* `.gui` - Sisältää ohjelman graafisen käyttöliittymän.

* `.solving` - Sisältää ohjelman ratkaisu algoritmin ja sen toimintaan tarvittavat luokat.
* `.solving` - Sisältää ohjelman ratkaisu algoritmin sekä siihen liittyvät luokat.

* `.util` - Sisältää ohjelman tarvitsemat tietorakenteet

* `.testing` - Sisältää ohjelman testaamiseen tarvittavat luokat.

### Maze paketti
Sisältää seuraavat luokat

* Maze - luo ja hallitsee labyrintin logiikkaa ja opertointia.

Expand All @@ -22,16 +23,25 @@ Sisältää seuraavat luokat
* Square - auttaa tallentamaan kaksiuloitteisen listan koordinaatit.

### Gui paketti
Sisältää luokan

* GUI - luo graafisen käyttöliittymän sekä luo, generoi ja ratkaisee Maze luokan joka esitetään käyttäjälle.

### Solving paketti
Sisältää seuraavat luokat

* WallFollower - Wall follower algoritmi joka etsii ratkaisun annetusta labyrintistä.

### Util paketti

* SquareList - Itseään kasvattava lista johon voidaan lisätä Square luokan olioita.

* SquareQue - Linkitetty lista joka muodostaa jonon Square luokan olioista, toimii nopeasti kun haetaan listan ensimmäinen tai viimeinen olio.

## Testitulokset

Poislukien `cs.helsinki.fi.gui`, kaikki paketit ja luokat yksikkötestaan JUnit kirjastolla.
Ohjelman tehokkuutta ei ole vielä testattu.
### Yksikkötestaus

Poislukien `cs.helsinki.fi.gui`, kaikki luokat yksikkötestaan JUnit kirjastolla, testit voidaan suorittaa komennolla `mvn test`.

### Tehokkuustestaus

Ohjelman tehokkuutta ei vielä ole testattu.
22 changes: 11 additions & 11 deletions maze-solver/src/main/java/cs/helsinki/fi/gui/GUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -120,39 +120,39 @@ public Scene getStartScene(Stage stage) {
if (selectedString2.equals("Recursive")) {
String setting = "Recursive";
if (selectedString.equals("Small")) {
stage.setScene(getSolveStage(21, 21, 18, setting));
stage.setScene(getSolveScene(21, 21, 18, setting));
stage.setTitle("Maze generator - Recursive Small");

}

if (selectedString.equals("Medium")) {
stage.setScene(getSolveStage(41, 41, 16, setting));
stage.setScene(getSolveScene(41, 41, 16, setting));
stage.setTitle("Maze generator - Recursive Medium");

}
// Stack overflow if over 100x100
if (selectedString.equals("Large")) {
stage.setScene(getSolveStage(81, 81, 14, setting));
stage.setScene(getSolveScene(81, 81, 14, setting));
stage.setTitle("Maze generator - Recursive Large");

}

} else {
String setting = "Loop";
if (selectedString.equals("Small")) {
stage.setScene(getSolveStage(41, 41, 16, setting));
stage.setScene(getSolveScene(41, 41, 16, setting));
stage.setTitle("Maze generator - Loop Small");

}

if (selectedString.equals("Medium")) {
stage.setScene(getSolveStage(81, 81, 14, setting));
stage.setScene(getSolveScene(81, 81, 14, setting));
stage.setTitle("Maze generator - Loop Medium");

}
// Testing limits
if (selectedString.equals("Large")) {
stage.setScene(getSolveStage(2001, 1001, 1, setting));
stage.setScene(getSolveScene(2001, 1001, 1, setting));
stage.setTitle("Maze generator - Loop Large");

}
Expand All @@ -167,22 +167,22 @@ public Scene getStartScene(Stage stage) {
}

/**
* Returns a canvas drawing of the solved maze
* Returns a canvas drawing of the solved maze.
*
* @param width - width of the maze that is solved
* @param height - height of the maze that is solved
* @param scale - scale of a square inside the maze
* @param setting - String name of the algorithm that is used
* @return solvedScene - Scene with canvas of the solved maze
*/
public Scene getSolveStage(int width, int height, int scale, String setting) {
public Scene getSolveScene(int width, int height, int scale, String setting) {
this.maze = new Maze(width, height);
this.scale = scale;

this.canvas = new Canvas(maze.getWidth() * scale, maze.getHeight() * scale);
Group root = new Group();
root.getChildren().add(canvas);
Scene s = new Scene(root, maze.getWidth() * scale, maze.getHeight() * scale, Color.BLUE);
Scene solveScene = new Scene(root, maze.getWidth() * scale, maze.getHeight() * scale, Color.BLUE);
maze.generate();

if (setting.equals("Recursive")) {
Expand All @@ -193,11 +193,11 @@ public Scene getSolveStage(int width, int height, int scale, String setting) {
draw();
}

return s;
return solveScene;
}

/**
* Draws the maze to canvas
* Draws the maze to canvas.
*
*/
public void draw() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,28 +89,23 @@ public SquareList solve() {
* @return SquareList - List of the path
*/
public SquareList move(Square pos, Direction dir, SquareList path) {

// Reached finish
if (maze.reachedFinish(pos)) {
path.add(pos);
return path;
}

// Can move right
if (canMove(pos, getDirectionToRight(dir))) {
Direction newDir = getDirectionToRight(dir);
Square right = getSquareInDirection(pos, newDir);
path.add(right);
return move(right, newDir, path);

} // Can move forward
else if (canMove(pos, dir)) {
} else if (canMove(pos, dir)) {
Square forward = getSquareInDirection(pos, dir);
path.add(forward);
return move(forward, dir, path);

} // Can move left
else if (canMove(pos, getDirectionToLeft(dir))) {
} else if (canMove(pos, getDirectionToLeft(dir))) {
Direction newDir = getDirectionToLeft(dir);
Square left = getSquareInDirection(pos, newDir);
path.add(left);
Expand Down

0 comments on commit 00cd8f5

Please sign in to comment.