Hallo!
Ich möchte gerne mein Lieblingsrätsel aus Lufia 2 nachbauen bzw. ein Rätsel in dem Stil entwerfen. Hier erst Mal der Link dazu: http://www.youtube.com/watch?v=eUEcqMrQBpw

Vorab sei gesagt, dass ich noch nie wirklich mit Skripten im Maker gearbeitet habe.
Ich habe mir aber ein paar Gedanken gemacht, einen Algorithmus aufgeschrieben und bin (glaube ich) soweit eigentlich fertig - nur bei der Umsetzung haperts noch ein bisschen.

Meine Grundidee ist folgende:
- Die X- und Y-Koordinaten jedes Blockes werden auf Variablen im Maker geschrieben (soweit kein Problem)
- Diese werden dann auf Variablen im Quelltext geschrieben
- Ein Algorithmus errechnet, welche Blöcke verschwinden sollen
- Für jeden Block gibt es im Maker einen Switch, welcher vom Quelltext dann auf ON gestellt wird. Dieser Switch ist die Bedingung einer Eventpage, welche das Blockevent dann löscht

Der Algorithmus ist mit Sicherheit nicht der beste, funktionieren sollte er aber trotzdem. Hier eine kurze Erklärung:
Es wird zuerst überprüft, ob ein bestimmt Block direkt rechts neben einem bestimmten anderen Block ist (z.B. Block 2 direkt rechts neben Block 1). Danach werden alle restlichen Blöcke überprüft, ob sie direkt rechts neben Block 2 sind und nochmal alle restlichen direkt rechts neben diesem. Somit werden alle möglichen Kombinationen abgefragt, welche mit der Blockreihenfolge "Block 1, Block 2" beginnen.
Das alles habe ich zu einer Methode definiert, welche ich dann mit allen möglichen 2er-Startkombinationen der Blöcke aufrufe, sodass insgesamt alle möglichen Kombinationen abgefragt werden.

Und hier ist der Quelltext:
Code:
# Farbige Blöcke

x_ko1 = [$game_variables[0001], false]        #Variablenzuweisungen:
x_ko2 = [$game_variables[0002], false]        #x_ko1[0] = X-Koordinate des ersten Blockes,
x_ko3 = [$game_variables[0003], false]        #die Boolean-Variable dient dem Verschwindenlassen
x_ko4 = [$game_variables[0004], false]        #y_ko1[0] = Y-Koordinate des ersten Blockes usw.
x_ko5 = [$game_variables[0005], false]
x_ko6 = [$game_variables[0006], false]
y_ko1 = [$game_variables[0008], false]
y_ko2 = [$game_variables[0009], false]
y_ko3 = [$game_variables[0010], false]
y_ko4 = [$game_variables[0011], false]
y_ko5 = [$game_variables[0012], false]
y_ko6 = [$game_variables[0013], false]




