每当用户/播放器不输入数字时,都在显示消息(“猜数字!!”)。>

问题描述 投票:1回答:1

[我正在学习如何用AppleScript编写代码时,我已经创建了这个简单的游戏,将我还不是很丰富的知识付诸实践。

我的代码显示一条消息,要求用户/玩家猜测1到20之间的数字,并将他们的输入与随机选择的数字进行比较。当玩家的猜测=随机选择的数字时,游戏结束。在此之前,它一直要求玩家猜测是更低还是更高。

[当用户/玩家输入的不是数字,而是字母或数字以外的其他任何符号时,我都会努力显示一条消息(“猜数字!!”)。

我已经意识到,如果我没有以“整数”形式获得用户/播放器的输入,编译器将不会对其进行比较,以检查它是否在给定范围内(1到20)。

但是当我这样做时,每当用户/播放器未键入数字(而是字母或数字以外的其他任何符号)时,编译器将显示一条错误,指出无法将此字符转换为整数。

因此,每当用户/播放器不输入数字时,我什至都无法使用if语句使编译器显示我的消息(“猜数字!!”!

类似于:如果玩家猜测≠整数则显示对话框“猜数字!!!”如果结束,则>

我该如何解决这个问题?预先感谢!

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

我正在学习如何用AppleScript编写代码时,我已经创建了这个简单的游戏,将我还不是很广的知识付诸实践。我的代码显示一条消息,要求用户/玩家猜测一个...

dialog integer applescript comparison display
1个回答
0
投票

我在脚本的开头添加了两个属性。我还向您的代码中添加了此重复循环repeat while {Playersguess} is not in validNumbers,这是如何解决有人输入大于20的整数或我未在validNumbers属性中定义的任何其他键值的事件的示例...在set Playersguess to the text returned of块内包装这部分代码... try允许代码在遇到错误时继续运行。

您的代码还有其他一些问题需要解决,但就目前而言,我所做的调整应该能够使您回到正确的轨道上。

© www.soinside.com 2019 - 2024. All rights reserved.