Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Pong

< C-Kurs
Version vom 19. September 2009, 15:17 Uhr von Alexander Kührmann (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Hier soll das Spiel Pong Schritt für Schritt implementiert werden. Die Anzeige des Spielfelds soll durch ASCII-Zeichen realisiert werden, sodass das Spiel in ein...“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Hier soll das Spiel Pong Schritt für Schritt implementiert werden. Die Anzeige des Spielfelds soll durch ASCII-Zeichen realisiert werden, sodass das Spiel in einem Terminal laufen kann.

Leider ist es nicht ganz einfach, einzelne Tasten einzulesen, wie sie gebraucht werden, wenn der Benutzer den Schläger bewegen möchte. scanf arbeitet gepuffert und gibt die Eingabe erst nach Betätigung der Enter-Taste an das Programm. Wir verwenden deswegen die C-Programmbibliothek curses, die uns entsprechende Funktionen zum Abfragen eines Tastendrucks liefert.

Aufgabe

curses initialisieren

Erstmal müssen wir das Headerfile für curses includen:

 #include <curses.h> 

Schreibe jetzt eine Funktion void init(), die für das Initialisieren von curses zuständig wird. Sie enthält folgende Befehle:

  • initscr();
    aktiviert curses
  • noecho();
    damit Buchstaben der getippten Tasten nicht im Terminal erscheinen
  • cbreak();
    deaktiviert das Puffern der Terminalzeile
  • keypad(stdscr, TRUE);
    aktiviert spezielle Tasten, wie die Pfeiltasten
  • halfdelay(1);
    damit die Funktion, die später auf einen Tastendruck wartet, nach einer Zehntel Sekunde beendet wird

Jetzt folgt die main-Funktion. Sie enthält als ersten Aufruf unsere init-Funktion. Unser Programm sollte beim Beenden curses vernünftig deaktivieren, weswegen als letzter Aufruf in der main-Funktion folgender sein sollte:

 endwin(); 

Wenn die Quelltextatei pong.c heißt, kann sie ab jetzt mit folgendem Befehl kompiliert werden:

 gcc -lcurses pong.c 

Variablen für den Zustand des Spiels

Ausgeben des Spielfelds

Verarbeiten der Tastendrücke

Kollisionen des Balls erkennen

Erkennen, wenn der Ball nicht vom Schläger getroffen wurde

alles in ein rundenbasiertes Spiel stecken

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)