def Bloecke(x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6)
# Mein Algorithmus
if y1[0] == y2[0] then                #Wenn B1 (Block1) und B2 (Block2) in derselben Reihe sind, dann
if x2[0] == x1[0]+1 then            #Wenn B2 direkt rechts neben B1 ist, dann

    if y6[0] == y1[0] then                #Wenn B6
    if x6[0] == x2[0]+1 then            #direkt rechts neben B2 ist, dann
    
        if y3[0] == y1[0] then                #Wenn B3
        if x3[0] == x6[0]+1 then            #direkt rechts neben B6 ist, dann
            if y5[0] == y1[0] then                    #Wenn B5
                if x5[0] == x3[0]+1 then            #direkt rechts neben B3 ist, dann
                x5[1] = true                        #Lasse B5 verschwinden
                end
            end
            if y4[0] == y1[0] then                    #Wenn B4
                if x4[0] == x3[0]+1 then            #direkt rechts neben B3 ist, dann
                x4[1] = true                        #Lasse B4 verschwinden
                end
            end
            x3[1] = true                    #Lasse B3 verschwinden
        end
        end
    
        if y5[0] == y1[0] then                #Wenn B5
        if x5[0] == x6[0]+1 then            #direkt rechts neben B6 ist, dann
            if y4[0] == y1[0] then                    #Wenn B4
                if x4[0] == x5[0]+1 then            #direkt rechts neben B5 ist, dann
                x4[1] = true                        #Lasse B4 verschwinden
                end
            end
            if y3[0] == y1[0] then                    #Wenn B3
                if x3[0] == x5[0]+1 then            #direkt rechts neben B5 ist, dann
                x3[1] = true                        #Lasse B3 verschwinden
                end
            end
            x5[1] = true                    #Lasse B5 verschwinden
        end
        end
    
        if y4[0] == y1[0] then                #Wenn B4
        if x4[0] == x6[0]+1 then            #direkt rechts neben B6 ist, dann
            if y5[0] == y1[0] then                    #Wenn B5
                if x5[0] == x4[0]+1 then            #direkt rechts neben B4 ist, dann
                x5[1] = true                        #Lasse B5 verschwinden
                end
            end
            if y3[0] == y1[0] then                    #Wenn B3
                if x3[0] == x4[0]+1 then            #direkt rechts neben B4 ist, dann
                x3[1] = true                        #Lasse B3 verschwinden
                end
            end
            x4[1] = true                    #Lasse B4 verschwinden
        end
        end
        x1[1] = true                    #Lasse B1, B2 und B6 verschwinden
        x2[1] = true
        x6[1] = true
    end
    end
    
    
    if y5[0] == y1[0] then
    if x5[0] == x2[0]+1 then

        if y6[0] == y1[0] then
        if x6[0] == x5[0]+1 then
            if y3[0] == y1[0] then
                if x3[0] == x6[0]+1 then
                x3[1] = true
                end
            end
            if y4[0] == y1[0] then
                if x4[0] == x6[0]+1 then
                x4[1] = true
                end
            end
            x6[1] = true
        end
        end
    
        if y3[0] == y1[0] then
        if x3[0] == x5[0]+1 then
            if y4[0] == y1[0] then
                if x4[0] == x3[0]+1 then
                x4[1] = true
                end
            end
            if y6[0] == y1[0] then
                if x6[0] == x3[0]+1 then
                x6[1] = true
                end
            end
            x3[1] = true
        end
        end
        
        if y4[0] == y1[0] then
        if x4[0] == x5[0]+1 then
            if y3[0] == y1[0] then
                if x3[0] == x4[0]+1 then
                x3[1] = true
                end
            end
            if y6[0] == y1[0] then
                if x6[0] == x4[0]+1 then
                x6[1] = true
                end
            end
            x4[1] = true
        end
        end
        x1[1] = true
        x2[1] = true
        x5[1] = true
    end
    end

    if y4[0] == y1[0] then
    if x4[0] == x2[0]+1 then
    
        if y6[0] == y1[0] then
        if x6[0] == x4[0]+1 then
            if y5[0] == y1[0] then
                if x5[0] == x6[0]+1 then
                x5[1] = true
                end
            end
            if y3[0] == y1[0] then
                if x3[0] == x6[0]+1 then
                x3[1] = true
                end
            end            
            x6[1] = true
        end
        end
    
    
        if y5[0] == y1[0] then
        if x5[0] == x4[0]+1 then
            if y3[0] == y1[0] then
                if x3[0] == x5[0]+1 then
                x3[1] = true
                end
            end
            if y6[0] == y1[0] then
                if x6[0] == x5[0]+1 then
                x6[1] = true
                end
            end
            x5[1] = true
        end
        end
            
        if y3[0] == y1[0] then
        if x3[0] == x4[0]+1 then
            if y5[0] == y1[0] then
                if x5[0] == x3[0]+1 then
                x5[1] = true
                end
            end
            if y6[0] == y1[0] then
                if x6[0] == x3[0]+1 then
                x6[1] = true
                end
            end
            x3[1] = true
        end
        end
        x1[1] = true
        x2[1] = true
        x4[1] = true
    end
    end
    
    if y3[0] == y1[0] then
    if x3[0] == x2[0]+1 then
    
        if y6[0] == y1[0] then
        if x6[0] == x3[0]+1 then
            if y5 == y1 then
                if x5[0] == x6[0]+1 then
                x5[1] = true
                end
            end
            if y4[0] == y1[0] then
                if x4[0] == x6[0]+1 then
                x4[1] = true
                end
            end
            x6[1] = true
        end
        end
            
        if y5[0] == y1[0] then
        if x5[0] == x3[0]+1 then
            if y4 == y1 then
                if x4[0] == x5[0]+1 then
                x4[1] = true
                end
            end
            if y6[0] == y1[0] then
                if x6[0] == x5[0]+1 then
                x6[1] = true
                end
            end
            x5[1] = true            
        end
        end
    
        if y4[0] == y1[0] then
        if x4[0] == x3[0]+1 then
            if y5[0] == y1[0] then
                if x5[0] == x4[0]+1 then
                x5[1] = true
                end
            end
            if y6[0] == y1[0] then
                if x6[0] == x4[0]+1 then
                x6[1] = true
                end
            end
            x4[1] = true
        end
        end
        x1[1] = true
        x2[1] = true
        x3[1] = true
    end
    end
                        
end
end

end

Bloecke(x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6, y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6, y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6, y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6, y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6, y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6)

Bloecke(x_ko2, x_ko1, x_ko3, x_ko4, x_ko5, x_ko6, y_ko2, y_ko1, y_ko3, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko2, x_ko3, x_ko1, x_ko4, x_ko5, x_ko6, y_ko2, y_ko3, y_ko1, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko2, x_ko4, x_ko3, x_ko1, x_ko5, x_ko6, y_ko2, y_ko4, y_ko3, y_ko1, y_ko5, y_ko6)
Bloecke(x_ko2, x_ko5, x_ko3, x_ko4, x_ko1, x_ko6, y_ko2, y_ko5, y_ko3, y_ko4, y_ko1, y_ko6)
Bloecke(x_ko2, x_ko6, x_ko3, x_ko4, x_ko5, x_ko1, y_ko2, y_ko6, y_ko3, y_ko4, y_ko5, y_ko1)

Bloecke(x_ko3, x_ko1, x_ko2, x_ko4, x_ko5, x_ko6, y_ko3, y_ko1, y_ko2, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko3, x_ko2, x_ko1, x_ko4, x_ko5, x_ko6, y_ko3, y_ko2, y_ko1, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko3, x_ko4, x_ko1, x_ko2, x_ko5, x_ko6, y_ko3, y_ko4, y_ko1, y_ko2, y_ko5, y_ko6)
Bloecke(x_ko3, x_ko5, x_ko1, x_ko4, x_ko2, x_ko6, y_ko3, y_ko5, y_ko1, y_ko4, y_ko2, y_ko6)
Bloecke(x_ko3, x_ko6, x_ko1, x_ko4, x_ko5, x_ko2, y_ko3, y_ko6, y_ko1, y_ko4, y_ko5, y_ko2)

Bloecke(x_ko4, x_ko1, x_ko3, x_ko2, x_ko5, x_ko6, y_ko4, y_ko1, y_ko3, y_ko2, y_ko5, y_ko6)
Bloecke(x_ko4, x_ko2, x_ko3, x_ko1, x_ko5, x_ko6, y_ko4, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko4, x_ko3, x_ko2, x_ko1, x_ko5, x_ko6, y_ko4, y_ko3, y_ko2, y_ko4, y_ko5, y_ko6)
Bloecke(x_ko4, x_ko5, x_ko3, x_ko1, x_ko2, x_ko6, y_ko4, y_ko5, y_ko3, y_ko4, y_ko2, y_ko6)
Bloecke(x_ko4, x_ko6, x_ko3, x_ko1, x_ko5, x_ko2, y_ko4, y_ko6, y_ko3, y_ko4, y_ko5, y_ko2)

