编程启蒙——LOGO编程——25-输入与键盘事件

第25章:输入与键盘事件

ξ 25.1 交互设计

 

交互的定义

 

程序在运行中,可以接收用户输入,再按用户输入内容执行相应的流程。


交互的类型

 

输入

在程序在运行过程中,通过弹出输入提示框,接收用户输入的内容。


事件

什么叫“事件”?

就是如果发生了某件事情,我们要怎样做。

比如说天气预报说今天有雨,那么我们出门就要带上雨伞,其中的“事件”就是“听到这个天气预报”,“出门 带雨伞”就是我们对这个事件做出的响应。


最常用的两种事件:

键盘事件

鼠标事件


ξ 25.2 输入指令


rl 指令: ->     read list     ->     “读 列表”

弹出输入框,将输入的内容做为一个列表

格式: rl

示例:

show rl

输入:11 12 23 14

输出:[ 11 12 23 14 ]


rw 指令: ->     read word     ->     “读 字”

弹出输入框,将输入的内容做为一个字符串

格式: rw

示例:

show rw

输入:how are you

输出:how are you


rc 指令: ->     read char     ->     “读 字符”

弹出输入框,将输入的内容做为一个字符

格式: rc

示例:

show rc

输入: abc

输出:a

show rc

输出:b

show rc

输出:c

show rc

弹出输入框


ξ 25.3 键盘事件

 

指令

 

keyboardon 指令: ->     keyboard on     ->     “键盘 开启”

键盘事件设置

格式: ( keyboardon 按键按下事件响应代码 按键弹起事件响应代码 )


keyboardvalue 指令:-> keyboard value -> “键盘 值”在键盘事件响应程序中获取按键的ASCII码值

格式: keyboardvalue


keyboardoff 指令: ->     keyboard off     ->     “键盘 关闭”

关闭键盘事件,调用之后不再响应键盘事件

格式: keyboardoff

 

示例

to jianpan_shili ;演示键盘事件

    seth 90 ;设置角度为90度

    pu ;抬笔

    setpos [300 60] ;移动到[ 300 60 ] 位置

    pd ;落笔

    label "|输入x:画小圆| ;界面显示提示语

    pu ;抬笔

    setpos [300 40] ;移动到[ 300 40 ] 位置

    pd ;落笔

    label "|输入d:画大圆| ;界面显示提示语

    pu ;抬笔

    setpos [300 20] ;移动到[ 300 20 ] 位置

    pd ;落笔

    label "|输入z:左转90度| ;界面显示提示语

    pu ;抬笔

    setpos [300 0] ;移动到[ 300 0 ] 位置

    pd ;落笔

    label "|输入q:前进100像素| ;界面显示提示语

    pu ;抬笔

    setpos [ 0 0 ] ;移动到[ 0 0 ] 位置

    seth 0 ;角度设置为0

    ;开启键盘事件,并定义响应函数

    (keyboardon [onkeydown] [onkeyup])

    wait 18000 ;延时5分钟

    keyboardoff ;关闭键盘事件

end

to onkeydown ;按键按下事件响应函数

end

to onkeyup ;按键弹起事件响应函数

    make "key keyboardvalue ;读取按键的ASCII码值

    ;比较是不是x键

    ifelse :key = ascii "X  [

        pd ;落笔

        circle 50 ;画半径为50像素的圆形

        pu ;抬笔

    ] [

        ;比较是不是d键

        ifelse :key = ascii "D [

            pd ;落笔

            circle 100 ;画半径为100像素的圆形

            pu ;抬笔

        ] [

            ;比较是不是z键

            ifelse :key = ascii "Z [

                lt 90 ;左转90度

            ] [

                ;比较是不是q键

                ifelse :key = ascii "Q [

                    pd ;落笔

                    fd 100 ;前进100像素

                    pu ;抬笔

                ] [

                    make "jiaodu heading ;读取原角度

                    seth 90 ;设置角度为90度

                    pd ;落笔

                    label "|你说啥?| ;输出提示语

                    pu ;抬笔

                    seth :jiaodu ;恢复原角度

                ]

            ]

        ]

    ]

end

 

运行程序

 

jianpan_shili

点击绘图区,输入字符:x d q q x z q d a

 

运行效果



下一篇

第26章:鼠标事件

ξ 26.1 鼠标事件

ξ 26.2 鼠标指令

ξ 26.3 交互示例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容