Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
In der Schule machen wir gerade eben ein Projekt, bei dem jede Gruppe etwas programmieren soll.
Ich hab Tamagotchi gewählt, weil ich finde, dass es das einfachste von allen ist.
Könnt ihr mir da vllt. helfen? Bin nämlich nicht gerade gut x)
Vielen Dank schonmal im vorraus
Hier ist die "Angabe":
Es soll verschiedene Zustände annehmen können (glücklich, hungrig, gelangweilt, tot,...). Zustände sollen am Bildschirm durch Anzeige entsprechender Bilder dargestellt werden. Mögliche Erweiterung: Integration eines Zeitgebers (tick() als auslösende Aktion).
Klingt ganz nach einem sogenannten Automaten. Die verschiedenen möglichen Zustände hast du ja schon gegeben, also überlege dir als nächstes wie der Tamagotchi von einem Zustand in einen anderen Zustand wechselt. Das könnte zum Bespiel so aussehen:
aktueller Zustand: hungrig Ereignis: die Füttern-Taste wird gedrückt Ausgabe: ein lachender Smily neuer Zustand: glücklich
aktueller Zustand: hungrig Ereignis: es sind 3 Tage seit dem letzten Füttern vergangen Ausgabe: Bild eines Grabsteins neuer Zustand: tot
aktueller Zustand: glücklich Ereignis: jemand zeigt dem Tamagotchi eine Briefmarkensammlung Ausgabe: ein schlafender Smily neuer Zustand: gelangweilt
...und so weiter. Wenn du diese ganzen Zustandsübergänge ersteinmal festgeschrieben hast, dann weisst du schonmal was du eigentlich programmieren möchtest. Und wenn es später beim wie hakt, dann frage halt einfach nochmal hier im Forum nach.
aktueller Zustand: müde Ereignis: von planlosem Studenten ziellose und unkonkrete Fragen gestellt Ausgabe: Nicht-leere Menge Fragezeichen über dem Kopf neuer Zustand: frustriert
aktueller Zustand: frustriert Ereignis: Planlosigkeit des Studenten verfestigt sich, weil nicht einmal elementare Kenntnisse vorhanden sind Ausgabe: Faregzeichen vermehren sich explosionsartig neuer Zustand: genervt
aktueller Zustand: genervt Ereignis: Computerabsturz Ausgabe: Blue-Screen neuer Zustand: tot
ähmn das hast du Falsch verstanden. Der Bereich Hausaufgaben ist nicht dazu da dir kostenlos deine Hausübung zu machen.
Wir helfen gerne bei konkreten Fragen, manche machen auch Übungen gegen Bezahlung aber die Lösung gibt dir hier sicher keiner...
Das ist ein Projekt, dass ich auch umsetzen möchte =)
Die Idee dazu kam mir, als ich mich in der Berufsschule mit dem StateDesignPattern beschäftigen sollte. Das ist ein Entwurfsmuster, wo ein Objekt verschiedene Zustände annehmen kann.
Programmiert habe ich das am Beispiel eines Geldautomaten (Programm siehe unten).
Aber das Prinzip lässt sich auch auf ein Tamagotchi anwenden!
Denn ein Tamagotchi ist ja auch nur ein Objekt, dass verschiedene Zustände annehmen kann (und durch ein Bild dargestellt wird)
Bevor ich mich da ran mache, werde ich mich aber erst durch mein Java Buch arbeiten, aber vielleicht inspiriert dich mein Geldautomaten Programm bei der Lösung des Problems!
Und wenn du nach StateDesignPattern suchst findest du im Netz auch gute Beispiele.
Hier ein Bildchen, welche Zustände der Geldautomat annehmen kann und in welchen Zustand er von welchem Zustand aus wechseln kann:
Java:
package tutorials.designPatterns.state;
public class Geldautomat {
private String name;
private Zustand aktuellerZustand;
public Zustand zustandOnline;
public Zustand zustandOffline;
public Zustand zustandOwned;
public Geldautomat(String name) {
zustandOnline = new ZustandAn(this);
zustandOffline = new ZustandAus(this);
zustandOwned = new ZustandHacked(this);
this.name = name;
this.aktuellerZustand = zustandOffline;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getZustand() {
return this.aktuellerZustand.toString();
}
public void setZustand(Zustand neuerZustand) {
this.aktuellerZustand = neuerZustand;
}
public void schalteEin() {
// TODO Auto-generated method stub
aktuellerZustand.schalteEin();
}
public void schalteAus() {
// TODO Auto-generated method stub
aktuellerZustand.schalteAus();
}
public void gibGeld() {
// TODO Auto-generated method stub
aktuellerZustand.gibGeld();
}
public void hackMe() {
// TODO Auto-generated method stub
aktuellerZustand.hackMe();
}
}
Java:
package tutorials.designPatterns.state;
public class Treiber {
public static void main(String[] args) {
/**
* Ein Programm, mit dem ich das Entwurfsmuster 'StateDesignPattern' verstehen wollte.
* @author fresh
* @version 1.0
*/
Geldautomat geldmaster5000 = new Geldautomat ("Geldmaster 5000");
System.out.println("************************************");
System.out.println("Willkommen beim " + geldmaster5000.getName());
System.out.println("************************************\n");
// Testlauf
geldmaster5000.schalteEin();
geldmaster5000.schalteEin();
geldmaster5000.schalteAus();
geldmaster5000.schalteAus();
geldmaster5000.schalteEin();
geldmaster5000.gibGeld();
geldmaster5000.gibGeld();
geldmaster5000.schalteAus();
geldmaster5000.schalteEin();
geldmaster5000.hackMe();
geldmaster5000.gibGeld();
geldmaster5000.gibGeld();
geldmaster5000.schalteEin();
geldmaster5000.gibGeld();
geldmaster5000.schalteAus();
geldmaster5000.gibGeld();
geldmaster5000.schalteEin();
geldmaster5000.gibGeld();
}
}
Java:
package tutorials.designPatterns.state;
public interface Zustand {
public void schalteEin();
public void schalteAus();
public void gibGeld();
public void hackMe();
}
Java:
package tutorials.designPatterns.state;
public class ZustandAn implements Zustand {
private Geldautomat automat;
public ZustandAn(Geldautomat automat) {
this.automat = automat;
}
@Override
public void gibGeld() {
// TODO Auto-generated method stub
System.out.println("100€ werden ausgegeben");
}
@Override
public void schalteEin() {
// TODO Auto-generated method stub
System.out.println("Das Gerät ist bereits eingeschaltet");
}
@Override
public void schalteAus() {
// TODO Auto-generated method stub
System.out.println("Das Gerät wird ausgeschaltet");
automat.setZustand(automat.zustandOffline);
}
@Override
public void hackMe() {
// TODO Auto-generated method stub
System.out.println("Starte Exploit");
System.out.println("011011100 000111001 10111010 01001010");
System.out.println("Gerät wurde gehacked");
automat.setZustand(automat.zustandOwned);
}
}
Java:
package tutorials.designPatterns.state;
public class ZustandAus implements Zustand {
private Geldautomat automat;
public ZustandAus(Geldautomat automat) {
this.automat = automat;
}
@Override
public void gibGeld() {
// TODO Auto-generated method stub
System.out.println("Geldausgabe nicht möglich. Automat ist ausgeschaltet.");
}
@Override
public void schalteEin() {
// TODO Auto-generated method stub
System.out.println("Das Gerät wird eingeschaltet");
automat.setZustand(automat.zustandOnline);
}
@Override
public void schalteAus() {
// TODO Auto-generated method stub
System.out.println("Das Gerät ist bereits ausgeschaltet");
}
@Override
public void hackMe() {
// TODO Auto-generated method stub
System.out.println("Das Gerät ist ausgeschaltet und kann nicht gehacked werden");
}
}
Java:
package tutorials.designPatterns.state;
public class ZustandHacked implements Zustand {
private Geldautomat automat;
public ZustandHacked(Geldautomat automat) {
this.automat = automat;
}
@Override
public void gibGeld() {
// TODO Auto-generated method stub
System.out.println("200€ werden ausgegeben");
}
@Override
public void schalteEin() {
// TODO Auto-generated method stub
System.out.println("Das Gerät ist bereits eingeschaltet (und wurde gehacked)");
}
@Override
public void schalteAus() {
// TODO Auto-generated method stub
System.out.println("Das Gerät wird ausgeschaltet");
automat.setZustand(automat.zustandOffline);
}
@Override
public void hackMe() {
// TODO Auto-generated method stub
System.out.println("Automat wurde bereits gehacked");
}
}
Was du brauchst ist also ein Tamagotchi Objekt, ein Interface und für jeden Zustand eine Klasse
Warum soll er das machen... die sind doch froh dass sie die Schüler los sind die sowieso nur die Übungen kopieren... die zukünfigten Arbeitgeber werden dann eine Freude haben...
hehe....aber nicht wegen der Lösungen, sondern wegen den Aufgaben xD
Da kommt dann plötzlich in der Schulaufgabe eine Fragestellung hier ausm Forum dran ^^