Bloecke(x_ko5, x_ko1, x_ko3, x_ko4, x_ko2, x_ko6, y_ko5, y_ko1, y_ko3, y_ko4, y_ko2, y_ko6)
Bloecke(x_ko5, x_ko2, x_ko3, x_ko4, x_ko1, x_ko6, y_ko5, y_ko2, y_ko3, y_ko4, y_ko1, y_ko6)
Bloecke(x_ko5, x_ko3, x_ko2, x_ko4, x_ko1, x_ko6, y_ko5, y_ko3, y_ko2, y_ko4, y_ko1, y_ko6)
Bloecke(x_ko5, x_ko4, x_ko3, x_ko2, x_ko1, x_ko6, y_ko5, y_ko4, y_ko3, y_ko2, y_ko1, y_ko6)
Bloecke(x_ko5, x_ko6, x_ko3, x_ko4, x_ko1, x_ko2, y_ko5, y_ko6, y_ko3, y_ko4, y_ko1, y_ko2)

Bloecke(x_ko6, x_ko1, x_ko3, x_ko4, x_ko5, x_ko2, y_ko6, y_ko1, y_ko3, y_ko4, y_ko5, y_ko2)
Bloecke(x_ko6, x_ko2, x_ko3, x_ko4, x_ko5, x_ko1, y_ko6, y_ko2, y_ko3, y_ko4, y_ko5, y_ko1)
Bloecke(x_ko6, x_ko3, x_ko2, x_ko4, x_ko5, x_ko1, y_ko6, y_ko3, y_ko2, y_ko4, y_ko5, y_ko1)
Bloecke(x_ko6, x_ko4, x_ko3, x_ko2, x_ko5, x_ko1, y_ko6, y_ko4, y_ko3, y_ko2, y_ko5, y_ko1)
Bloecke(x_ko6, x_ko5, x_ko3, x_ko4, x_ko2, x_ko1, y_ko6, y_ko5, y_ko3, y_ko4, y_ko2, y_ko1)



Bloecke(y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6, x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6, x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6, x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6, x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko1, y_ko2, y_ko3, y_ko4, y_ko5, y_ko6, x_ko1, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6)

Bloecke(y_ko2, y_ko1, y_ko3, y_ko4, y_ko5, y_ko6, x_ko2, x_ko1, x_ko3, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko2, y_ko3, y_ko1, y_ko4, y_ko5, y_ko6, x_ko2, x_ko3, x_ko1, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko2, y_ko4, y_ko3, y_ko1, y_ko5, y_ko6, x_ko2, x_ko4, x_ko3, x_ko1, x_ko5, x_ko6)
Bloecke(y_ko2, y_ko5, y_ko3, y_ko4, y_ko1, y_ko6, x_ko2, x_ko5, x_ko3, x_ko4, x_ko1, x_ko6)
Bloecke(y_ko2, y_ko6, y_ko3, y_ko4, y_ko5, y_ko1, x_ko2, x_ko6, x_ko3, x_ko4, x_ko5, x_ko1)

Bloecke(y_ko3, y_ko1, y_ko2, y_ko4, y_ko5, y_ko6, x_ko3, x_ko1, x_ko2, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko3, y_ko2, y_ko1, y_ko4, y_ko5, y_ko6, x_ko3, x_ko2, x_ko1, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko3, y_ko4, y_ko1, y_ko2, y_ko5, y_ko6, x_ko3, x_ko4, x_ko1, x_ko2, x_ko5, x_ko6)
Bloecke(y_ko3, y_ko5, y_ko1, y_ko4, y_ko2, y_ko6, x_ko3, x_ko5, x_ko1, x_ko4, x_ko2, x_ko6)
Bloecke(y_ko3, y_ko6, y_ko1, y_ko4, y_ko5, y_ko2, x_ko3, x_ko6, x_ko1, x_ko4, x_ko5, x_ko2)

Bloecke(y_ko4, y_ko1, y_ko3, y_ko2, y_ko5, y_ko6, x_ko4, x_ko1, x_ko3, x_ko2, x_ko5, x_ko6)
Bloecke(y_ko4, y_ko2, y_ko3, y_ko1, y_ko5, y_ko6, x_ko4, x_ko2, x_ko3, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko4, y_ko3, y_ko2, y_ko1, y_ko5, y_ko6, x_ko4, x_ko3, x_ko2, x_ko4, x_ko5, x_ko6)
Bloecke(y_ko4, y_ko5, y_ko3, y_ko1, y_ko2, y_ko6, x_ko4, x_ko5, x_ko3, x_ko4, x_ko2, x_ko6)
Bloecke(y_ko4, y_ko6, y_ko3, y_ko1, y_ko5, y_ko2, x_ko4, x_ko6, x_ko3, x_ko4, x_ko5, x_ko2)

Bloecke(y_ko5, y_ko1, y_ko3, y_ko4, y_ko2, y_ko6, x_ko5, x_ko1, x_ko3, x_ko4, x_ko2, x_ko6)
Bloecke(y_ko5, y_ko2, y_ko3, y_ko4, y_ko1, y_ko6, x_ko5, x_ko2, x_ko3, x_ko4, x_ko1, x_ko6)
Bloecke(y_ko5, y_ko3, y_ko2, y_ko4, y_ko1, y_ko6, x_ko5, x_ko3, x_ko2, x_ko4, x_ko1, x_ko6)
Bloecke(y_ko5, y_ko4, y_ko3, y_ko2, y_ko1, y_ko6, x_ko5, x_ko4, x_ko3, x_ko2, x_ko1, x_ko6)
Bloecke(y_ko5, y_ko6, y_ko3, y_ko4, y_ko1, y_ko2, x_ko5, x_ko6, x_ko3, x_ko4, x_ko1, x_ko2)

Bloecke(y_ko6, y_ko1, y_ko3, y_ko4, y_ko5, y_ko2, x_ko6, x_ko1, x_ko3, x_ko4, x_ko5, x_ko2)
Bloecke(y_ko6, y_ko2, y_ko3, y_ko4, y_ko5, y_ko1, x_ko6, x_ko2, x_ko3, x_ko4, x_ko5, x_ko1)
Bloecke(y_ko6, y_ko3, y_ko2, y_ko4, y_ko5, y_ko1, x_ko6, x_ko3, x_ko2, x_ko4, x_ko5, x_ko1)
Bloecke(y_ko6, y_ko4, y_ko3, y_ko2, y_ko5, y_ko1, x_ko6, x_ko4, x_ko3, x_ko2, x_ko5, x_ko1)
Bloecke(y_ko6, y_ko5, y_ko3, y_ko4, y_ko2, y_ko1, x_ko6, x_ko5, x_ko3, x_ko4, x_ko2, x_ko1)


if x1[1] = true then
    $game_switches[0001] = true                            #Hier habe ich mir überlegt, für jeden Block im Quelltext
end                                                        #eine Boolean-Variable zu erstellen
if x2[1] = true then
    $game_switches[0002] = true        
end
if x3[1] = true then
    $game_switches[0003] = true                            #Hier wollte ich es so einstellen, dass wenn diese Variable true ist,
end                                                        #im Maker ein Switch auf ON gestellt wird
if x4[1] = true then
    $game_switches[0004] = true        
end
if x5[1] = true then
    $game_switches[0005] = true                            #Dieser Switch ist dann im Event des Blocks als Bedingung einer
end                                                        #Eventpage enthalten, welche das Event dann löscht
if x6[1] = true then
    $game_switches[0006] = true
end

if y1[1] = true then
    $game_switches[0001] = true
end
if y2[1] = true then
    $game_switches[0002] = true        
end
if y3[1] = true then
    $game_switches[0003] = true
end
if y4[1] = true then
    $game_switches[0004] = true        
end
if y5[1] = true then
    $game_switches[0005] = true
end
if y6[1] = true then
    $game_switches[0006] = true
end
Und jetzt meine Frage: Lässt sich das alles so realisieren und wenn ja, wie genau?
Wenn ich den Quelltext so in den Skripteditor kopiere, kommt schon in Zeile 9 (bei der Zuweisung von y_ko1 eine Fehlermeldung)....

MfG, Cale