Open ateengine opened 13 years ago
@Martin:
Dazu auch nochmal mein Hinweis von zuvor bzgl der 3 menschlichen Strategien:
...läuft... ich meld mich wenn ich was vorzeigen kann.
letzte Strategie: Alle Kombinationen in Zusammenarbeit der Strategien 1 - 3 durchgehen. Ab Nutzung der 4. Strategie den Map Zustand auf den Stack legen. Dann los. Falls keine Lösung, letzten Mapstatus vom Stack holen und weiter Kombinieren, bis entweder Erfolg oder letzte Kombination des ersten Mapzustands im Stack erreicht und abgearbeitet.
Also hab jetzt meine Logik (Überprüfung nach jedem Zug ob die Map so noch lösbar ist sowohl bei Erstellung als auch beim SPielen einer Map) jetzt als Klasse 'Logic' erstellt. Aufgerufen wird diese Überprüfung für's Spielen in der Methode assignBeamsToSource() ganz am Ende, und für's Erstellen in der Methode updateTile() ganz unten (jeweils in der Klasse MapArea). Vielleicht kann man den Aufruf ja noch besser platzieren, wusste nicht wohin sonst damit. Im moment wird nur in der Konsole das Ergebnis des Checks ausgegeben. Was man mit dem Ergebnis macht (z.B. Map nur dann als spielbare Map speicherbar wenn der Check true zurück gibt) muss noch gemacht werden...
... aja im moment wird mein commit in github irgendwie noch nicht angezeigt. In Eclipse scheint aber alles geklappt zuhaben. Entweder das dauert immer was länger, oder ich hab was falsch gemacht...
... meine commits kommen hier irgendwie nicht an :(
Nach einem Comitt das Menü "Team" -> "Push" aufrufen. Dort die notwendigen Angaben machen und fertig. Dein Comitt veranlasst nur, Dein lokales Repository, welches Du Dir mit "Clone" angelegt hast, zu aktualisieren. Deshalb sind Deine Änderungen bis zu einem "Push" nicht oben! Ich werd dann noch schauen, wo's sinnvoll ist.
Also das Comitten hatte jetzt geklappt. Ich kann wohl im moment keine Map mehr spielen. Aber das hat wohl nix mit meinem Änderungen zutun...
Änderungen sind oben! Master-Branch ist wieder spielbar!
Folgende Map:
|2| | |
| | |2|
|2| | |
Deine Klasse sagt hier: "nicht lösbar"! Stimmt aber nicht! Ist lösbar als auch eindeutig!
Wieso eindeutig? So wie ich das sehe sind z.B. folgende 2 Lösungen möglich: |2|>|>|
|<|<|2|
|2|>|>|
und
|2|>|>|
|/|<|2|
|2|>|V|
oder nicht?
Stimmt! Mein Fehler! Läuft ansonsten super! Noch 'ne wichtig Frage: Ist das die Lösungsstrategie 1? Auf den ersten Blick sah mit das so aus!
Damit ist Strategie 1 und 2 abedeckt. Strategie 3 wusst ich nicht so ganz wie ich technisch realisieren soll. Ich könnte das so machen, dass wenn kein Feld mehr da ist, das von genau einem Beamsource erreicht werden kann, aber Felder da sind, die von mehreren Beamsources zugleich erreicht werden können, dass dann rekursiv alle Optionen nach einander auf ein positives Endergebnis überprüft werden. Und wenn dann genau eins aufgeht ist es doch eindeutig. Vielleicht wird das aber performance-lastig.
Ich habe mir Deine Lösungsvariante mal genauer unter die Lupe genommen und habe nun ein Strategy-Pattern aufgesetzt (bereits im Branch drin). Ich mir erlaubt, Deine Variante vollständig zu überarbeiten (habs nicht komplett überblicken können :) ). Schaus Dir mal an und sag mir, ob Du nach dem ähnlichen Prinzip die Lösungsstrategie 2 aufsetzen kannst?? Da wir an demselben Package arbeiten, wäre es wichtig, Deine Zeilen zu kommentieren. Machste dat?
Ähm also hab ich das alles umsonst gemacht? super... Hab im moment keine Zeit mich für Strategie 2 in deinen neuen Code einzuarbeiten. Gib mir wenn dann lieber mal ein Szenario das mit der bisherigen Methode nicht bzw. falsch gelöst wird, dann ist mir auch klarer was ich bei Strategie 2 überhaubt machen soll.
Auf gar keinen Fall hast Du das umsonst gemacht, schließlich habe ich ja Teile Deiner Logik übernommen! Nur halt an den Schrauben gedreht und in ein Strategy-Pattern gepackt, so wie es auch Vorgabe ist! Die Strategien hat Quandel oben erklärt. Deine Methode war super, nur muss halt für den Schwierigkeitsgrad folgendes passieren:
Wenn Strategie 1 nicht mehr packt, dann mit Strategie 2 weiterversuchen. Wenn Strategie 2 nicht mehr pack, dann mit Strategie 3 weiterversuchen. Wenn Strategie nicht mehr packt, wieder mit Strategie 1 beginnen. Das solange, bis keine Strategie mehr greift. Ist dann noch mind. ein Feld frei (d.h. mind. ein Feld ohne Zuordnung zu einem Strahler), dann ist die Karte auch nicht spielbar. Aufgrund der Anzahl der versuche der unterschieldichen Strategien lässt sich somit ein Schwierigkeitsgrad ermitteln. Großartig einarbeiten musst Du Dich nicht. Sobald ich per ICQ erreichbar bin, können wir ja zusammen das Problem angehen!? So kann ich dir auch sagen, was Du nutzen kannst, um schnell ans Ziel zu gelangen.
Herr Cremer, wie steht es um die Lösungsstrategien? Gibt es da schon Fortschritte?