Forum: PC-Programmierung Programmieren eines Pac Mans in C


von paul (Gast)


Lesenswert?

Hi Leute,

ich brauche hier mal eure Hilfe!

Ich hab die untenstehende Aufgabe bekommen, doch finde keinen geeigneten 
Lösungsansatz.

Ich arbeite mit Xcode und bin noch ziemlicher Anfänger.


hier mal die Aufgabe.


Erstellen Sie ein Programm in der Programmiersprache C, das die folgende 
Aufgabe löst. Bauen Sie das Programm modular auf (nutzen Sie 
Unterprogramme und Module), dokumentieren Sie den Quelltext, indem Sie 
die verwendeten Funktionen nebst ihrer Ein- und Ausgabeparameter 
beschreiben! Verwenden Sie lediglich ANSI-C-Bibliothecken und 
Funktionen, die auf heterogener Hard- und Software lauffähig sind!

Aufgabe:
In Softwarehersteller beabsichtig das Spiel „Pac Man“ zu programmieren. 
Hierbei wandert eine Figur, dargestellt durch einen gelben Kreissektor, 
durch ein Labyrinth und „frisst“ au dem Weg liegende „Nahrung“, 
dargestellt durch Punkte. Nicht gefressene Punkte bleiben im Labyrinth 
liegen. Ein Punkt gilt als gefressen, sobald er in den Kreissektor 
gelangt. Ermitteln Sie die Lage eines solchen Punktes relativ zu einem 
Kreissektor in einer 2-D Ebene. Punkt und Sektor sind in parametrischer 
vektorieller Darstellung einzugeben, der Sektor mit Mittelpunkt, Radius 
und Mittelpunktswinkel.
-Richten Sie hierzu zunächst, als unendliche Maschine, ein 
Benutzerinterface ein, das die Eingabe und Korrektur der benötigten 
Elemente Punkt und Sektor durch den Benutzer erlaubt. Erzeugen Sie dann 
einen geschlossenen Linienzug für den Sektor
-Vergegenwärtigen Sie sich die mathematischen Grundlagen und erstellen 
Se ein Modell auf Basis der Vektorrechnung. Definieren Sie anschließend 
die benötigten Datenelemente und Verfahren(Algorithmen).
-Verwenden Sie die Mittel der Vektorrechnung und erstellen Sie hierzu, 
in einem separaten Modul, eine Sammlung von Funktionen, die das Rechnen 
mit 2-D Vektoren erlaubt.
-Prüfen Sie, ob der eingegebene Punkt innerhalb oder außerhalb des 
Sektors liegt, wobei de Grenzlinien zum Sektor gehören sollen. Geben Sie 
die relative Lage (innen oder außen) auf den Bildschirm.

Zur Lösung der Aufgabe benötigen Sie Grundkenntnisse der Vektorrechnung, 
sowie der parametrischen Darstellung von Kreisen und Strecken.





Ich hoffe ihr könnt mir helfen!!


Gruss Paul

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Entgegen anderslautender Ansichten ist das hier kein Mirror von 
www.hausaufgaben.de

Hier wird durchaus Leuten geholfen, aber dafür müssen die wenigstens 
einen Hauch von Eigeninitative erkennen lassen.

Davon bist Du noch weit entfernt.

von Mark B. (markbrandis)


Lesenswert?

paul schrieb:
> Ich arbeite mit Xcode

Das hat hier wohl eh keiner, mangels Mac... obwohl, man kann die oben 
verlangten Funktionen auch unabhängig davon programmieren.

Den Ausdruck "unendliche Maschine" find ich ja süß. :-)

von Karl H. (kbuchegg)


Lesenswert?

Falls du es noch nicht gemerkt hast.

Du sollst KEIN Pac Man implementieren.
Pac Man dient nur als Aufhänger und Motivation für die Problemstellung.

Du sollst implementieren:

   Gegeben ein Kreissektor
   Gegeben ein Punkt

Bestimme, ob der Punkt im Kreissektor liegt oder nicht.

Und du sollst das Ganze mit Vektorrechnung lösen, wobei du dir die 
jeweiligen Hilfsfunktionen für Vektorrechnung erst mal machen musst. Du 
wirst also eine Struktur brauchen, die dir einen Vektor repräsentiert

struct vector2D
{
  double X;
  double Y;
};

und dann Funktionen dafür machen, zb 2 Vektoren addieren, 2 Vektoren 
subtrahieren, die Länge eines Vektors bestimmen, einen Vektor auf 
Einheitslänge normieren, Dot-Produkt etc. Was du eben so alles brauchst 
um die Mathematik hinter dem Problem zu lösen.

zb ist die Distanz zweier Punkte in der Ebene (zb der zu untersuchende 
Punkt und der Mittelpunkt des Kreissektors) gegeben durch

   struct vector2D point;
   struct vector2D centerPoint;

...

   double dist = vectLength( vectSubtract( point, centerPoint ) );

ist diese Distanz größer als der Kreisradius, dann liegt der Punkt schon 
mal nicht in einem Vollkreis mit diesem Radius und kann daher auch nicht 
im entsprechenden Kreissektor mit eben diesem Radius liegen.

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.