Aufgabenlösung, Breitensuche und Bézier-Kurven

Closed Posted Jul 20, 2015 Paid on delivery
Closed Paid on delivery

Es müssen 2 Aufgaben exakt nach Aufgabenstellung gemacht werden.

1: Eine Bézier-Kurve vom Grad 2 wird durch die Angabe dreier Punkte P1,P2,P3 beschrieben. Der Li-

nienzug, der die Punkte verbindet, wird “Kontrollpolygon” genannt. Die Kurve verläuft im Inneren

ihres Kontrollpolygons.

Zum Zeichnen der Kurve existiert ein rekursiver Algorithmus. Hierbei wird die Kurve unterteilt und

es entstehen neue Punkte: die Kontrollpolygone der unterteilten Kurvenstücke. Die Kontrollpolygone

nähern sich dabei der Kurve. Auf der feinsten Stufe “nMax” wird das Kontrollpolygon als Linienzug

gezeichnet.

Die Funktion “ZeichneBezier(n,P1,P2,P3)” zur aktuellen Stufe “n” und einem vorgegebenen “nMax”

lässt sich wie folgt formulieren:

- falls n == nMax: zeichne die Linien P1,P2 und P2,P3

- sonst:

1. berechne drei neue Punkte

P12 = 0.5(P1+P2)

P23 = 0.5(P2+P3)

P123 = 0.5(P12 + P23)

2. Breitensuche in Maze.

In einem Irrgaten soll per Breitensuche alle Items die auf dem Boden liegen ( wie Pacman ) aufgesammelt werden:

Der Algorithmus lässt sich wie folgt skizzieren:

1. füge die aktuelle Spielerposition (x,y-Koordinaten) in die leere Queue ein;

2. so lange die Queue nicht leer ist,

2.1 hole das erste Koordinatenpaar aus der Queue;

2.2 falls sich hier ein Item befindet, breche ab: die Suche war erfolgreich.

2.3 für alle direkten Nachbarn (links, oben, rechts, und unten) dieser Koordinaten:

2.3.1 falls nicht blockiert (kein '#') und noch nicht in der Hashtable enthalten:

füge den Nachbarn in die Queue ein;

füge den Nachbarn als Key und die aktuellen Koordinaten als Value in die

Hashtable ein;

2.4 weiter mit 2.

Die Hashtable enthält nun Koordinatenpaare, wobei jedes besuchte Feld als Key vorkommt. Der zu-

gehörige Value ist das Koordinatenpaar, von dem aus man in der Suche gekommen ist (from). Um

nun von der Spielerposition zum Ziel zu finden, müssen Sie den Weg rückwärts in der Hashtable su-

chen. Hierzu eignet sich ein Stack in der folgenden Art:

1. falls ein Ziel gefunden wurde, lege die Zielposition auf den leeren Stack;

2. lese den zugehörigen Value (die vorherige Position from) aus der Hashtable;

3. so lange from nicht der Ausgangsposition entspricht:

3.1 lege from auf den Stack;

3.2 lese die vorherige Position von from aus der Hashtable und weise diese from zu;

3.3 weiter mit 3.

Für den Weg der Spielfigur zum Ziel müssen Sie nun nur noch den Stack abarbeiten. Machen Sie

sich an einem einfachen Beispiel klar, dass der Algorithmus funktioniert. Schreiben Sie eine Klasse ComputerPlayer, die diesen Wegefindungsalgorithmus implementiert. Die Spielfigur soll nun

selbständig mit einem Timer gesteuert alle Items des Labyrinths aufsammeln.

Code zur Darstellung des Maze und Breitensuche exisitert bereits.

Das Projekt ist innerhalb 24Stunden Fertigzustellen.

Code Kommentare auf Deutsch.

Existierender Code im Anhang.

C# Programming

Project ID: #8108498

About the project

2 proposals Remote project Active Aug 20, 2015

2 freelancers are bidding on average €472 for this job

DSPROFI

Ich schreibe den Code aber weil es ein wenig mehr arbeit ist sollte der Preis ein wenig angepasst werden.

€555 EUR in 3 days
(0 Reviews)
0.0