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
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?
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.
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...
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.
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.
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. :-)
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ß! :-)
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
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.
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
:)
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.
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.
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.
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).
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.
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