Aufgabenlösung, Breitensuche und Bézier-Kurven
€30-250 EUR
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.
Project ID: #8108498
About the project
2 freelancers are bidding on average €472 for this job
Ich schreibe den Code aber weil es ein wenig mehr arbeit ist sollte der Preis ein wenig angepasst werden.