Докато се уча как да пиша кодове в AppleScript, създадох тази проста игра, за да приложа моите все още не много големи знания на практика.
Моят код показва съобщение, което моли потребителя/играча да познае число между 1 и 20 и сравнява въведеното от тях с произволно избраното. Когато предположението на играча = произволно избрано число, играта приключва. Дотогава той продължава да иска от играча да познае по-ниско или по-високо.
Трудя се да покажа съобщение („Познай число!!!“), когато потребителят/играчът не въвежда число, а буква или друг символ, различен от число.
Разбрах, че ако не получа въведеното от потребителя/играча „като цяло число“, компилаторът няма да го сравни, за да провери дали е вътре или извън дадения диапазон (1 до 20).
Но докато правя това, всеки път, когато потребителят/играчът не въведе число (а буква или друг символ, различен от число), компилаторът ще покаже грешка, която казва, че не може да трансформира този знак в цяло число.
По този начин не мога дори да използвам оператор if, за да накарам компилатора да покаже моето съобщение („Познайте число!!!“), когато потребителят/играчът не въведе число!
Би било нещо подобно: Ако playersGuess ≠ integer, тогава се показва диалоговият прозорец „Познай число!!!“ край ако
Как да реша този проблем? Благодаря предварително!
set RandomNumber to (random number from 1 to 20) as integer
display dialog RandomNumber
set EndOfGame to false
set NoOfTries to 0
repeat until EndOfGame is true
set Playersguess to the text returned of (display dialog "I'm thinking on a number between 1 and 20. Guess which one it is!" default answer "" buttons {"Ok"} default button 1) as integer
if Playersguess = RandomNumber then
set NoOfTries to NoOfTries + 1
if NoOfTries > 1 then
display dialog "Very well! It took you " & NoOfTries & " tries to guess the number I was thinking."
set EndOfGame to true
else
display dialog "Very well! It took you " & NoOfTries & " try to guess the number I was thinking."
set EndOfGame to true
end if
else if (Playersguess > RandomNumber) and (Playersguess < 21) and (Playersguess ≠ RandomNumber) then
display dialog "Wrong guess! Guess lower!"
set NoOfTries to NoOfTries + 1
else if (Playersguess < RandomNumber) and (Playersguess > 0) and (Playersguess ≠ RandomNumber) then
display dialog "Wrong guess! Guess higher!"
set NoOfTries to NoOfTries + 1
else if Playersguess > 20 then
display dialog "Guess a number up to 20!!!"
else if Playersguess < 1 then
display dialog "Guess a number starting at 1!!!"
end if
end repeat
playGame
функция, която се извиква, когато играч или; отгатва неправилно, въвежда не-число, не въвежда нищо или не. е извън обхват. Той правилно обработва десетични числа, които играчът може да въведе, напр. 7.3. Избягва да се налага да се указва списък с всички възможни числа в диапазона - person RobC   schedule 03.03.2020