Java Tamagochi programieren

ilop

Mitglied
Hallo meine Damen und Herren 🙂
Ich habe ein Problem, nämlich sollen wir im Informatikunterricht des 11. Jahrgangs einen Java Tamagochi programieren. Der Hacken an der Sache ist das wir das nicht so ganz hinbekommen bzw. verstehen.
Unser Programm:

Java:
public class StartLifeDemo { 

public static void main(String[] args) { 

Tamagochi Knuddel = new Tamagochi();


 while (Knuddel.fuettere()==0) {

 while(Knuddel.verrateAlter()==0){
 Knuddel.fuettere(); Knuddel.bespiele(); 
 Knuddel.legSchlafen();
} 
 System.out.print(" Alter: " + Knuddel.verrateAlter()); 
 System.out.print(" Zustand: " + Knuddel.beobachte()); 
 System.out.print(" Punkte: " + Knuddel.sageScore()); 
 System.out.println(); Knuddel.fuettere(); 



 System.out.print(" Alter: " + Knuddel.verrateAlter()); 
 System.out.print(" Zustand: " + Knuddel.beobachte()); 
 System.out.print(" Punkte: " + Knuddel.sageScore()); 
 System.out.println(); 

 while(Knuddel.beobachte()==0){
 Knuddel.fuettere(); Knuddel.bespiele(); 
 Knuddel.legSchlafen();
} 
 System.out.print(" Alter: " + Knuddel.verrateAlter()); 
 System.out.print(" Zustand: " + Knuddel.beobachte()); 
 System.out.print(" Punkte: " + Knuddel.sageScore()); 
 System.out.println(); Knuddel.fuettere(); 



 System.out.print(" Alter: " + Knuddel.verrateAlter()); 
 System.out.print(" Zustand: " + Knuddel.beobachte()); 
 System.out.print(" Punkte: " + Knuddel.sageScore()); 
 System.out.println();

 while(Knuddel.sageScore()==0){
 Knuddel.fuettere(); Knuddel.bespiele(); 
 Knuddel.legSchlafen();
} 
 System.out.print(" Alter: " + Knuddel.verrateAlter()); 
 System.out.print(" Zustand: " + Knuddel.beobachte()); 
 System.out.print(" Punkte: " + Knuddel.sageScore()); 
 System.out.println(); Knuddel.fuettere(); 



 System.out.print(" Alter: " + Knuddel.verrateAlter()); 
 System.out.print(" Zustand: " + Knuddel.beobachte()); 
 System.out.print(" Punkte: " + Knuddel.sageScore()); 
 System.out.println();

}
 }
}


So weit so gut, ich bitte hier nicht darum das das jemand für mich macht ich möchte nur ein paar Tipps haben bzw. Lösungsansätze.
(Wenn man das ganze über die Konsole startet kommen wir auf ein Alter von 4, Zustand 21 (30 ist das beste) und ca. 200-300 Punkte, Ziel ist aber ein möglichst hohes Alter und ca. 1000 Punkte oder noch mehr)
Ich Hoffe ihr könnt mir/uns helfen und wenn ihr noch Informationen braucht oder ich was vergessen habe (ja ich bin kein Informatik Ass, ich gebs zu) sagt bescheid.
Danke im Vorraus!!
:toll:
 
Zuletzt bearbeitet von einem Moderator:
icon4.gif
Java™ Quelltext ist bitte in
Java:
[/B]-Tags zu schreiben:[/SIZE] [noparse][code=Java]hier Java Code einfügen
[/noparse]


und die Frage war?
 
"So weit so gut, ich bitte hier nicht darum das das jemand für mich macht ich möchte nur ein paar Tipps haben bzw. Lösungsansätze."
ergo wie kriegen wir es hin das der tamagochi viel Punkte / alter / zustand bekommt.
 
1. Konventionen einhalten: variablen/referenenzen lowerCamelCase schreiben
2. Kennt wohl keiner von uns die Klasse Tamagochi
3. Quelltext einrücken.

@Noctarius: Ja
 
Wie sieht denn Eure Tamagochi-Klasse aus?

Und rückt den Code bitte mal vernünftig ein, IDEs machen das für Euch auch auf Knopfdruck.
 
