finished uebung10
This commit is contained in:
parent
b439030fee
commit
9908656813
BIN
bin/uebung10/logo/HanselGretelTest.class
Normal file
BIN
bin/uebung10/logo/HanselGretelTest.class
Normal file
Binary file not shown.
BIN
bin/uebung10/logo/HanselGretelVisitor$1.class
Normal file
BIN
bin/uebung10/logo/HanselGretelVisitor$1.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
30
src/uebung10/logo/HanselGretelTest.java
Normal file
30
src/uebung10/logo/HanselGretelTest.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package uebung10.logo;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
|
||||||
|
public class HanselGretelTest {
|
||||||
|
|
||||||
|
public static final double EPS = 1e-10;
|
||||||
|
public static final Stmt PROG = new Sequence(new PenDown(), new Go(50),
|
||||||
|
new Turn(120), new Go(50),
|
||||||
|
new Turn(120), new Go(50));
|
||||||
|
|
||||||
|
private Turtle turtle;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
turtle = new Turtle(2, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void TestTriangle() {
|
||||||
|
final Visitor<Void> visitor = new HanselGretelVisitor(10, turtle, new BlackForest()); //final ist egal
|
||||||
|
PROG.accept(visitor);
|
||||||
|
assertEquals(2, turtle.getX(), EPS);
|
||||||
|
assertEquals(1, turtle.getY(), EPS);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -46,6 +46,15 @@ public class HanselGretelVisitor implements Visitor<Void> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void breadCrumb() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'breadCrumb'");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void layTrail(double d) {
|
||||||
|
forest.breadCrumb(turtle.getX(), turtle.getY());
|
||||||
|
}
|
||||||
|
|
||||||
private abstract class State {
|
private abstract class State {
|
||||||
abstract void go(double dist);
|
abstract void go(double dist);
|
||||||
void up() {}
|
void up() {}
|
||||||
@ -54,20 +63,28 @@ public class HanselGretelVisitor implements Visitor<Void> {
|
|||||||
|
|
||||||
private final State shortUp = new ShortUpState();// muss nicht geschrieben werden
|
private final State shortUp = new ShortUpState();// muss nicht geschrieben werden
|
||||||
private final State down = new DownState();// muss nicht geschrieben werden
|
private final State down = new DownState();// muss nicht geschrieben werden
|
||||||
private final State longUp = new LongUpSate();
|
private final State longUp = new State(){
|
||||||
|
|
||||||
private class LongUpSate extends State{
|
@Override
|
||||||
void go(double d) {}
|
void go(double d) {turtle.go(d);}
|
||||||
void up(){}
|
|
||||||
void down(){}
|
@Override
|
||||||
}
|
void down(){
|
||||||
|
breadCrumb();
|
||||||
|
state = down;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
private class DownState extends State{
|
private class DownState extends State{
|
||||||
void go(double d){}
|
void go(double d){
|
||||||
void up(){}
|
layTrail(d);
|
||||||
void down(){}
|
}
|
||||||
|
|
||||||
|
void up(){state = shortUp;}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO
|
||||||
private class ShortUpState extends State {
|
private class ShortUpState extends State {
|
||||||
void go(double d){}
|
void go(double d){}
|
||||||
void up(){}
|
void up(){}
|
||||||
|
Loading…
Reference in New Issue
Block a user