Skip to content

Latest commit

 

History

History
88 lines (77 loc) · 2.14 KB

Planung.md

File metadata and controls

88 lines (77 loc) · 2.14 KB

Planung

Spezifikation

  • Snake im PacMan-Feld
    • Schlange bewegt sich durch ein vordefiniertes Feld (aus Textdatei)
      • Aufgabe ist Punkte zu fressen
    • Dadurch wird die Schlange länger
    • Schlange hält nicht an und kann nicht durch Wände gehen
    • Spieler verliert wenn Schlange sich selber berührt
    • (PacMan-)Geister können Teile der Schlange abbeißen
    • Steuerung
      • WASD und Pfeiltasten bestimmen Richtungswechsel
    • Ziel ist möglichst hohe Punktzahl (lange Schlange), es kann nicht gewonnen werden
    • Powerups (haben eine Chance zu spawnen wenn Punkt gefressen wird)
      • Geister fressen
      • Langsamer werden
      • Schneller werden
      • Alle Geister in die Mitte setzen
      • Umdrehen

Design

(i) Programmstruktur

Das Programm startet in der main() Funktion. Zuerst stellt diese das Spielfeld dar. Sobald der Spieler auf Enter startet sich eine Schleife welche solange läuft wie der Spieler am Leben ist. In dieser wird die gameTick() aufgerufen in welcher unter anderem die Funktionen movePlayer() und moveGhost() aufgerufen werden. Stirbt der Spieler wird der Schriftzug “Game Over” angezeigt und nach drücken der Enter-Taste wird das Programm beendet.

(ii) wichtige Funktionen

Funktion die das Spielfeld aktualisiert und Routinefunktionen aufruft.

int gameTick();

Bewegt die Schlange um ein Feld nach vorne.

void movePlayer(struct Player *p);

Bewegt den übergebenen Geist.

void moveGhost(struct Ghost *g);

Wendet ein Powerup an. Zu fressende Punkte werden ebenfalls als Powerup angesehen.

void takePowerup(struct PowerUp *p);

(iii) zentrale Datentypen

Struct für Powerups und Punkte

struct PowerUp {
  int id;
  int time;
  struct Position pos;
};

Struct für Positionen

struct Position {
  int x;
  int y;
};

Schlange

struct Player {
  int length;
  struct Position head;
  struct Tail *t;
};

Alle Elemente der Schlange (außer dem Kopf)

struct Tail {
  struct Position pos;
  struct Tail *t;
};

Geister/Gegner

struct Ghost {
  struct Position pos;
  int direction;
};