sorry sorry, ganz langsam, was sollen wir genau machen 😀? Ich versteh keine Fachwörter ich bin nur ein armer kleiner Informatik noob, nicht vergessen. ;D
 
[c]Knuddel[/c] wird in lowerCamelCase so geschrieben: [c]knuddel[/c]
Dann sollt ihr gescheit einrücken:
Java:
if(a==b) {
while(true) {
doSomething();
}
 }
liest sich eingerückt einfach viel besser/einfacher:
Java:
if(a==b) {
    while(true) {
        doSomething();
    }
}

und dann brauchen wir den Source von der Klasse Tamagochie, weil wir diese Klasse nicht kennen.
 
Du hast die Klasse Tamagochi nicht gepostet. Nur eine unformatierte Rahmenklasse.

Edit: Noch ein genereller Tipp: Codeverdopplung vermeiden. Da oben steht oftmals

Java:
 System.out.print(" Alter: " + Knuddel.verrateAlter()); 
 System.out.print(" Zustand: " + Knuddel.beobachte()); 
 System.out.print(" Punkte: " + Knuddel.sageScore()); 
 System.out.println();

Das könnte man auch in eine Methode verlagern und diese aufrufen.

Nur eine Anweisung pro Zeile!

Nameskonventionen beachten.
 
Zuletzt bearbeitet:
Ich hab jetzt mal Euren Code genommen und formatieren lassen (Ctrl-A + Ctrl-Shift-F)

->

Java:
package forumProblems;

public class TamagocciRun {

    public static void main(String[] args) {

        Tamagochi Knuddel = new Tamagochi();

        while (Knuddel.fuettere() == 0) {

            while (Knuddel.verrateAlter() == 0) {
                Knuddel.fuettere();
                Knuddel.bespiele();
                Knuddel.legSchlafen();
            }
            System.out.print(" Alter: " + Knuddel.verrateAlter());
            System.out.print(" Zustand: " + Knuddel.beobachte());
            System.out.print(" Punkte: " + Knuddel.sageScore());
            System.out.println();
            Knuddel.fuettere();

            System.out.print(" Alter: " + Knuddel.verrateAlter());
            System.out.print(" Zustand: " + Knuddel.beobachte());
            System.out.print(" Punkte: " + Knuddel.sageScore());
            System.out.println();

            while (Knuddel.beobachte() == 0) {
                Knuddel.fuettere();
                Knuddel.bespiele();
                Knuddel.legSchlafen();
            }
            System.out.print(" Alter: " + Knuddel.verrateAlter());
            System.out.print(" Zustand: " + Knuddel.beobachte());
            System.out.print(" Punkte: " + Knuddel.sageScore());
            System.out.println();
            Knuddel.fuettere();

            System.out.print(" Alter: " + Knuddel.verrateAlter());
            System.out.print(" Zustand: " + Knuddel.beobachte());
            System.out.print(" Punkte: " + Knuddel.sageScore());
            System.out.println();

            while (Knuddel.sageScore() == 0) {
                Knuddel.fuettere();
                Knuddel.bespiele();
                Knuddel.legSchlafen();
            }
            System.out.print(" Alter: " + Knuddel.verrateAlter());
            System.out.print(" Zustand: " + Knuddel.beobachte());
            System.out.print(" Punkte: " + Knuddel.sageScore());
            System.out.println();
            Knuddel.fuettere();

            System.out.print(" Alter: " + Knuddel.verrateAlter());
            System.out.print(" Zustand: " + Knuddel.beobachte());
            System.out.print(" Punkte: " + Knuddel.sageScore());
            System.out.println();

        }
    }
}

Dann habe ich mal die Namenskonventionen beachtet:

Java:
package forumProblems;

public class TamagocciRun {

