-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSpielfigur.java
96 lines (87 loc) · 3.04 KB
/
Spielfigur.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
* Write a description of class Spielfigur here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Spielfigur extends Actor
{
public Spielfigur(){
super();
getImage().scale(50,50);
}
/**
* Act - do whatever the Spielfigur wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
String key = Greenfoot.getKey();
if(Greenfoot.isKeyDown("right")){
setRotation(0);
walk();
}
if(Greenfoot.isKeyDown( "left")){
setRotation(180);
walk();
}
if(Greenfoot.isKeyDown("down" )){
setRotation(90);
walk();
}
if(Greenfoot.isKeyDown( "up" )){
setRotation(270);
walk();
}
// if(Greenfoot.mouseClicked(getWorld())){
// MouseInfo mouseInfo = Greenfoot.getMouseInfo();
// int mx = mouseInfo.getX();
// int my = mouseInfo.getY();
// System.out.println("Gesuchter Weg: " + mx + " " + my);
// breitenSuche(new Knoten(mx,my),mx,my);
// }
// Add your action code here.
}
public void breitenSuche(Knoten a, int x, int y){
ArrayList<Knoten> warteschlange = new ArrayList<Knoten>();
warteschlange.add(new Knoten(getX(), getY()));
Knoten[][] vorgänger = new Knoten[getWorld().getWidth()][getWorld().getHeight()];
boolean zielErreicht = false;
boolean[][] besucht = new boolean[getWorld().getWidth()][getWorld().getHeight()];
while( !warteschlange.isEmpty() && !zielErreicht){
Knoten k = warteschlange.remove(0);
int kx = k.getX();
int ky = k.getY();
if(k.getX()+1>=0 && k.getX()+1<= 20 && !besucht[kx+1][ky]){
System.out.println("Aufruf erfolgreich");
Knoten b = new Knoten(kx+1 , ky);
warteschlange.add( b );
besucht[kx+1][ky]=true;
System.out.println(warteschlange);
System.out.println("Vorheriger X-Wert: " + getX());
System.out.println("X von B: " + b.getX() + "/" + (k.getX()+1) + " vs gesuchtes X: " + x);
if(k.getX()+1 == x && k.getY() == y){
System.out.println("Ziel erreicht");
}
else{
setRotation(0);
Greenfoot.delay(30);
walk();
}
//System.out.println("Koordinaten von Knoten b" + b.getX() + " " + b.getY());
}
//warteschlange.add( new Knoten(x+1, y) );
//warteschlange.add( new Knoten(x, y-1) );
//warteschlange.add( new Knoten(x-1, y) );
}
}
public void walk(){
move(1);
if(isTouching(Mauer.class)){
move(-1);
}
setRotation(0);
}
}