第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 交互示例