    public static void main(String[] args) {

        Tamagochi knuddel = new Tamagochi();

        while (knuddel.fuettere() == 0) {
            while (knuddel.verrateAlter() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            System.out.print(" Alter: " + knuddel.verrateAlter());
            System.out.print(" Zustand: " + knuddel.beobachte());
            System.out.print(" Punkte: " + knuddel.sageScore());
            System.out.println();
            knuddel.fuettere();

            System.out.print(" Alter: " + knuddel.verrateAlter());
            System.out.print(" Zustand: " + knuddel.beobachte());
            System.out.print(" Punkte: " + knuddel.sageScore());
            System.out.println();

            while (knuddel.beobachte() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            System.out.print(" Alter: " + knuddel.verrateAlter());
            System.out.print(" Zustand: " + knuddel.beobachte());
            System.out.print(" Punkte: " + knuddel.sageScore());
            System.out.println();
            knuddel.fuettere();

            System.out.print(" Alter: " + knuddel.verrateAlter());
            System.out.print(" Zustand: " + knuddel.beobachte());
            System.out.print(" Punkte: " + knuddel.sageScore());
            System.out.println();

            while (knuddel.sageScore() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            System.out.print(" Alter: " + knuddel.verrateAlter());
            System.out.print(" Zustand: " + knuddel.beobachte());
            System.out.print(" Punkte: " + knuddel.sageScore());
            System.out.println();
            knuddel.fuettere();

            System.out.print(" Alter: " + knuddel.verrateAlter());
            System.out.print(" Zustand: " + knuddel.beobachte());
            System.out.print(" Punkte: " + knuddel.sageScore());
            System.out.println();

        }
    }
}

und dann hab ich mal Redundanzen versucht zu entfernen (Vier Zeilen markieren, Refactor -> Extract Method -> Namen eingeben.):

Java:
package forumProblems;

public class TamagocciRun {

    public static void main(String[] args) {

        Tamagochi knuddel = new Tamagochi();

        while (knuddel.fuettere() == 0) {
            while (knuddel.verrateAlter() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            berichteVonKnuddel(knuddel);
            knuddel.fuettere();
            berichteVonKnuddel(knuddel);

            while (knuddel.beobachte() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            berichteVonKnuddel(knuddel);
            knuddel.fuettere();
            berichteVonKnuddel(knuddel);

            while (knuddel.sageScore() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            berichteVonKnuddel(knuddel);
            knuddel.fuettere();
            berichteVonKnuddel(knuddel);
        }
    }

    private static void berichteVonKnuddel(Tamagochi knuddel) {
            System.out.print(" Alter: " + knuddel.verrateAlter());
            System.out.print(" Zustand: " + knuddel.beobachte());
            System.out.print(" Punkte: " + knuddel.sageScore());
            System.out.println();
    }

}

Dann habe ich die Methode verschönert und eine Titel-Information hinzugefügt:

Java:
package forumProblems;

public class TamagocciRun {

    public static void main(String[] args) {

        Tamagochi knuddel = new Tamagochi();

        while (knuddel.fuettere() == 0) {
            while (knuddel.verrateAlter() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            berichteVonKnuddel(knuddel, "nach Alter-Schleife");
            knuddel.fuettere();
            berichteVonKnuddel(knuddel, "nach Alter-Schleife und fuettere()");

            while (knuddel.beobachte() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            berichteVonKnuddel(knuddel, "nach beobachte-Schleife");
            knuddel.fuettere();
            berichteVonKnuddel(knuddel, "nach beobachte-Schleife und fuettere()");

            while (knuddel.sageScore() == 0) {
                knuddel.fuettere();
                knuddel.bespiele();
                knuddel.legSchlafen();
            }
            berichteVonKnuddel(knuddel, "nach score-Schleife");
            knuddel.fuettere();
            berichteVonKnuddel(knuddel, "nach score-Schleife und fuettere()");
        }
    }

    private static void berichteVonKnuddel(Tamagochi knuddel, String titel) {
        System.out.print("Bericht über Knuddel - " + titel + " :\n"
                + "    Alter  : " + knuddel.verrateAlter() + "\n"
                + "    Zustand: " + knuddel.beobachte() + "\n"
                + "    Punkte : " + knuddel.sageScore() + "\n");
    }

}

Schön ist das ganze immer noch nicht

- Englisch/Deutsch-Gemisch
- seltsame Programmlogik
- statische Methoden
- Vielleicht könnte einiges in die Tamagochi-Klasse
- ...

aber schöner als vorher ist es alle Mal.

Edit: Die genannten Befehle stammen aus Eclipse.
 
Zuletzt bearbeitet:

Zurück
Oben