1. #1
    Avatar von martin38524
    Registriert seit
    12.08.2008
    Beiträge
    462
    Konsolen
    Wii U 3DS Wii DS GC GBA N64
    Game Boy (1. Generation / 1990)

    Zelda - Twilight Princess: Lösung für das Sprung-Spiel (Master-Schwert)

    Hallo!
    Wenn man sich im Heiligen Hain (Wald von Phirone) auf die Suche nach dem Master-Schwert macht, dann begegnet man nach dem Kampf mit dem Horror Kid zwei Statuen, die das Master-Schwert bewachen. Um zum Master-Schwert zu kommen, muss man das Sprung-Spiel lösen, in dem man beide Statuen wieder auf ihre Ausgangsposition bewegen muss.

    Die schnellste Lösung sind 12 Züge:
    1. links
    2. runter
    3. hoch
    4. hoch
    5. hoch
    6. rechts
    7. rechts
    8. runter
    9. runter
    10. runter
    11. links
    12. hoch

  2. #2
    Avatar von Ðe3pthrøAt
    Registriert seit
    27.07.2002
    Beiträge
    2.859
    Konsolen
    3DS Wii XBOX 360
    m17x R4
    Danke an dieser Stelle hänge ich schon seit 5 Jahren

  3. #3
    Avatar von martin38524
    Registriert seit
    12.08.2008
    Beiträge
    462
    Konsolen
    Wii U 3DS Wii DS GC GBA N64
    Game Boy (1. Generation / 1990)
    Zitat Zitat von Ðe3pthrøAt Beitrag anzeigen
    Danke an dieser Stelle hänge ich schon seit 5 Jahren
    Dann hast Du ja Glück das ich mir die Mühe gemacht habe das folgende Programm zu schreiben... (Mich hat die technische Spielerei gereizt) Nach 1,5 Stunden hat der 7.683.426-te Code das Rätsel gelöst.

    Nachtrag vom 5.11.2011:
    Heute habe ich das Programm verbessert. Mir war aufgefallen das ich nach jedem Sprung von Link überprüft habe, ob beide Statuen wieder auf ihrer Ausgangsposition stehen. Das ist natürlich viel zu umständlich, weil das frühestens am Ende des richtigen Codes passieren kann. Nachdem ich das Programm so verändert hatte, das erst am Ende eines Codes überprüft wird, ob beide Statuen wieder auf ihrer Ausgangsposition stehen, wurde das Ergebnis 2,3% schneller gefunden.
    Zum anderen zeigt das Programm jetzt mit dem Ergebnis auch an, um welche Uhrzeit es gestartet wurde und wann es das Ergebnis gefunden hat.
    Auf meinem neueren PC läuft der AMIGA-Emulator scheinbar auch wesentlich schneller... Hier hatte mein Programm bereits nach 22 Minuten das Ergebnis gefunden. Mein alter Tower - auf dem ich das alte Programm zuerst habe ablaufen lassen - brauchte hierfür 1,5 Stunden.

    Quellcode für "Blitz Basic" (Commodore AMIGA)

    Code:
    WBStartup
    ;
    ; Das Staturen-Raetsel aus dem Spiel "Zelda - Twilight Princess"
    ;
    ; Programmiert von: Martin Oppermann
    ;            Datum: 26.10.2011
    ;                    5.11.2011 Version 2: Die End-Positionen werden nur noch
    ;                                         am Ende eines Codes ueberprueft
    ;                                         und nicht mehr nach jedem Sprung
    ;                                         von Link.
    ;
    ; Dieses Programm loesst das Staturen-Raetsel aus dem Spiel "Zelda -
    ; Twilight Princess", indem es alle moeglichen Sprung-Kombinationen testet.
    ; Diese Sprung-Kombinationen werden durch eine Art von Binaercode
    ; vorgegeben, dessen Stellen nicht - wie ueblich - nur aus den Zahlen
    ; 0 und 1, sondern aus den Zahlen 1 bis 4 bestehen.
    ;
    ; Sprung-Code (Richtungen):  1
    ;                           2+3
    ;                            4
    ;
    ; Zum anderen wird dieser Code nicht wie ein Binaercode von rechts nach
    ; links, sondern von links nach rechts abgearbeitet. Die Zahlen im Code
    ; geben dann - Stelle fuer Stelle - die Richtungen vor, in die Link
    ; springen soll. Die beiden Staturen folgen dann - auf ihre eigene Art und
    ; Weise - den Spruengen von Link.
    ;
    ; Figur 1: Link
    ; Figur 2: obere Statur  (springt spiegelverkehrt zu Link)
    ; Figur 3: untere Statur (springt wie Link)
    ;
    ; Wenn ein Code nicht abgearbeitet werden kann, oder er das Raetsel nicht
    ; loesen konnte, dann wird der naechste Code erzeugt. Wenn alle moeglichen
    ; Kombinationen aus den Zahlen 1 bis 4 getestet wurden, dann wird der Code
    ; um eine Stelle erweitert und alle Zahlen beginnen wieder mit 1.
    ;
    ; ---- Die Startzeit merken ------------------------------------------
    Gosub urzeit
    start$=urzeit$
    ; ---- Variablen als Ganz-Zahlen festlegen ---------------------------
    DEFTYPE.l codes
    DEFTYPE.l prozent,prozente,prozentzahlen
    DEFTYPE.l spruenge
    DEFTYPE.l stelle
    DEFTYPE.l wert
    DEFTYPE.l x
    DEFTYPE.l y
    ; ---- Feld-Variablen festlegen --------------------------------------
    Dim feld$(9,10)
    Dim figur.l(3,2)
    Dim figurboden$(3)
    ; ---- Das Spielfeld einlesen ----------------------------------------
    For y=1 To 10
    Read zeile$
    For x=1 To 9
    feld$(x,y)=Mid$(zeile$,x,1)
    Next x,y
    Data$"........."
    Data$"........."
    Data$"..OO.OO.."
    Data$"..OXOXO.."
    Data$"..OOOOO.."
    Data$"...OOO..."
    Data$"...OOO..."
    Data$"....O...."
    Data$"........."
    Data$"........."
    ; ---- Den Code um eine Stelle (Sprung/Zug) erweitern ----------------
    codeerweitern:
    spruenge+1
    Dim code.l(spruenge)
    prozente=1
    For x=1 To spruenge
    code(x)=1
    prozente*4
    Next x
    code(1)=0
    wert=prozente
    Gosub wert
    NPrint"Aktuell wird ein Code mit ",spruenge," Stellen verwendet. (Codes: "+wert$+")"
    Print"0%"
    prozente=Int(prozente/10)
    prozent=prozente
    prozentzahlen=0
    ; ---- Den naechsten Code erzeugen -----------------------------------
    naechstercode:
    x=0
    naechstercodestelle:
    x+1
    If x>spruenge Then NPrint", 100%":NPrint"":Goto codeerweitern
    code(x)+1
    If code(x)=5 Then code(x)=1:Goto naechstercodestelle
    codes+1
    prozent-1
    If prozent=0 Then prozent=prozente:If prozentzahlen<90 Then prozentzahlen+10:Print", ",prozentzahlen,"%"
    ; ---- Die letzten Standorte loeschen --------------------------------
    For x=1 To 3
    feld$(figur(x,1),figur(x,2))=figurboden$(x)
    Next x
    ; ---- Startpositionen setzen ----------------------------------------
    figur(1,2)=6
    figur(2,2)=4
    figur(3,2)=8
    For x=1 To 3
    figur(x,1)=5
    feld$(5,figur(x,2))=Str$(x)
    figurboden$(x)="O"
    Next x
    ; ---- Den Code abarbeiten -------------------------------------------
    stelle=0
    codeabarbeiten:
    stelle+1
    If stelle>spruenge Then Goto fertig
    If code(stelle)=2 Then Goto links
    If code(stelle)=3 Then Goto rechts
    If code(stelle)=4 Then Goto runter
    ; ---- Link springt nach oben ----------------------------------------
    ; ---- Kann Link springen? ----
    a$=feld$(figur(1,1),figur(1,2)-1)
    If a$="O" OR a$="X" Then Goto obenlinkspringt
    Goto naechstercode
    ; ---- Links Standort loeschen ----
    obenlinkspringt:
    feld$(figur(1,1),figur(1,2))=figurboden$(1)
    ; ---- Links neuen Standort setzen ----
    figur(1,2)-1
    figurboden$(1)=feld$(figur(1,1),figur(1,2))
    feld$(figur(1,1),figur(1,2))="1"
    ; ---- Obere Statur springt (spiegelverkehrt zu Link) ----
    a$=feld$(figur(2,1),figur(2,2)+1)
    b$=feld$(figur(2,1),figur(2,2)+2)
    ; ---- Wuerde Link platt gemacht? ----
    If a$="1" Then Goto naechstercode
    ; ---- Kann die obere Statur nicht springen? ----
    If a$="." Then Goto obenunterestaturspringt
    If a$="3" OR b$="3" Then Goto codeabarbeiten
    ; ---- Standort der obere Statur loeschen ----
    feld$(figur(2,1),figur(2,2))=figurboden$(2)
    ; ---- Neuen Standort der obere Statur setzen ----
    figur(2,2)+1
    figurboden$(2)=feld$(figur(2,1),figur(2,2))
    feld$(figur(2,1),figur(2,2))="2"
    ; ---- Untere Statur springt (wie Link) ----
    obenunterestaturspringt:
    ; ---- Kann die untere Statur nicht springen? ----
    If feld$(figur(3,1),figur(3,2)-1)="." Then Goto codeabarbeiten
    ; ---- Standort der unteren Statur loeschen ----
    feld$(figur(3,1),figur(3,2))=figurboden$(3)
    ; ---- Neuen Standort der unteren Statur setzen ----
    figur(3,2)-1
    figurboden$(3)=feld$(figur(3,1),figur(3,2))
    feld$(figur(3,1),figur(3,2))="3"
    Goto codeabarbeiten
    ; ---- Link springt nach links ---------------------------------------
    links:
    ; ---- Kann Link springen? ----
    a$=feld$(figur(1,1)-1,figur(1,2))
    If a$="O" OR a$="X" Then Goto linkslinkspringt
    Goto naechstercode
    ; ---- Links Standort loeschen ----
    linkslinkspringt:
    feld$(figur(1,1),figur(1,2))=figurboden$(1)
    ; ---- Links neuen Standort setzen ----
    figur(1,1)-1
    figurboden$(1)=feld$(figur(1,1),figur(1,2))
    feld$(figur(1,1),figur(1,2))="1"
    ; ---- Obere Statur springt (spiegelverkehrt zu Link) ----
    a$=feld$(figur(2,1)+1,figur(2,2))
    b$=feld$(figur(2,1)+2,figur(2,2))
    ; ---- Wuerde Link platt gemacht? ----
    If a$="1" Then Goto naechstercode
    ; ---- Kann die obere Statur nicht springen? ----
    If a$="." Then Goto linksunterestaturspringt
    If a$="3" OR b$="3" Then Goto codeabarbeiten
    ; ---- Standort der obere Statur loeschen ----
    feld$(figur(2,1),figur(2,2))=figurboden$(2)
    ; ---- Neuen Standort der obere Statur setzen ----
    figur(2,1)+1
    figurboden$(2)=feld$(figur(2,1),figur(2,2))
    feld$(figur(2,1),figur(2,2))="2"
    ; ---- Untere Statur springt (wie Link) ----
    linksunterestaturspringt:
    ; ---- Kann die untere Statur nicht springen? ----
    If feld$(figur(3,1)-1,figur(3,2))="." Then Goto codeabarbeiten
    ; ---- Standort der unteren Statur loeschen ----
    feld$(figur(3,1),figur(3,2))=figurboden$(3)
    ; ---- Neuen Standort der unteren Statur setzen ----
    figur(3,1)-1
    figurboden$(3)=feld$(figur(3,1),figur(3,2))
    feld$(figur(3,1),figur(3,2))="3"
    Goto codeabarbeiten
    ; ---- Link springt nach rechts --------------------------------------
    rechts:
    ; ---- Kann Link springen? ----
    a$=feld$(figur(1,1)+1,figur(1,2))
    If a$="O" OR a$="X" Then Goto rechtslinkspringt
    Goto naechstercode
    ; ---- Links Standort loeschen ----
    rechtslinkspringt:
    feld$(figur(1,1),figur(1,2))=figurboden$(1)
    ; ---- Links neuen Standort setzen ----
    figur(1,1)+1
    figurboden$(1)=feld$(figur(1,1),figur(1,2))
    feld$(figur(1,1),figur(1,2))="1"
    ; ---- Obere Statur springt (spiegelverkehrt zu Link) ----
    a$=feld$(figur(2,1)-1,figur(2,2))
    b$=feld$(figur(2,1)-2,figur(2,2))
    ; ---- Wuerde Link platt gemacht? ----
    If a$="1" Then Goto naechstercode
    ; ---- Kann die obere Statur nicht springen? ----
    If a$="." Then Goto rechtsunterestaturspringt
    If a$="3" OR b$="3" Then Goto codeabarbeiten
    ; ---- Standort der obere Statur loeschen ----
    feld$(figur(2,1),figur(2,2))=figurboden$(2)
    ; ---- Neuen Standort der obere Statur setzen ----
    figur(2,1)-1
    figurboden$(2)=feld$(figur(2,1),figur(2,2))
    feld$(figur(2,1),figur(2,2))="2"
    ; ---- Untere Statur springt (wie Link) ----
    rechtsunterestaturspringt:
    ; ---- Kann die untere Statur nicht springen? ----
    If feld$(figur(3,1)+1,figur(3,2))="." Then Goto codeabarbeiten
    ; ---- Standort der unteren Statur loeschen ----
    feld$(figur(3,1),figur(3,2))=figurboden$(3)
    ; ---- Neuen Standort der unteren Statur setzen ----
    figur(3,1)+1
    figurboden$(3)=feld$(figur(3,1),figur(3,2))
    feld$(figur(3,1),figur(3,2))="3"
    Goto codeabarbeiten
    ; ---- Link springt nach unten ---------------------------------------
    runter:
    ; ---- Kann Link springen? ----
    a$=feld$(figur(1,1),figur(1,2)+1)
    If a$="O" OR a$="X" Then Goto runterlinkspringt
    Goto naechstercode
    ; ---- Links Standort loeschen ----
    runterlinkspringt:
    feld$(figur(1,1),figur(1,2))=figurboden$(1)
    ; ---- Links neuen Standort setzen ----
    figur(1,2)+1
    figurboden$(1)=feld$(figur(1,1),figur(1,2))
    feld$(figur(1,1),figur(1,2))="1"
    ; ---- Obere Statur springt (spiegelverkehrt zu Link) ----
    a$=feld$(figur(2,1),figur(2,2)-1)
    b$=feld$(figur(2,1),figur(2,2)-2)
    ; ---- Wuerde Link platt gemacht? ----
    If a$="1" Then Goto naechstercode
    ; ---- Kann die obere Statur nicht springen? ----
    If a$="." Then Goto runterunterestaturspringt
    If a$="3" OR b$="3" Then Goto codeabarbeiten
    ; ---- Standort der obere Statur loeschen ----
    feld$(figur(2,1),figur(2,2))=figurboden$(2)
    ; ---- Neuen Standort der obere Statur setzen ----
    figur(2,2)-1
    figurboden$(2)=feld$(figur(2,1),figur(2,2))
    feld$(figur(2,1),figur(2,2))="2"
    ; ---- Untere Statur springt (wie Link) ----
    runterunterestaturspringt:
    ; ---- Kann die untere Statur nicht springen? ----
    If feld$(figur(3,1),figur(3,2)+1)="." Then Goto codeabarbeiten
    ; ---- Standort der unteren Statur loeschen ----
    feld$(figur(3,1),figur(3,2))=figurboden$(3)
    ; ---- Neuen Standort der unteren Statur setzen ----
    figur(3,2)+1
    figurboden$(3)=feld$(figur(3,1),figur(3,2))
    feld$(figur(3,1),figur(3,2))="3"
    Goto codeabarbeiten
    ; ---- Hat der Code funktioniert? ------------------------------------
    fertig:
    If figurboden$(2)="X" AND figurboden$(3)="X" Then Goto ergebnis
    Goto naechstercode
    ergebnis:
    Gosub urzeit
    NPrint""
    NPrint""
    wert=codes
    Gosub wert
    NPrint"Der "+wert$+"-te Code hat funktioniert!"
    NPrint""
    For x=1 To spruenge
    Print code(x)
    Next x
    NPrint""
    NPrint""
    For x=1 To spruenge
    If code(x)=1 Then Print"rauf"
    If code(x)=2 Then Print"links"
    If code(x)=3 Then Print"rechts"
    If code(x)=4 Then Print"runter"
    If x<spruenge Then Print", "
    Next x
    NPrint""
    NPrint"Start: "+start$
    NPrint" Ende: "+urzeit$
    NPrint""
    End
    ; ---- Unterprogramme ------------------------------------------------
    ; ---- Zifferngruppierung mit Punkten --------------------------------
    wert:
    wert$=""
    wertb$=Str$(wert)
    wertb:
    If Len(wertb$)<4 Then wert$=wertb$+wert$:Return
    wert$="."+Right$(wertb$,3)+wert$
    wertb$=UnLeft$(wertb$,3)
    Goto wertb
    ; ---- Urzeit --------------------------------------------------------
    urzeit:
    urzeit$=""
    urzeitb:
    DateFormat 0
    zeit$=Date$(SystemDate)
    zeit$=Str$(Hours)+":"+Right$("0"+Str$(Mins),2)+":"+Right$("0"+Str$(Secs),2)
    If urzeit$="" Then urzeit$=zeit$
    If urzeit$=zeit$ Then Goto urzeitb
    Return
    Geändert von martin38524 (05.11.2011 um 15:06 Uhr)

  4. #4
    Leidenschaftlicher Zocker

    Registriert seit
    13.04.2008
    Beiträge
    989
    gruselige Programmiersprache

  5. #5
    Avatar von Leonardron
    Registriert seit
    22.08.2011
    Beiträge
    3.206
    Spielt gerade
    GuildWars2 (PC), Indigames und Links awakening (Switch )
    Konsolen
    Switch 3DS Wii DS GC GBA N64 SNES GB NES
    SinclairZXSpectrum, Atari 2600, tSega Mega Drive, Amiga, A500Mini, etc. sowie Spiele -PC & -Notebook
    @martin38524 .............danke für die Mühe
    Hach der gute, alte Amiga. Hab auch noch so ein Teil, sogar mit 80 MByte Festplatte und der funktioniet auch noch.
    Die 80Mbyte waren damals verdammt groß. PCs (486er) hatten damals auch nur max. 100MByte. Das waren noch Zeiten.
    Geändert von Leonardron (29.10.2011 um 15:54 Uhr)
    <img src=https://nintendo-online.de/forum/image.php?type=sigpic&userid=12448&dateline=1649083760 border=0 alt= />
    save mother earth & protect all creature


  6. #6
    Avatar von martin38524
    Registriert seit
    12.08.2008
    Beiträge
    462
    Konsolen
    Wii U 3DS Wii DS GC GBA N64
    Game Boy (1. Generation / 1990)
    Zitat Zitat von Leonardron Beitrag anzeigen
    @martin38524 .............danke für die Mühe
    Hach der gute, alte Amiga. Hab auch noch so ein Teil, sogar mit 80 MByte Festplatte und der funktioniet auch noch.
    Die 80Mbyte waren damals verdammt groß. PCs (486er) hatten damals auch nur max. 100MByte. Das waren noch Zeiten.
    Ich habe noch einen funktionsfähigen "AMIGA 1200 HD" mit 40 Megabyte Festplatte, Turbokarte, 2 Megabyte Chip-RAM und 32 Megabyte Fast-RAM (Speichererweiterung). Zusätzlich hat er noch einen SCSI-Anschluss, an dem ich bis zu 2 Gigabyte große externe Festplatten, ein CD-ROM-Laufwerk und einen Brenner anschließen kann. Von diesen Festplatten habe ich drei. Ob meine Festplatten noch heute funktionieren, kann ich allerdings nichts sagen. Seit 10 Jahren habe ich den AMIGA nicht mehr benutzt, weil ich seit 10 Jahren auf meinem PC einen emulieren (simulierten) "AMIGA 500" mit 2 Megabyte Chip-RAM und 8 Megabyte Fast-RAM (Speichererweiterung) betreibe. Dieser nutzt sinngemäß die 2 Terrabyte Festplatte meines PC's.

    AMIGA for ever!!!!

    Übrigens...
    Das WINDOWS (PC) war ja ursprünglich eine Erfindung des AMIGA und hieß Workbench. Bill Gates hat die Idee übernommen und so die Zeiten des MS-DOS beendet. In der Schule habe ich damals noch mit einem PC arbeiten müssen, bei dem alle Programme - und auch der Treiber der Maus - manuell gestartet werden mussten. Nutzer eines AMIGA's konnten damals über so etwas nur lachen...

  7. #7
    Avatar von Leonardron
    Registriert seit
    22.08.2011
    Beiträge
    3.206
    Spielt gerade
    GuildWars2 (PC), Indigames und Links awakening (Switch )
    Konsolen
    Switch 3DS Wii DS GC GBA N64 SNES GB NES
    SinclairZXSpectrum, Atari 2600, tSega Mega Drive, Amiga, A500Mini, etc. sowie Spiele -PC & -Notebook
    Jep da kann ich nur zustimmen, was hab ich Tränen gelacht bei der PC-Pixel Grafik und dem tollen DOS.
    Ach ja die ersten, zaghaften Gehversuche von Windows waren auch schon im gange......................
    Wenn Commodore doch damals nur am Ball geblieben wär, anstatt sich auf den Lorbeeren auszuruhen.
    Hab mir vor einem Jahr den offizellen Emulator AMIGA FOREVER 2010 gekauft, läuft auch super unter Win7.
    Der simuliert diverse Amigavarianten und ist offiziell zugelassen, da die Vertriebsfirma die Lizenz erworben hat

    Aber hier gehts ja um Masterschwert. Die Lösung werde ich demnächts mal testen, hab auch ewig gebraucht um diese Stelle zu
    meistern.. Weiß heute gar nicht mehr wie, hatte aber irgendwann Glück gehabt, dass es dann geklappt hat.
    Geändert von Leonardron (29.10.2011 um 16:39 Uhr)
    <img src=https://nintendo-online.de/forum/image.php?type=sigpic&userid=12448&dateline=1649083760 border=0 alt= />
    save mother earth & protect all creature


  8. #8
    Avatar von McGloomy
    Registriert seit
    20.04.2010
    Beiträge
    704
    Konsolen
    Switch 3DS Wii DS GBA GB
    Schön zu sehen, wie unterschiedliche Spieler das gleiche Rätsel auf verschiedene Arten lösen... Die einen probieren halt rum, die anderen schreiben gleich ein Programm.

  9. #9
    Avatar von Farore_Ghost
    Registriert seit
    19.08.2011
    Ort
    am Weißwurschd-Äquator nähe Lederhosen-Breitengrad
    Beiträge
    269
    Spielt gerade
    mit der Katze
    Konsolen
    Switch 3DS Wii DS GC N64
    ...und die schlauen, schauen bei Google

    So Rätsel habe ich ja sowieso sowas von gefressen. Nach zwei Versuchen hatte ich damals keine Lust mehr und hab im Internet nach Lösungshilfen gesucht. Bei mir sind's allerdings 13 Hüpfer...

    Links
    Runter
    Rechts
    Rechts
    Hoch
    Links
    Hoch
    Hoch
    Links
    Runter
    Runter
    Rechts
    Hoch
    ...Immer, wenn ich versuche über meinen Schatten zu springen
    knipst irgendwer das Licht aus...



  10. #10
    Avatar von McGloomy
    Registriert seit
    20.04.2010
    Beiträge
    704
    Konsolen
    Switch 3DS Wii DS GBA GB
    Ne, cheaten ist nicht... ^^
    Hab zwar ne Weile an dem Rätsel gesessen, aber es war dann umso schöner es selbst gelöst zu haben.

Ähnliche Themen

  1. The Legend of Zelda:Twilight Princess
    Von !NintendoFan! im Forum Zelda: Twilight Princess
    Antworten: 908
    Letzter Beitrag: 15.08.2014, 13:10
  2. Zelda :Twilight Princess Gamecube vs Wii
    Von Mista LoverLova im Forum Zelda: Twilight Princess
    Antworten: 80
    Letzter Beitrag: 26.12.2006, 23:43
  3. Zelda Twilight Princess
    Von Sir.Framerunner im Forum E3 2005
    Antworten: 312
    Letzter Beitrag: 28.07.2005, 00:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Anmelden

Anmelden