Forum: Mikrocontroller und Digitale Elektronik spiel programmieren


von cm315 (Gast)


Lesenswert?

Hallo, ich muss in der Schule ein kleines Spiel programmieren und habe 
keine Ahnung was ich nehmen soll, da mein Lehrer immer sagt es wäre zu 
schwer.
Bin in der 12 Klasse und habe Informatik als Leistungkurs. Hätte an 
sowas wie dieses Retro PingPong oder memory oder über hindernisse 
springen gedacht. Alle anderen nehmen das Spiel wo man kline Bildchen 
oder shapes anklicken muss um Punkte zu bekommen aber das ist mir zu 
blöd alle haben das halt :D
wäre nett eine kleine und vielleicht schnelle Antwort von euch zu 
bekommen.
LG cm315

von Karl H. (kbuchegg)


Lesenswert?

Das hängt hauptsächlich von deinem Kentnissstand ab und was eigentlich 
die Basis (Hardware) deines Spieles sein soll. Alles was irgendwie 
dynamisch sein soll (wie zb ein Ball bzw. Tennisball) der sich laufend 
weiterbewegt, ist davon abhängig, was die darunterliegenden 
Software-Schichten machen. Im Klartext: wenn Windows anfängt den 
Speicher aufzuräumen, dann wird dein Ball nur noch vor sich hinruckeln. 
Von daher ist alles, was nur auf Benutzereingaben reagieren muss (der 
Benutzer bestimmt das Tempo) um einiges einfacher. Dein Programm 
reagiert dann nur noch auf Eingaben.

Wie wärs mit Tick-Tack-Toe?
Oder 4 gewinnt als 2-Personen Spiel?

von oculus f. (oculusfelis)


Lesenswert?

Wenn die Plattform egal ist auf der Du Programmieren musst dann kannst 
du ein Memory oder Tic-Tac-Toe oder ein textbasiertes Spiel bspw. in PHP 
"programmieren". Das hat natürlich nicht wirklich was mit richtiger 
Spieleentwicklung zu tun, denn da nimmt man bspw. c++

Vielleicht ein paar Hintergrundinfos wofür die Lerneinheit gedacht ist?
Genereller Ablauf von Schleifen, if-else Anweisungen oder warum sollt 
ihr das machen?

Die Frage ist natürlich wie groß Dein Kenntnisstand in Sachen 
programmierung ist?

Mit 2,3 Klicks ist das nicht erledigt. Gib uns mal ein paar Infos pls.

von Bassti (Gast)


Lesenswert?

hab mal 3 Klassenstufen unter dir mit Visual Basic nen "Heißer 
Drahtspiel" programmiert... das macht Spaß und ist so ziemlich simple.

Einfach nen Button, wird der von der Maus geklickt, machst du die 
Begrenzungen sichtbar. Damit reagieren die dann auch auf Mouseover 
Events. Die wertest du aus, ob jemand gegen ein Hindernis gestoßen ist.

Kann mich erinnern, dass ich damals gar nicht genug bekommen habe, da 
gabs dann noch Falltüren, fahrende Wände und Blöcke...

Leider such ich das Spiel seit Jahren, würde gern noch mal sehen was ich 
da so gebaut hatte.

Jedenfalls....
Viel Spaß dabei...

von Peter R. (pnu)


Lesenswert?

Früher war "towers of hanoi" die standard-Übung für Programmierer, das 
wäre für einen Leistungskurs wohl insoweit schlecht, dass Jeder aus der 
Lehrergeneration es besser weiß oder glaubt, das Ergebnis sei irgendwo 
abgeschrieben.

"Mühle" hat wohl schon zu komplexe Spielregeln, wegen der "Zwickmühle", 
liegt aber vielleicht für einen Leistungskurs gerade auf dem passenden 
Niveau, um die notwendigen Algorithmen aufzubauen bzw. zu realisieren.

Also irgendwie die einfachen Brettspiele wie Dame, Wolfsschach usw. 
ansehen. Vielleicht findet sich da etwas. Es gibt doch Spielesammlungen 
mit Würfel- oder Brettspielen. Dort ließe sich vielleicht etwas finden.

Dabei gehts den PC/KOntroller als virtuellen Partner zu haben oder zum 
Beispiel um eine sichtbare Anzeige nach jedem Zug mit Anzeige, welche 
neue Gewinnwahrscheinlichkeit entstanden ist. Oder zum Beispiel in 
akustischer Form: AU!, Ja!, Haha,...nach jedem Zug.

Auch das klassische "Schiffe versenken" fällt mir da ein.

von B. S. (bestucki)


Lesenswert?

