• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

[AppleScript] Hilfe bei einem kleinen Errate Skript

Registriert
11.07.17
Beiträge
3
Hallo,
ich bin gerade dabei ein kleines Zahl Errate Spiel mit Apple Skript zu programmieren!
Aber leider funktioniert ein Teil davon nicht!

Hier das Skript:
Code:
set Erraten to false as boolean
set Zahl to 5
-- eigentlich kommt statt 5,  random number from 1 to 25 as number, aber ich hab einfach mal 5 hingeschrieben damit ich die Zahl selber nicht jedes mal erraten muss xD

repeat until Erraten is true
   
    set Frage to display dialog "Errate die Zahl!" default answer "" buttons {"Ok"}
    set Antwort to text returned of Frage
   
    if Antwort > Zahl then display dialog "Die Zahl ist kleiner!"
    if Antwort < Zahl then display dialog "Die Zahl ist größer!"
   
    if Antwort = Zahl then
        set Erraten to true
        display dialog "Du hast es Erraten!" buttons {"Ok"}
    end if
   
end repeat

Das Skript stoppt nicht, auch wenn ich die richtige Zahl angebe (5) , es kommt auch nicht "Du hast es erraten!" sondern es fängt einfach wieder am Anfang von der Schleife an!

Zudem würde ich noch gerne machen, dass man nur 5 Versuche hat um die Zahl zu erraten, also iwas mit
repeat 5 times until Erraten = true
Aber das geht ja so nicht : /
Ich bin leider noch ein Anfänger bei Apple Script
 
Hallo,

hier die nötigsten Korrekturen...
Bedenke, dass 5 eine "number" ist ! ;)

Code:
--set Erraten to false as boolean
set Zahl to 5
-- eigentlich kommt statt 5,  random number from 1 to 25 as number, aber ich hab einfach mal 5 hingeschrieben damit ich die Zahl selber nicht jedes mal erraten muss xD

repeat 5 times
    set Frage to display dialog "Errate die Zahl!" default answer "" buttons {"Ok"} default button 1
    set Antwort to (text returned of Frage) as number
    
    if Antwort > Zahl then display dialog "Die Zahl ist kleiner!"
    if Antwort < Zahl then display dialog "Die Zahl ist größer!"
    
    if Antwort = Zahl then
        --set Erraten to true
        display dialog "Du hast es Erraten!" buttons {"Ok"}
        exit repeat
    end if
end repeat

Was ist, wenn Text oder gar nichts eingegeben wird?
Du könntest das z.B. mit einem "try - on error" Block abfangen...

Gruß
 
Ok, also erstmal danke! Es funktioniert super!
Doch das mit dem Boolean hätte ich deshalb gerne drin gehabt, weil ich wollte, dass wenn man es nach 5 Runden nicht geschafft hat, noch eine Meldung oder so kommt! Wenn man nichts angibt, dann kommt "Die Zahl ist Größer" - Iwie logisch xD
wenn man Text eingibt kommt ne error meldung, die aber mit try einfach ignoriert wird und dann ist auch egal
 
Hallo,

danke für deine Rückmeldung :)

zu boolean:
hatte das ja drinnen gelassen, aber deaktiviert, da es keine Funktion im Skript mehr hatte ....
apropos:
true & false sind boolean, müssen nicht als solche gesetzt werden!
Code:
set Erraten to false
class of Erraten  --Ergebnis: boolean
.
.
wenn man Text eingibt kommt ne error meldung, die aber mit try einfach ignoriert wird
Dafür ja on error
.
.
Wenn man nichts angibt, dann kommt "Die Zahl ist Größer" - Iwie logisch xD
Wenn man nichts eingibt, wird text returned as number ( hier: "") als die Zahl 0 interpretiert ....ob das wirklich logisch ist, bin ich mir nicht sicher.
So würde man das umgehen:
Code:
set Antwort to (text returned of Frage)
if Antwort = number then
tue dies
else
tue das
end if
.
Soweit schon mal zu den unergründlichen Tiefen der AppleScript Welten :p