Java hamster problem

hallo ich hab ein kleines problemchen und zwar muss ich für die schule den Java hamster programmieren und dafür haben wir diese aufgabe bekommen: der hamster steht in der mitte eines 11*11 großen feldes von dort aus soll er mit dem zufallsgenerator bestimmen wo er lang gehen soll (int zufall:wink: ( zufall = (int) (Math.random()*3):wink:
dabei steht für 0 dass er vorwärts gehen soll, für 1 soll er nach links gehen und für 2 nach rechts
auf jeder kachel soll er je ein korn ablegen und falls er eine kachel 2mal abläuft soll nicht noch ein korn abgelegt werden sonder immer nur ein korn auf einer kachel
kann mir einer helfen?
an alle helfenden schon mal ein großes danke schön

kann mir einer helfen?

Hallo Peach1601,

was genau ist denn jetzt dein Problem?
Du hast hier nur die Aufgabenstellung geschrieben, aber nicht, woran es scheitert.
Ein paar Ansätze wären:

  • das Feld könnte ein zweidimensionaler boolean-Array sein
  • dabei steht ‚false‘ für noch kein Korn abgelegt, ‚true‘ für Korn schon abgelegt
  • Ist der Vorrat der Körner begrenzt oder wann soll das Programm terminieren?

Viele Grüße,

Tobias.

ist schon ok ich habs geschafft
aber trotzdem danke dass du mir helfen wolltest

Hallo Peach1601,

leider bin ich aus deiner Anfrage nicht ganz schlau geworden. Du hast keine Abbruchbedingung beschrieben. Ich habe einfach mal die Annahme gemacht, dass der Hamster bis zu einen Rand laufen soll. Vielleicht hilft es dir ja ein bisschen weiter :wink:. Paste einfach den folgenden Code in eine Main Methode und probiere ob er dir taugt.

boolean[][] field = new boolean[10][10];

int x = 5, y = 5;
field[5][5] = true;
boolean borderReached = false;
while (!borderReached){
// Ausgabe der Position, falls diese true ist
if (field[x][y])
System.out.println("Position: " + x + " " + y);

// Bewegungsrichtung ermitteln
int zufall = (int) (Math.random()*3);

switch (zufall) {
case 0: //forward
x = x+1;
break;
case 1: //left
y = y -1;
break;
case 2: // right
y = y +1;
break;
default:
break;
}

if ( (x > 9 || y > 9 ) || (x == 0 || y == 0) )
borderReached = true;

// feld auf true setzen, fall es noch ist
if (!borderReached && !field[x][y]){
field[x][y] = true;
}

unter http://subs.emis.de/LNI/Proceedings/Proceedings60/GI… findest Du gute Infos