Пока я учусь писать коды на AppleScript, я создал эту простую игру, чтобы применить на практике свои еще не очень большие знания.
Мой код отображает сообщение с просьбой к пользователю/игроку угадать число от 1 до 20 и сравнить их ввод со случайно выбранным. Когда догадка игрока = случайно выбранному числу, игра заканчивается. До этого он продолжает просить игрока угадать меньше или больше.
Я изо всех сил пытаюсь отобразить сообщение («Угадай число!!!») всякий раз, когда пользователь/игрок вводит не число, а букву или любой другой символ, кроме числа.
Я понял, что если я не получу ввод пользователя/игрока «как целое число», компилятор не будет сравнивать его, чтобы проверить, находится ли он внутри или вне заданного диапазона (от 1 до 20).
Но когда я это делаю, всякий раз, когда пользователь/игрок вводит не число (а букву или любой другой символ, отличный от числа), компилятор выдает ошибку, говорящую о том, что он не может преобразовать этот символ в целое число.
Таким образом, я даже не могу использовать оператор if, чтобы заставить компилятор отображать мое сообщение («Угадай число!!!») всякий раз, когда пользователь/игрок не набирает число!
Это будет что-то вроде: Если playerGuess ≠ 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