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.
AVRDude schrieb: > Quake 3 Arena ein Ego-Shooter? :D Mein Bildschirm ist so groß wie eine TikTak-Packung
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.
Ok, dann ich das wohl falsch verstanden ... (was für eine bl... Aufgabenstellung: einfach alles in einen Topf gerührt)
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.
Missile Command vielleicht. Oder Ballerburg. Schach wäre auch sportlich.
Ehe man Spiele programmieren kann, sollte man erstmal überhaupt programmieren können. Was hast Du denn bisher eigenständig programmiert?
Andreas R. schrieb: > Schach wäre auch sportlich. ...nö! http://www.bralug.de/wiki/BLIT2008-Board_spielt_Schach
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
Vor Allem würde ich mal die Ergänzungsvorlesung "Ich verstehe Sarkasmus" belegen...
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.
Maler gabs mal, was ein beklopptes Spiel - man hat Häuserwände angemalt... lol
JB schrieb: > Maler gabs mal, was ein beklopptes Spiel - man hat Häuserwände > angemalt... http://www.arcade-museum.com/game_detail.php?game_id=6883 Amidar hieß das zu meiner Arcade-Zeit... einfache Grafik, gut zu programmieren.
>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 | int main(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.
Boulder Dash https://en.wikipedia.org/wiki/Boulder_Dash Online-Simulator: http://www.c64x.de/c64/boulderdash.php
>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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.