• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

[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
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.368
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ß
 
Registriert
11.07.17
Beiträge
3
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
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.368
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