"Tangled"-Spiel Lösbare Level Automatisch erstelle
Übersicht

![]() |
M0rgensternBetreff: "Tangled"-Spiel Lösbare Level Automatisch erstelle |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute.
Ich bin gerade dabei ein "Tangled" Spiel zu programmieren. Damit meine ich sowas: http://www.addictinggames.com/...tangle.jsp Ich habe zwar schon einen Editor geschrieben, würde aber gerne die Möglichkeit haben einen Endlosspielmodus anzubieten, in welchem einfach immer schwierigere Level generiert werden. Meine momentaner Ansatz sieht so aus: BlitzMax: [AUSKLAPPEN] Function RandomLevel:TLevel(piDifficulty:Int) Das Problem ist nur: So werden, gerade in höheren Schwierigkeitsgraden, die Level gerne mal unlösbar. Den PC das Level vorher lösen zu lassen mag zwar verlockend klingen, aber dann kommt man ungefähr bei dem n-Damen Problem heraus. Das heißt, dass, wenn der PC eine Lösung errechnet, es ziemlich lange dauern wird, bis er eine hat, falls es eine gibt. Deshalb wollte ich mal hier nachfragen ob jemand vielleicht nen Ansatz für mich hätte, wie man das ganze veranstalten könnte, dass es nur lösbare Level produziert, bzw. ob es überhaupt möglich ist, das so zu programmieren. Lg, M0rgenstern |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe keine direkte Ahnung wie, aber das sieht mir sehr nach einem Graphentheoretischem Problem aus, das sich womöglich lösen lässt.
Aber ich würde erst Geometrisch einwandfreie Formen generieren und wenn die Verbindungen klar sind die Punkte zufällig positionieren. Dann gibt es keine unlösbaren Formen. Unregelmäßige Netze sollten dann nicht all zu schwer zu generieren sein. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso, du meinst Untangle - bei Tangled fiel mir nur der Disney-Film ein ![]() Im Prinzip kannst du ja einfach einen bereits gelösten Levels generieren (d.h. keine Linien schneiden sich) und dann die Punkte in irgendeiner coolen Kurve anordnen, um den zu lösenden Level zu erhalten. Um einen gelösten Level zu generieren, gibt es viele Möglichkeiten - z.B. kannst du Dreiecke als Grundform nehmen, indem du zuerst drei Punkte generierst, um ein Dreieck zu formen, und dann einen Punkt in die Mitte setzt und mit einer zufälligen Anzahl der Eckpunkte verbindest (also 2 oder 3 - 1 wäre ein wenig langweilig...). Dann gehst du rekursiv vor, indem du die jetzt neu geformten Dreiecke bearbeitest, dort einen Mittelpunkt setzt etc. etc., bis du genug Punkte hast Das gibt dann zwar sehr regelmässige Konstrukte, aber da du die Punkte nachher eh wieder neu anordnest, spielt das keine Rolle. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ha.
Vielen Dank ihr Beiden. Genau nach soner Lösung habe ich gesucht. Funktioniert auch super. Lg, M0rgenstern |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group