Tamagotchi Programmieren

  • Antworten:2
Gerald Krobath
  • Forum-Beiträge: 1

08.12.2012, 21:35:38 via Website

Guten Tag allerseits!

Ich habe erst vor kurzem angefangen, mich etwas mit Android Programmierung zu spielen. Da ich es meistens relativ langweilig finde "irgendwas" aus so einem Buch nach zu programmieren, dachte ich mir ich widme mich einem Langzeitprojekt. Ich will ein halbwegs passables Tamagotchi programmieren.

Womit ich mir nur immer recht schwer tue ist die Klasseneinteilung. Da es recht simpel sein soll, soll es am Anfang nur gefüttert werden können, es soll sich entwickeln können und es sollte schlafen können damit es nicht wegen dem Hunger nervt. Also...sollte es auch hungern können.

Sollte man dann für jedes eine Klasse machen?

Ich weiß zwar noch nicht wie man Daten in eine Datei schreibt oder ausliest bzw. ob ich es nicht über Datenbank machen soll, aber da kann man sich ja rein lesen.

Ich will übrigens nicht während der Laufzeit zeichnen (canvas) sondern, dass über Grafiken die meine Freundin zeichnet regeln, damits etwas besser aussieht.

Eventuell hat sich ja schon mal wer die Mühe gemacht und kann mir Tipps geben. Mehr will ich gar nicht (ne API oder sonst was. Vielleicht "soll" man ja bestimmte dinge verwenden, statt nur das Android SDK)

Danke schon mal.....ein Noob!

Antworten
Max Müller
  • Forum-Beiträge: 4

09.12.2012, 00:03:02 via Website

Sollte man dann für jedes eine Klasse machen?
Das Wichtigste ist wohl zunächst eine Klasse für das Lebewesen (nennt man das Lebewesen Tamagotchi?), neben Klassen für Android (z.B. Activity-Klasse). Je nach dem, wie komplex die Geschichte werden soll, könntest du dann einfach für jede der möglichen Aktionen eine Methode in der Lebewesen-Klasse implementieren, die eben verschiedene Attribute des Objekts verändert (Hunger, Müdigkeit, Entwicklungsstufe, ...).

Wenn es komplexer werden sollte, kannst du darüber nachdenken, das Ganze etwas "erweiterbarer" zu machen. Keine Ahnung was ein Tamagotchi alles kann, vielleicht verschiedene je nach Situation austauschbare Verhaltensweisen über das Strategie-Entwurfsmuster ermöglichen. Oder die möglichen Aktionen nicht nur als Methode, sondern als jeweils eigene Klassen, die von einer gemeinsamen abstrakten Superklasse/-interface erben/implementieren und so quasi ein Java-First-Class-Objekt (anders als Methoden) sind und dadurch beispielsweise flexibel zur Laufzeit aufgrund irgendwelche Ereignisse/Bedingungen hinzuzufügen oder wieder zu entfernen sind.

Für den Anfang wäre das aber wohl alles Overkill. Wenn du nicht schon ahnst, dass eine "naive" Implementierung der Features später zu Problemen oder schrecklichem Code führt, würde ich es zunächst nicht übertreiben mit dem Software-Engineering. :huh:

ob ich es nicht über Datenbank machen soll, aber da kann man sich ja rein lesen.
Android hat für das Persistieren von Zuständen einerseits SQLite zu bieten, da geht mit etwas SQL eigentlich schon fast alles, was man sich so wünschen kann. Würde ich für alles, was mehr als nur ein paar Zahlen oder Strings abspeichern muss, empfehlen. Wenn du nur einige wenig komplexe Dinge abspeichern möchtest (z.b. eine Zahl für Hunger, eine für Müdigkeit, eine für die aktuelle Entwicklungsstufe und eine für den Zeitpunkt der letzten Weiterentwicklung), würde ich wohl eher zu den SharedPreferences von Android greifen. Ein eigenes Dateiformat mit direktem Zugriff auf die Datei zu entwerfen ist hier eigentlich nicht nötig.


Ich will übrigens nicht während der Laufzeit zeichnen (canvas) sondern, dass über Grafiken die meine Freundin zeichnet regeln, damits etwas besser aussieht.
Auch die Grafiken müssen ja zur Laufzeit gezeichnet werden. Habe mit dem Android-Canvas noch nie gearbeitet, kann dir dazu nichts sagen. Eine Möglichkeit ist jedenfalls auch Libgdx (wird stark von Mario Zechner vorangetrieben, der wohl auch hier im Forum aktiv ist/war, wobei inzwischen auch andere mit daran arbeiten), damit haben wir schon sehr gute Erfahrungen gemacht. Ist eine Grafikbibliothek mit guter Performance. Habe ich bisher nur im "Fullscreen-Modus" genutzt, vielleicht (ich gehe stark davon aus!) ist es aber auch möglich, ein "Libgdx-Canvas" in eine gewöhnliche android-GUI einzubinden. Hat auch den Vorteil, dass du dein Programm nicht nur im Emulator oder auf der Hardware testen kannst, sondern neben dem Android-Projekt noch ein Desktop-Projekt existiert, das grafisch genau so aussieht und natürlich deutlich schneller startet.

Antworten
Florian Baierl
  • Forum-Beiträge: 6

10.12.2012, 09:09:55 via Website

Mach eine Klasse "Tamagotchi" oder wie auch immer deine Kreatur heißen soll.
Am besten gibst du dieser einen Enum mit verschiedenen Statusen:
1public enum status{
2 Sleeping, Awake, AwakeAndHungry, DoingSports, ...
3}

und dann eine Methode, die was macht wie:
1public void act() {
2 switch (status) {
3 case Sleeping:
4 System.out.println("Tamagotchi is sleeping.");
5 .........
6 break;
7
8 case Awake:
9 System.out.println("Tamagotchi is awake.");
10 .....
11 break;
12
13 .....
14 }

Antworten