Spiel programmieren in C

Gast #4826726
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!
Gast #4826743
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
Gast #4826752
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)
#4826762
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.
#4826778
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.
Gast #4826783
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 ;)
Gast #4826784
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
Gast #4826786
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
Gast #4826975
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.
Gast #4827121
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
Gast #4827332
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
Moderator #4827488
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>
(Firma: matzetronics) #4827493
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.
#4827664
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.
Gast #4828206
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren