Forum: Mikrocontroller und Digitale Elektronik Spiel programmieren in C


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ma Z. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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!

von Wilhelm M. (wimalopaan)


Bewertung
-1 lesenswert
nicht lesenswert
Und warum soll dass auf einem uC geschehen? Wo ist der Schwerpunkt?

von AVRDude (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Quake 3 Arena

von Lukas T. (tapy)


Bewertung
0 lesenswert
nicht lesenswert
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. :-)

von Ma Z. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Wilhelm M. (wimalopaan)


Bewertung
1 lesenswert
nicht lesenswert
Wie ist den das UserInterface? Leds und Taster?

von Ma Z. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
AVRDude schrieb:
> Quake 3 Arena

ein Ego-Shooter? :D Mein Bildschirm ist so groß wie eine TikTak-Packung

von Ma Z. (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
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

von Ma Z. (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
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

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
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 ...

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Wilhelm M. (wimalopaan)


Bewertung
0 lesenswert
nicht lesenswert
Ok, dann ich das wohl falsch verstanden ...

(was für eine bl... Aufgabenstellung: einfach alles in einen Topf 
gerührt)

von Dussel (Gast)


Bewertung
1 lesenswert
nicht lesenswert
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)

von Tom K. (ez81)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Andreas R. (daybyter)


Bewertung
0 lesenswert
nicht lesenswert
Missile Command vielleicht. Oder Ballerburg. Schach wäre auch sportlich.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Ehe man Spiele programmieren kann, sollte man erstmal überhaupt 
programmieren können.
Was hast Du denn bisher eigenständig programmiert?

von Uwe B. (boerge) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert

von R. R. (elec-lisper)


Bewertung
0 lesenswert
nicht lesenswert
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.

von TestX (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
@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 ;)

von Olaf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> 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

von JB (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>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

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Bewertung
0 lesenswert
nicht lesenswert
Vor Allem würde ich mal die Ergänzungsvorlesung "Ich verstehe Sarkasmus" 
belegen...

von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von W3ll S. (w3llschmidt)


Bewertung
0 lesenswert
nicht lesenswert

von JB (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Maler gabs mal, was ein beklopptes Spiel - man hat Häuserwände 
angemalt...
lol

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Bewertung
2 lesenswert
nicht lesenswert
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.

von Thomas F. (igel)


Bewertung
0 lesenswert
nicht lesenswert

von JB (Gast)


Bewertung
2 lesenswert
nicht lesenswert
>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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
1 lesenswert
nicht lesenswert
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.

von JB (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>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

von Yerli (Gast)


Bewertung
0 lesenswert
nicht lesenswert
can it run Crysis ?

von Crazy H. (crazy_h)


Bewertung
0 lesenswert
nicht lesenswert
Kniffel?

von JB (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Yalu X. (yalu) (Moderator)


Bewertung
3 lesenswert
nicht lesenswert
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>

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
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.

von asmhater (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Ralph S. (jjflash)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Jobst Q. (joquis)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Und wenn das zu schwer ist nimm "Stroker" *ROFL*

von list (Gast)


Bewertung
0 lesenswert
nicht lesenswert
tic tac toe

von Dussel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bomberman fällt mir gerade noch so ein.

von JB (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>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

von Johnny B. (johnnyb)


Bewertung
0 lesenswert
nicht lesenswert
TIC TAC TOE, das lief damals sogar auf dem WOPR.
https://www.youtube.com/watch?v=iZr71jZet5k

von rsmr.raphi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
rsmr.raphi schrieb:
> ob jemand Aufgabenstellungen für mich hat

Tetris

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.