Hi!
Ich muss mithilfe von ATMega2560 und AVR32 ein Spiel programmieren in
Microprozessortechnik. Unter Spielen ist gemeint Tetris, PingPong und
Snake. Allerdings sind diese raus, weil ich dazu einen SourceCode schon
besitze. Ich wollte in Richtung Sudoku, Quiz oder Kreuzworträtzel gehen,
mir wurde aber gesagt, dass es zu einfach ist. Spiele wie BubbleShooter
aber schon wieder zu kompliziert.
Könnte mir jemand, der schon mal ein Spiel programmiert hat mit AVR,
sagen welche Spiele nicht zu einfach und auch nicht zu kompliziert sind
zu programmieren? Ich kann den Aufwand nicht gut einschätzen und der
Prof will auch keine Hilfe sein.
Vielen Dank im Voraus!
Sudoku klingt gut, wenn du einen intelligenten Algorithmus zum
Generieren und Lösen erdenkst.
Auf PC ist das leicht: einfach Probieren; auf µC ist das leistungsmäßig
... sportlich.
Ansonten portiere doch einfach Doom. :-)
Ach so, hab ich vergessen hinzuschreiben. Ich studiere und
Microprozessortechnik ist mein Modul, das ich belegen muss. In AVR und
ATMega muss ich es programmieren, sonst falle ich durch.
Wilhelm M. schrieb:> Wie ist den das UserInterface? Leds und Taster?
Ich habe beides. Also ATMega2560 hat Tasten und LEDs. AVR32 hat dann den
Bildschirm, wo alles ausgestrahlt werden soll
Lukas T. schrieb:> Sudoku klingt gut, wenn du einen intelligenten Algorithmus zum> Generieren und Lösen erdenkst.> Auf PC ist das leicht: einfach Probieren; auf µC ist das leistungsmäßig> ... sportlich.> Ansonten portiere doch einfach Doom. :-)
Wieso Doom? Du schlägst auch ein Ego-Shooter Spiel vor, dabei habe ich
nichts anderes außer die beiden Sachen (ATMega und AVR) und der
Bildschirm ist extrem klein.
Wie soll das gehen ? :D
Also scheint die Aufgabe darin zu liegen, ein Spiel unabhängig vom
user-interface zu programmieren, oder? Wenn es auf beiden Plattformen
dasselbe Spiel sein soll ...
Ma Z. schrieb:> Also ATMega2560 hat Tasten und LEDs. AVR32 hat dann den> Bildschirm, wo alles ausgestrahlt werden soll
Ach Du meine Güte. Multiprozessor und dazu noch mit 2 völlig
verschiedenen. Das wird nix, versprochen.
Wie wäre es mit Candyland oder Candy Crush (ich weiß nicht, welches
davon dieses Handyspiel ist).
Ansonsten kenne ich von meinem alten Handy noch Reversi. Eventuell
könnte auch Go gehen. Oder Monopoly, wenn das mit dem Bildschirm
irgendwie geht.
Ma Z. schrieb:> jemand, der schon mal ein Spiel programmiert hat mit AVR
Da falle ich leider raus.
Ma Z. schrieb:> welche Spiele [sind] nicht zu einfach und auch nicht zu kompliziert
Das ist extrem relativ. Ein Hallo-Welt-Programmierer wird Snake als
Lebensaufgabe geben, Chris Sawyer könnte dir wahrscheinlich schnell
Rollercoaster Tycoon dafür programmieren. (Beides natürlich leicht
übertrieben)
Ma Z. schrieb:> welche Spiele nicht zu einfach und auch nicht zu kompliziert sind> zu programmieren?
Space Invaders. Man kann mit einem Alien anfangen und schrittweise
erweitern auf Punkte-Zählen, schießende Aliens, Alien-Gruppen,
Hindernisse, das Bonus-Raumschiff am oberen Rand, Extra-Waffen usw..
Schrittweise Entwickeln ist gut, weil man immer einen abgebbaren Stand
hat, der wenigstens zum Bestehen reichen sollte.
Ich verstehe deine Aufgabenstellung noch nicht.
Soll das Spiel sowohl auf einem ATMega2560 als auch einem AVR32
lauffähig sein, wobei das erstere dann ohne Bildschirm spielbar sein
soll?
Oder soll der ATMega2560 das Spiel ausführen (also den "backend"-Teil)
und der AVR32 (Anbindung via I2C/SPI/UART) für die Darstellung da sein?
Wenn Tetris schon raus is, dann programmier doch sowas wie Dr. Mario.
Das ist eine variante von Tetris, und bestimmt nicht all zu schwer
zu implementieren. Sollte auch in den RAM vom Mega gut passen.
Spielereien mit Texturen sind vermutlich bissl übertrieben. Aber wenn du
den AVR32 komplett für die Darstellung hast, kannst du evtl. prozedural
generierte Texturen erzeugen.
Aufwand:
- Setup der Entwicklungsumgebung und warm werden mit der Hardware
=> 1-2 Wochen
- Anbindung Mega2560<->AVR32 mit kleinem Protokoll usw.
=> 0.5-1 Wochen
- Implementierung Grafikausgabe mit API zum zeichnen von Linien
und Quadraten
=> 1 Wochen
- Implementierung der Spiele-Logik
=> 1 Woche
Das alles für den Fall, dass du dich schon grob aus kennst und die
Datenblätter und APIs zu den Chips und der C Standard-Bibliothek
lesen und verstehen kannst.
Dann schlag nochmal 25% Zeit drauf und wir haben 1.5 Monate.
Wenn du die Wochenenden dazu nimmst, und dich richtig rein beißt, dann
kann man das evtl. sogar in 2-3 Wochen schaffen. Ganz abhängig von
deinem
Sozialleben und weiteren Kursen die du besuchst.
@TO
Du hast mit deiner Aufgabenstellung 3 mögliche Spiele bekommen. Such dir
davon eins aus und gut!
Es hat einen technischen Grund wieso es eins von denen sein soll und
Sudoku als zu einfach eingestuft werden. Wenn du mit der Aufgabe fertig
bist wirst du das auch verstehen....hier ist der Weg das Ziel!
Außerdem ist es ja schön wenn du bereits fertigen Code
hast....allerdings solltest du es auch schon selber machen ;)
> Könnte mir jemand, der schon mal ein Spiel programmiert hat mit AVR,> sagen welche Spiele nicht zu einfach und auch nicht zu kompliziert sind> zu programmieren?
Also wenn ich den Level auf dem sich deine Skills so bewegen richtig
einschaetze dann kommt ausschliesslich Mondlader in frage.
Vorausgesetzt natuerlich du hast dein Physik-Modul schon bestanden.
Sollte du das als zu schwierig empfinden solltest du aufgeben weil deine
Vorfahren das schonmal auf einem Taschenrechner programmiert haben.
http://www.hpmuseum.org/software/35moonla.htm
Olaf
>Es hat einen technischen Grund wieso es eins von denen sein soll und>Sudoku als zu einfach eingestuft werden.
Es soll keins von denen sein, lies mal richtig.
Im übrigen frage ich mich auch wie gut du (TO) schon programmieren
kannst?
Kommst du mit den Datentypen klar, Arrays machen keine Angst, Schleifen
und weitere Kontrollstrukturen sind bekannt und werden beherrscht?
Wenn du das noch nicht drauf hast, dann gilt das:
>Ein Hallo-Welt-Programmierer wird Snake als>Lebensaufgabe geben, Chris Sawyer könnte dir wahrscheinlich schnell>Rollercoaster Tycoon dafür programmieren. (Beides natürlich leicht>übertrieben)
Gruß J
Ma Z. schrieb:> Ach so, hab ich vergessen hinzuschreiben. Ich studiere und> Microprozessortechnik ist mein Modul, das ich belegen muss. In AVR und> ATMega muss ich es programmieren, sonst falle ich durch.
Ah ja.
Du suchst nach einer leichten Lösung dafür, daß du durch die nächste
Prüfung kommst. Eigentlich sollte man dir die Ohren lang ziehen, denn
das eigentliche Ziel des Studierens besteht darin, den eigenen Geist
zu üben und eigene Fähigkeiten zu erwerben. Wer immezu nur guttenbergt,
der kommt zwar durch die Prüfungen, ist hinterher aber eine Flasche mit
Diplom, also zu NICHTS zu gebrauchen. Das sind dann die, die binnen 6
Monaten aus den Firmen wieder rausfliegen.
Aber ich geb dir mal ne Anregung: DALEKS. Spielprinzip: man hat ein
Spielfeld von x mal y Feldern, wo eine Spielfigur per Zufall plaziert
wird. Mit den 4 Cursortasten kann man diese Figur zu einem der
angrenzenden Felder bewegen. Bewegung nur gerade wie der Turm beim
Schach.
Dazu kommen 1 bis n Gegnerfiguren (ebenfalls per Zufall plaziert), die
mit jedem Schritt der Spielfigur ebenfalls einen Schritt in Richtung der
Spielfigur machen. Diese können sich in allen 8 Richtungen (wie König im
Schach) bewegen. Wenn einer dieser Gegner die Spielfigur erreicht, hat
man die Runde verloren. Wenn zwei Gegner aufeinander rempeln, dann
bleibt ein Schrotthaufen zurück, der für alle Figuren ein Hindernis ist.
Gegner, die auf so einen Schrotthaufen stoßen, werden auch zu Schrott.
Man hat als Spielfigur 2 Not-Dinge: zum einen einen Sprung in ein
zufälliges Feld (weniger frustreich: Sprung in ein freies zufälliges
Feld) und zum anderen einen Rundumschlag, der alle Gegner in Schrott
verwandelt, die direkt in einem der 8 Nachbarfelder stehen. Aber diese
Not-Dinge sind begrenzt auf einige wenige Anwendungen. Wenn man
schlußendlich es geschafft hat, alle Gegner zu schrotten, hat man den
Level gewonnen.
So. Ich hatte sowas mal vor Jahren in plain C füe Windows CE
geschrieben, aber davor gab es einige Implementationen für diverse
Home-Computer aus der Basic-Zeit. jetzt hast du also eine Idee frei Haus
bekommen. Nun strenge dein Gehirn an und trainiere deine grauen Zellen.
W.S.
>Amidar hieß das zu meiner Arcade-Zeit... einfache Grafik, gut zu>programmieren.
Selbst die einfachsten Sprite-Grafiken sind fürn Anfänger zu kompliziert
zu händeln.
Ich würde vier-gewinnt programmieren.
Mit einfachen Linienmalbefehlen das Spielfeld gezeichnet. Mit
Kreismalbefehle die Taler. Spiellogik (hat wer gewonnen) lässt sich Feld
für Feld prüfen. Mit links rechts (auf der Tastatur) kann man einen Slot
wählen (wird farblich im Spielfeld gekennzeichnet) in dem der nächste
Spieler (angezeigt durch verschiedene Farben, eventuell ganz old-school
mit Namen) seine Taler einwerfen kann...
Gruß J
Selbst ein kleines SuperMario mit direkter VGA Ausgabe ist auf einem
Mega ohne extra Chips gut machbar:
http://www.avga.prometheus4.com/
Habe ich mal auf einen Arduino mit 19,6MHz Quarz geflasht und lief sehr
gut. Weiter dran rumgebastelt habe ich aber nicht.
>Selbst ein kleines SuperMario mit direkter VGA Ausgabe ist auf einem>Mega ohne extra Chips gut machbar:
Das halte ich für ausgeschlossen. Selbst ich in meinem Größenwahn setze
mir kleinere Ziele...
Gruß J
come on, crysisis an unfair comparison :D As I remember, even five years
later a good gaming pc is unable to run crysis with full grafik
features. I mean not with 20fps...
Greetz Jonas
Memory wäre auch ein Spiel, das nicht allzu schwer zu programmieren ist.
<bittenichtsoernstnehmen>
Falls du es mit der Programmiererei nicht hinbekommst, gibt es immer
noch eine einfach zu realisierende Fall-Back-Lösung:
Du besorgst dir 66 Exemplare des ATmega2560¹, malst oder klebst schöne
Bildchen auf die Unterseite (je zwei davon müssen gleich aussehen), und
schon ist das Memory-Spiel fast fertig.
Aber nur fast, denn was jetzt noch fehlt, ist das C-Programm. Das
folgende, geflasht auf einen der 66 Controller, sollte den Zweck
erfüllen:
1
intmain(void){}
Ganz sicher gibt dir der Prof für diese Lösung eine besonders gute Note,
weil du damit zeigst, dass du sogar schon die Multiprozessortechnik
beherrschst.
—————————
¹) Statt der ATmegas kannst du auch 66 AVR32 nehmen. Du solltest die
beiden Controllertypen nur nicht mischen, sonst wird es für die
Spieler zu leicht.
</bittenichtsoernstnehmen>
JB schrieb:>>Selbst ein kleines SuperMario mit direkter VGA Ausgabe ist auf einem>>Mega ohne extra Chips gut machbar:>> Das halte ich für ausgeschlossen. Selbst ich in meinem Größenwahn setze> mir kleinere Ziele...
Bist dem Link nicht gefolgt? Da läufts ja. Ist ein Jump & Run mit
einigen wenigne Hindernissen. An den Arduino muss ein Cursorkreuz mit 4
Tastern und ein RGB Monitor.
4 Gewinnt mit Minimax Algorithmus ...
hab ich gerade auf STM32 hinbekommen (allerdings habe ich auch ewig dran
gebastelt bis das gut lief)..
Ansonsten wäre Space-Invaders eine nette Übung (bei der man, wenn es
evtl. C++ sein sollte besonders gut die abgeschossenen Schüsse sowie die
Aliens als Objekte realisieren kann.
Je nach "Ausgabegerät" Display / GLCD wäre vllt. auch noch ein Flipper
reizvoll.
Dann könnte man Quix noch gut programmieren ...
... Frogger
Die ganzen alten Spielhallenhits sollten in Frage kommen ...
Asteroids wäre auch gut machbar.
Pacman wäre noch weder zu schwer noch zu leicht. Habe mal eine Version
im Textmodus geschrieben, für Atari Portfolio (DOS), 40 x 8 Zeichen.
Lief aber auch auf einem PC, wenn er nicht zu schnell war.
>Bist dem Link nicht gefolgt? Da läufts ja. Ist ein Jump & Run mit>einigen wenigne Hindernissen.
Ich meinte das der TO ein Mario programmieren kann, das ein AVR32 Mario
emulieren kann ist natürlich cool war mir aber bekannt.
Gruß J
Ich programmiere in CodeBlocks hab Schere Stein Papier programmiert und
noch kleinere Sachen programmiere seit nem halben Jahr und wollte fragen
ob jemand Aufgabenstellungen für mich hat
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang