Hallo miteinander!
Ich muss hier wieder einmal einfache Aufgaben lösen und es hapert immer noch an der Umsetzung in Java.
Gearbeitet wird noch mit Greenfoot. Die Aufgabe:
Das Huhn Eier suchen lassen und sie dann ausbrüten (durch ein anderes Bild ersetzen, diese Aufgabe hab ich schon gelöst). Nun soll das Huhn aber auch aufhören bereits ausgebrütete Eier immer wieder ausbrüten zu wollen. Natürlich geht das einfach, in dem ich das Ei frage, ob es bereits ausgebrütet ist oder nicht und dementsprechend meine Methode ausführe oder halt nicht.
Ich bin aber immer noch in der Phase, in der ich erst herausfinde, wie Java eigentlich funktioniert.
Hier mal der Code, die wichtigen Stellen hab ich markiert, irrevante Methoden der Übersichtlichkeit halber entfernt. Das eigentliche Problem liegt in der Klasse Barnfield (ganz unten)
Klasse Egg:
Klasse Chicken:
Barnfield, Subklasse von Chicken:
Ich muss hier wieder einmal einfache Aufgaben lösen und es hapert immer noch an der Umsetzung in Java.
Gearbeitet wird noch mit Greenfoot. Die Aufgabe:
Das Huhn Eier suchen lassen und sie dann ausbrüten (durch ein anderes Bild ersetzen, diese Aufgabe hab ich schon gelöst). Nun soll das Huhn aber auch aufhören bereits ausgebrütete Eier immer wieder ausbrüten zu wollen. Natürlich geht das einfach, in dem ich das Ei frage, ob es bereits ausgebrütet ist oder nicht und dementsprechend meine Methode ausführe oder halt nicht.
Ich bin aber immer noch in der Phase, in der ich erst herausfinde, wie Java eigentlich funktioniert.
Hier mal der Code, die wichtigen Stellen hab ich markiert, irrevante Methoden der Übersichtlichkeit halber entfernt. Das eigentliche Problem liegt in der Klasse Barnfield (ganz unten)
Klasse Egg:
Java:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class Egg extends Actor
{
public boolean hatched;
public Egg () {
hatched = false;
}
public void hatch() {
hatched = true;
GreenfootImage hatched_egg = new GreenfootImage("egg_hatched.png");
setImage(hatched_egg);
}
public boolean isHatched() {
return hatched;
}
}
Klasse Chicken:
Java:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class Chicken extends Actor
{
private static final int EAST = 0, WEST = 1, NORTH = 2, SOUTH = 3;
private int direction;
private GreenfootImage chickenRight, chickenLeft;
public Chicken () {
chickenLeft = getImage();
chickenRight = new GreenfootImage(chickenLeft);
chickenRight.mirrorHorizontally();
setDirection(WEST);
}
/**
* Check whether there is an egg in the same cell as we are.
*/
public boolean foundEgg() {
return getOneObjectAtOffset(0, 0, Egg.class) != null;
}
public void layEgg() {
getWorld().addObject(new Egg (), getX (), getY ());
}
public Egg takeEgg() {
Actor egg_actor = getOneObjectAtOffset(0, 0, Egg.class);
if (egg_actor != null) {
return (Egg) egg_actor;
} else {
ShowError ("There was no egg in this cell");
return null;
}
}
}
Barnfield, Subklasse von Chicken:
Java:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class Barnfield extends Chicken
{
//public boolean eggUnhatched = foundUnhatchedEgg ();
private int eggsHatched;
/**
* Act - do whatever the Fryde wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act() {
hatchEggs ();
}
/**
* Hatch an egg.
*/
public void hatchEgg () {
Egg egg_found = takeEgg ();
egg_found.hatch();
egg_found.hatched = true;
eggsHatched++;
}
/**
* Tells Fryde if she has
* has found an unhatched egg
*/
public boolean foundUnhatchedEgg () { // dies sollten wir selbst erstellen. was mach ich hier falsch?
if (hatched) { // hatched kann nicht gefunden werden, obwohl als public deklariert...
return false; //.... dass es so nicht geht weiß ich, nur wie krieg ich den wert abgefragt?
}
return true;
}
/**
* Turn right
*/
public void turnRight() {
turn (); // from Barnfield
turnLeft (); // inherited from Chicken
}
public boolean eggAhead () {
if (canMove ()) {
move ();
if (foundEgg ()) { // found an egg, have to go back
moveBackwards ();
return true;
}
else { // there was no egg
moveBackwards ();
return false;
}
}
else
return false;
}
private void hatchEggs () {
lookForEgg ();
if (canMove ()) {
move ();
}
if (foundEgg ()) {
hatchEgg ();
}
}
}
Zuletzt bearbeitet: