Hamster Simulator rechnen lernen Parameter int

sam99

Neues Mitglied
Hallo Zusammen,
ich möchte eine Übung wiederholen, es ist keine Hausaufgabe, aber ich habe im Unterricht nichts verstanden und brauche Hilfe oder Tipps wo ich Hilfe erhalten kann.
Es ist simpel: der Hamster steht auf einem Feld ohne Körner. (er hat unendlich viele Körner im Maul)
Vor ihm sind zwei Felder auf denen Körner sind. Diese sollen voneinander substrahiert werden (große - kleine Zahl) und die Differenz davon auf Feld 4 ablegen.
Dies soll für mehrere Zeilen wiederholt werden und zum Schluss sollen all diese abgelegten Körner in einer Spalte miteinander addiert werden und auf einem Feld abgelegt werden.

Ich weiß nicht wie ich mit integer arbeite, bzw. wie ich anfangen soll.

Danke im Vorfeld!
 
Ist das Spielfeld immer genau 4 Felder breit?
Hier mal ein ähnliches Beispiel mit Kommentaren, was gemacht wird:
Java:
    public static void main(String[] args) {

        int[][] spielfeld = {
                {0, 10, 5, 0},
                {0, 2, 8, 0},
                {0, 7, 29, 0},
                {0, 12, 3, 0}
        };
        System.out.println(Arrays.deepToString(spielfeld));

        //Über jede Zeile iterieren
        for (int zeile = 0; zeile < spielfeld.length; zeile++) {
            //Über jeden Zeileneintrag iterieren
            for (int spalte = 0; spalte < spielfeld[0].length; spalte++) {
                //Wert für 4-tes Feld berechnen
                spielfeld[zeile][3] = Math.abs(spielfeld[zeile][1] - spielfeld[zeile][2]);
            }
        }
        System.out.println(Arrays.deepToString(spielfeld));
    }

Wenn das Feld beliebig breit ist, solltest du das leicht mit einer Schleife erweitern können 😉

Das kannst du ja erstmal auf dein Hamster-Spiel übertragen. Die Berechnung der Summe innerhalb einer Spalte kriegst du ja vllt. dann auch hin. hast du dafür einen Ansatz?
 
Vielen Dank für deine Antwort.
Mir ist nicht klar was für int eingeben werden muss innerhalb der main.

int anzahl = 0;
void main() {
while (kornDa())
vor();
int zahl1 = x;
vor();
int zahl2 = x;
if (zahl1 > zahl2){
vor();
gib(); //Differenz von Zahl1-Zahl2
else
gib(); //Differenz von Zahl2-Zahl1
}
}

13037
 
Also ,das Spielfeld sollte ungefähr so aussehen:

13038

Jetzt sammelt der Hamster alle Körner ein und platziert sie auf seinem Startfeld:

Java:
int richtung = 0;

void main() {
	rek0();
}

void rek0() {
	do {
		if (!maulLeer()) {
			while (!maulLeer()) {
				gib();
			}
			hl();
			hl();
		}
		rek1();
	} while (!maulLeer());
}

void rek1() {
	int b = richtung;
	if (vornFrei()) {
		vor();
		if (kornDa()) {
			nimm();
		}
		rek1();
		vor();
		hl();
		rek2();
		rek2();
		hr();

	} else {
		hl();
		hl();
	}
}

void rek2() {
	int b = richtung;
	if (vornFrei()) {
		vor();
		if (kornDa()) {
			nimm();
		}
		rek2();
		vor();
	} else {
		hl();
		hl();
	}
}

void hl() {
	linksUm();
	richtung = (richtung + 1) % 4;
}

void hr() {
	linksUm();
	linksUm();
	linksUm();
	richtung = (richtung + 3) % 4;
}


(Das mit der Richtung ist erst einmal uninteressant...)
 
Hier nochmal ohne "richtung" und mit einer Fehlerbehebung:

Java:
void main() {
	rek0();
}

void rek0() {
	do {
		if (!maulLeer()) {
			while (!maulLeer()) {
				gib();
			}
		}
		rek1();
		hl();
		hl();
	} while (!maulLeer());
}

void rek1() {
	if (vornFrei()) {
		vor();
		if (kornDa()) {
			nimm();
		}
		rek1();
		vor();
		hl();
		rek2();
		rek2();
		hr();

	} else {
		hl();
		rek2();
		rek2();
		hl();
	}
}

void rek2() {
	if (vornFrei()) {
		vor();
		if (kornDa()) {
			nimm();
		}
		rek2();
		vor();
	} else {
		hl();
		hl();
	}
}

void hl() {
	linksUm();
}

void hr() {
	linksUm();
	linksUm();
	linksUm();
}

Das Spielfeld muss ummauert sein, und der Hamster muss mit leerem Maul und seinem Rücken zur Mauer starten.

Anschließend kannst Du die Körner auf dem Startfeld abzählen.
 

Neue Themen


Zurück
Oben