foutmelding bij kat naar rechts laten draaien met pijltjes

Plaats reactie
Bjorn Elsing
Berichten: 4
Lid geworden op: 01-02-2017 14:35

foutmelding bij kat naar rechts laten draaien met pijltjes

Bericht door Bjorn Elsing » 03-02-2017 09:09

ik krijg een foutmelding als ik de kat naar rechts wil laten draaien met de pijltjes toetsen.
ik heb dit staan

public void act()
{
if (canSeeMouse()) {
eatMouse();
}
else {
if (Greenfoot.isKeyDown("left")) {
turnLeft();
}
if (Greenfoot.isKeyDown("right")) {
turnRight();
}
}
}

Jordy
Berichten: 2
Lid geworden op: 01-02-2017 10:36

Bericht door Jordy » 03-02-2017 09:21

Je moet je "
if (Greenfoot.isKeyDown("left")) {
turnLeft();
}
if (Greenfoot.isKeyDown("right")) {
turnRight(); "
volgens mij voor "
{
if (canSeeMouse()) {
eatMouse();
}
zetten.
En je kan die kat volgens mij laten draaien door turn(graden)

Jordy
Berichten: 2
Lid geworden op: 01-02-2017 10:36

Bericht door Jordy » 03-02-2017 09:24

Op het moment krijg ik hem redelijk aan de praat alleen is als die kat naar beneden loopt in spiegelbeeld

Mijn code is:

import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)

/**
* Kitty, likes mice, hates dogs!
*
*/
public class Kitty extends Animal
{
int miceEaten = 0;

public Kitty()
{
}

/**
* Do what is necessary!
*/
public void act()
{
if (Greenfoot.isKeyDown("left")) {
turnLeft();
}
if (Greenfoot.isKeyDown("right")) {
turn(90);
}
if (Greenfoot.isKeyDown("up")) {
turn(90);
}
if (Greenfoot.isKeyDown("down")) {
turn(-90);
}

if (canSeeMouse()) {
eatMouse();
}
else {
if (canMove()) {
move();
}
else {
turnLeft();
}
}
}

/**
* Return true if the Kitty can see a mouse.
*/
public boolean canSeeMouse() {
return (canSee(Mouse.class));
}

/**
* Eat the mouse the Kitty can see (if there is a mouse)
*/
public void eatMouse() {
eat(Mouse.class);
miceEaten++;
}
}

Bjorn Elsing
Berichten: 4
Lid geworden op: 01-02-2017 14:35

Bericht door Bjorn Elsing » 03-02-2017 09:30

dit is hem volgens mij helemaal

import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)

/**
* Kitty, likes mice, hates dogs!
*
*/
public class Kitty extends Animal
{
int miceEaten = 0;

public Kitty()
{
}

/**
* Do what is necessary!
*/
public void act()
{
if (Greenfoot.isKeyDown("left")) {
turnLeft();
}
if (Greenfoot.isKeyDown("right")) {
turn(90);
}
if (Greenfoot.isKeyDown("up")) {
turn(180);
}
if (Greenfoot.isKeyDown("down")) {
turn(-180);
}

if (canSeeMouse()) {
eatMouse();
}
else {
if (canMove()) {
move();
}
else {
turnLeft();
}
}
}

/**
* Return true if the Kitty can see a mouse.
*/
public boolean canSeeMouse() {
return (canSee(Mouse.class));
}

/**
* Eat the mouse the Kitty can see (if there is a mouse)
*/
public void eatMouse() {
eat(Mouse.class);
miceEaten++;
}
}

admin
Site Admin
Berichten: 39
Lid geworden op: 01-02-2017 08:45

Mooiere oplossing

Bericht door admin » 06-02-2017 11:40

De oplossing met turn (graden) is mooi, maar dat turnRight niet werkt komt omdat dit in de klasse ANIMAL niet gedefinieerd is. Open de klasse animal maar eens en je ziet onderaan de code voor turnLeft.
Je ziet dat gewerkt wordt met windstreken.

Kopieer de hele void van turnLeft en dan daaronder plakken. Da verander je de 4 windstreken als volgt:

public void turnRight()
{
switch(this.getRotation()) {
case SOUTH :
setRotation(WEST);
break;
case EAST :
setRotation(SOUTH);
break;
case NORTH :
setRotation(EAST);
break;
case WEST :
setRotation(NORTH);
break;
default :
break;
}
}


Na compilen zul je zien dat de turnRight het nu wel doet.

JOR

Plaats reactie