Hab auch mal ein "Spiel" in Java zusammengebastelt, natürlich ohne 
jemals Java erlernt zu haben (konnte damals nur C und ein bisschen C++). 
Das war ein Autorennspiel mir einer Draufsicht, den Wagen konnte man 
über die Pfeiltasten steuern. Beschleunigung und Verzögerung waren 
einigermassen realistisch, bei höheren Geschwindigkeiten konnte man 
nicht mehr so eng um die Kurven fahren und neben der Strecke (auf dem 
Gras) fuhr der Wagen langsamer. Zeiterfassung der Rundenzeiten 
funktionierte auch einigermassen zuverlässig. Aber dann war das Semester 
zu Ende, die Sommerferien begannen und ich hab das Ding nie mehr 
angefasst. Hab dafür ein Semester lang 1.5h pro Woche investiert.

von troll (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Im Klartext: wenn Windows anfängt den
> Speicher aufzuräumen, dann wird dein Ball nur noch vor sich hinruckeln.
Na Na. Soooo schlimm ist es nun auch nicht. Grundsätzlich sind einfache 
Spiele kein größeres Problem, vorausgesetzt der Leistungskurs hält was 
ich mir von ihm verspreche. Ein 
$aktuelles_3d_spiel_mit_aufwändigster_graphik wird man alleine natürlich 
nicht hinzaubern können, aber sowas wie 4 gewinnt oder Schiffe versenken 
mit reinem Textinterface ist ja fast schon trivial. Schon schwieriger 
ist dann ein 2D-"Ballerspiel" (weiterhin nur mit Text/ASCII-Grafik) à la 
anno 197x und wenn es graphisch sein soll nimmt man halt die passende 
Bibliothek aus den Weiten des Internets und bastelt ein einfaches 
Moorhuhn. Bei allen genannten Spielen sind die Algorithmen so einfach 
dass ich eigentlich gar nicht von "Algorithmen" sprechen möchte...

Tipp: Simple Direct Media Layer! Sehr gut, portabel und vor allem sehr 
überschaubar. :-)

von A. H. (dev)


Lesenswert?

Tetris macht richtig Spaß zu programmieren. Da kannste Deine 
Mathematik-Kenntnisse (Matrix etc.) auch mal richtig anwenden. Grade bei 
der Kollisionsberechnung der Blöcke (welceh Züge darf der Block machen 
ohne an andere Steine zu stoßen).

Ansonsten ist das ziemlich einfach. Du zeichnest ein Raster (Matix) mit 
definierten Anzahl von Pixel pro "Kästchen" - z.B. 32px x 32px. Davon 
dann 20 in der Breite, 80 in der Höhe.

Du startest zum Start eines Levels eine Game loop(). Wenn es noch keinen 
Block gibt, wählst du per Zufall einen aus. (Es gibt ja eine definierte 
Anzahl an Block-Typen)

Sagen wir mal, Du hast nen langen mit 4 Kästchen. Pro 
loop()-Funktionsdurchlauf bewegt sich ein Block von oben jeweils ein 
Kästchen weiter nach unten. Bevor Du den Block bewegst prüfst Du, ob 
sich der Block dann über einem anderen Block befinden würde (für jedes 
einzelne Kästchen musst Du das prüfen) oder der Block über den Grund 
laufen würde. Sollte das passieren, wählst Du per Zufall einen neuen 
Block, die Sache beginnt von oben von neuem.

Wird auf eine Pfeiltaste gedrückt, machst Du: Links -> Block 1 Kästchen 
links; Rechts -> Block 1 Kästchen rechts; Oben: Block dreht sich 
entgegen des Uhrzeigersinns; Unten -> Block fällt direkt nach unten.

Bei jeder Operation musst Du lediglich die Kollisionsberechnung 
machen, nevor du den Block bewegst.

Nach jeder Kollisionsberechnung prüfst Du von der untersten 
Kästchen-Reihe an, ob die Kästchenreihe voll ist und löscht dann die 
Reihe (versetzt alle Kästchen um 1 nach unten).

Die Schwierigkeit des Spiels wird dadurch bestimmt, wie groß die 
Wartezeiten zwischen jedem loop()-Aufruf sind. Schneller heißt bei 
Tetris einfach nur, dass du anstatt 1 Sekunde warten zwischen jedem 
loop() Aufruf z.B. nur 900ms als Delay wählst.

Game Over ist, wenn ein Block auf der höchsten möglichen Reihe mit einem 
anderen an der Unterseite kollidiert.

Fertig.

Viel Spaß! :-)

von A. H. (dev)


Lesenswert?

Wenn Du so etwas für die Schule machst, ist Basic ne nette Sprache dazu.

Von Microsoft gibt es eine neue Basic-Umgebung ("Small Basic") für 
Schüler die besonders einfach gehalten ist und mit der Du grafisch 
programmieren kannst.

Habe grade entdeckt, dass es es da sogar ein Tetris-Beispiel gibt. Aber 
schreib das bitte selber - copy & paste bringt Dir nichts, wenn Dein 
Lehrer oder Deine Mitschüler Dir später fiese Fragen stellen und Du 
keine Ahnung hast und nur stammelst :-)

Außerdem macht das keinen Spaß!

http://smallbasic.com/program/?TETRIS

LG

von A. H. (dev)


Lesenswert?

Hier noch die deutsche Dokumentation zur Small Basic Sprache:

