Beiträge von hainz

    Danke für die Antwort :)











    Ja, es wird ein Array Enemies[] geben, die alle als Rechtecke definiert sind (alle 4 Seitenkoordinaten inkl. Länge und Breite), welche als Hitbox zu verstehen ist, in dem Rechteck (wird wohl auf kleine Quadrate hinauslaufen) kann man natürlich alles reinzeichnen.




    Eine Methode für die Prüfung if (bot.innerhalb(rechteck))... überlasse ich deiner Phantasie - das wird der einfachste Teil der Arbeit.




    Diese Methode wird tatsächlich nicht schwer, jedoch die Einteilung in Rechtecke. Der Spieler läuft wie im klassischen Snake frei übers Feld, wobei er am Rand startet und eine Spur hinter sich herzieht. Wenn die Spur wieder am Rand ankommt, wird der eingegrenzte Bereich inkl Spur eingfärbt (solange kein Gegner darin ist). Diese Fläche kann ein "komplexes" Vieleck sein, dass sich theoretisch in Rechtecke einteilen lassen würde, die man einzeln prüfen könnte.




    Alternativ könnte man aber auch virtuelle Pixel einführen, und dann zB definieren, dass der Spieler 10x10 Spielpixel groß ist etc. Dann hätte man ein Array Spielpixel[x][y], die alle eine Farbe speichern. Je feiner die Einteilung und je größer das Display, um so größer das Array und ich wüsst gern, ob regelmäßige Iteration über so ein großes Feld dann praktisch Kinderkram für ein typisches Android-Phone sind oder doch ordentlich Leistung+RAM fressen.




    Für die Ausgabe brauchst du einen Canvas, auf dem du die Elemente nacheinander draufmalst - übrigens immer wieder, wenn sich ein Bot bewegt hat. Dazu gibt's genug Beispiele in den API-Demos der Android-Doku.


    Noch weit von entfernt, aber ich werds mir merken ;)






    Bei der Grafik solltest du auch an unterschiedliche Bildschirmauflösungen denken - auf einem Tablet solltest du nicht die volle Auflösung nutzen.


    Guter Tipp, an Tablets habe ich noch gar nicht gedacht.


    Interessant wird es, wenn du viele Rechtecke und Bots rumlaufen hast - dann wird das Timing spannend... *g*






    Es werden zuerst die Bots berechnet (Enemey.move() welche auch Treffer auf Hindernisse wie Wände, Spieler und Spielerspur prüft), dann der Spieler und damit gleichzeitig die Neufärbung der Flächen. Wird sich dann später zeigen, wie das klappt ;)

    Hallo,


    habe noch keine Erfahrung in der Programmierung von Spielen und wollt das deshalb mal mit einem Android-Spiel probieren.
    Dazu nehme ich als Vorlage ein vorhandenes Spiel (ist ja nur für mich gedacht).
    Bei dem Spiel geht es darum rechteckige Bereiche einzugrenzen und dadurch einzufärben. Eingefärbte Bereiche können von den Gegner-Bots nicht überquert, d.h. sie prallen davon ab. Außerdem werden Bereiche nicht eingefärbt, wenn sich ein Gegner darin befindet, dann wird nur die gezogene Linie eingefärbt (nicht die ganze Fläche darin). Ziel ist es einen bestimmten %-Satz des Spielfelds einzufärben.
    Problem:
    Ich weiß nicht, wie ich die Einfärbungen als Daten darstellen soll.
    Variante 1:
    Macht es Sinn, das Spielfeld in Spielpixel einzuteilen? Dadurch könnte man einfach alle Spielpixel durchgehen, wenn Dinge wie Kollision geprüft werden sollen. Allerdings erfodert das eben eine Menge Daten (2-dimensionales Array mit mindestens einem Wert Farbe). Ist das effizient machbar?
    Variante 2:
    Darstellung der eingefärbten Bereiche durch Einteilung in Rechtecke. Das zu programmieren ist aufwendiger durch viele Sonderfälle etc.


    Variante 3:
    Über die Grafikengine? Ist sowas möglich? Kann man da Prüfungen wie "liegt der Punkt (x,y) in einem eingeschlossenen, nicht-konvexen Bereich" ?
    Variante 4:
    Weitere Vorschläge? Best practice?


    Freue mich auf Tipps und Hilfen :)


    PS1: http://www.androidpit.de/de/an…iew/Spieleentwicklung_101 hab ich schon gefunden ;)
    PS2: Bin noch Student, daher der Mangel an Praxiswissen ;)