http://download.microsoft.com/download/9/2/1/921D10C7-75C0-4395-93AF-49A830F4780E/Small%20Basic%20Einfuehrung.pdf

Und hier die deutsche API-Doku:

http://smallbasic.com/smallbasic.com/doc.aspx?o=Turtle&l=de

----

Mit Small Basic kannst Du Dich halt um Dein Programm kümmern und musst 
Dich nicht mit der Grafikschnittstelle auseinandersetzen o.Ä.

von Hawa M. (hawamand)


Lesenswert?

cm315 schrieb:
> wäre nett eine kleine und vielleicht schnelle Antwort von euch zu
> bekommen.
http://de.wikipedia.org/wiki/Mastermind

->hab ich damals auf ähnlicher Stufe anno 1990 in Turbo Pascal 
programmiert.
Wurde das ein Spaghetti-Code...

Vor Grafischer Umsetzung inkl. Animationen bis zu reinem Textmode zum 
Test der Spiel-Logik alles möglich.

von Wusel D. (stefanfrings_de)


Lesenswert?

Vorschlag: Simon, auch Bekannt als Senso.

von Marcus W. (marcusaw)


Lesenswert?

Ich nehm in meinen Kursen für fortgeschrittene immer ein Arcanoid 
(Breakout) oder Pong.

Ist relativ leicht umzusetzen und man kann es ist ein schönes Beispiel 
für OOP.

Du brauchst nen Ball und die Balllogik (einfallwinkel = negativer 
Ausfallwinkel etc...), ein Paddel, die Hittest-Logik (was passiert bei 
Berührung) - fertig.

Das Prinzip kann man beliebig ausbauen und das Grundsystem (nenn es 
meinetwegen "engine") kann man in etwa 2 Stunden in (fast) jeder 
Programmiersprache realisieren.

Außerdem ist das spielprinzip so schön retro und macht heute noch Spass 
:)

von PeterA (Gast)


Lesenswert?

Ein Senso wär vielleicht auch noch was :)
http://de.wikipedia.org/wiki/Senso_(Spiel)

von Stephan B. (matrixstorm)


Lesenswert?

Hallo.

Ich wollte nur mal Erinnerungen, bei denen die das Privileg hatte es 
erleben zu duerfen, wecken: GORILLA.BAS

MfG

von Ro B. (ro-ro)


Lesenswert?

Hab mal Snake nachprogrammiert. War ne Fingerübung in C während des 
ersten Semesters. Nicht zu komplex, aber dennoch was "dynamisches". Und 
man kann ein wenig mit Pointern spielen und so. Ansonsten noch 
interessant: Go. Allerdings isses da nicht die Programmierung, sondern 
das Funktionsprinzip. Stichwort "Rekursion".

Sry falls das schon genannt wurde, hab nur quergelesen.

von Ich (Gast)


Lesenswert?

Wir haben damals im Team versucht, eine einfache Zwei-Spieler-Version 
vom guten alten Schach zu programmieren.
Also im Prinzip nur ein Schachbrett mit Figuren, man zieht abwechselnd 
und der Computer überprüft die Züge auf Durchführbarkeit und erkennt 
ggf. Schach und Schachmatt.

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


Lesenswert?

Marcus W. schrieb:
> Ich nehm in meinen Kursen für fortgeschrittene immer ein Arcanoid
> (Breakout)

Jo, eine ähnliche Spielidee ist 'Städte verteidigen'. Hatte ich mal auf 
einem ZX81 in Basic in 1,5 kByte reingekriegt. Oben fallen die Bomben 
runter und du hast ne horizontal bewegliche Kanone.

von Wusel D. (stefanfrings_de)


Lesenswert?

Wenn ein elektronisches Spiel mit Mikrocontroller sein soll, dann schau 
mal hier:
http://stefanfrings.de/avr_workshop/index.html

von Falk B. (falk)


Lesenswert?

Ich hab mal vor Urzeiten Ziege, Wolf und Kohlkopf programmiert, die über 
den Fluss müssen. Mit selbstgemalter Grafik. Nicht schön, aber selten! 
;-)
Hach, das waren noch Zeiten (KC85-3, der Ossi-C64).

von Christian B. (chbalnuweit)


Lesenswert?

Ich habe mal ein Galgenraten Spiel mit Delphi programmiert. Man konnte 
ein Wörterbuch anlegen und es wurde per Zufall ein Wort ausgewählt. Und 
je nach Fehleranzahl wurde das Männchen am Galgen gezeichnet.

von Nase (Gast)


Lesenswert?

Wie währe es mit Spaceinvaders? War doch auch ein nettes Spiel und 
sollte sich auch gut umsetzen lassen.

von Charly B. (charly)


Lesenswert?

schau dir mal Purebasic an, dort sind meines wissens auch
beispiele und es gibt auch eine codesammlung, einf. mal
google & Co. fragen ;)

und zeig uns dann auch was du gemacht hast...

vlG
Charly

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
Noch kein Account? Hier anmelden.