当前位置:
文档之家› raptor程序设计案例教程-ch6
raptor程序设计案例教程-ch6
阻塞性键盘输入函数
(1) Wait_For_Key
等待击键
(2) Character_variable Get_Key
等待并取得用户输入的字符键值,返回用户输 入的字符键给某个变量
(3) String_variable Get_Key_String
取得用户输入的特殊键键值,如“home”
+鼠标位置的计算非常关键,这里使用了圆 的标准方程“(x-a) 2+(y-b)2=r2”(在算法中的 表达为(x-a)^2+(y-125)^2<=2500的决策语句 )进行判断
-执行效率较低 -一旦出错,出错信息没有清除功能
一个矩形按钮输入程序的设计
Main子图
负责用户输入全局 控制
绘制按钮画面( drawbuttons子图)
第6章 视窗交互程序设计
《RAPTOR程序设计案例教程》
学习目标
如何在图形界面中设置按钮? 如何在图形界面中设置键盘响应? 如何在图形界面下接收字符串输入? 如何在图形界面下布点并连线?
视窗交互程序设计基础
程序设计中,用户与图形程序的互动形式 很多,如用户点击鼠标或者按键盘上的某 个键,就会触发相应的事件
需求与设计
1.“开始”和“结束”按钮如何产生? 2. 如何获取鼠标点击位置? 3.鼠标点击点坐标的判断。 4.相关文本如何显示。
鼠标输入的实现案例
鼠标输入视线中的资源
位图图片装载功能,分别载入标识有“开始”和 “结束”的两张图片
借助Get_Mouse_Button(Which_Button,X,Y)获取鼠 标点击位置,并用Which_Button指明点击的是哪 个键,用X和Y来接收鼠标点击点的坐标
检测用户点击( detection子图)
最后显示用户的 输入结果
create子图
打开和定义窗口大小 循环绘制4个按钮 提示用户输入
Detection子图
子图用循环检测点击 循环包含两个过程:判
断点击区域和显示点击 出错 子图设计中,用户如果 不选中某个按钮,实际 上不能退出子图
按钮输入程序的设计优缺点
粗略的坐标判定方法是以两个图片所在的区域位 置来实现
显示文本可以使用前面提到的Display_Text()过程来 实现
图形视窗中输入命令分类
阻塞型输入与非阻塞型输入。 阻塞型输入:
可以暂停程序运行,等待用户输入
非阻塞型输入:
在执行后可以得到有关鼠标或键盘的当前信息 ,但不暂停执行中的程序
要在RAPTOR中实现这样的交互,就要用到 与图形窗口相关的驱动事件,具体来说, 将需要使用一些输入函数或过程来完成
注意视窗交互包括鼠标和键盘两种输入设 备!
鼠标输入的案例
例6-1:在图形窗口中,点击屏幕上的“开始”按 钮,屏幕显示“Let’s begin!”,点击“结束”按钮 ,屏幕显示“Game is over!”,如果点到屏幕上的 其它地方,则显示“Out of range!”
个圆点并形成必要的 连接
在图形视窗中画点并自动连线
设计的基本思路:
手动接受用户绘制的点;
按照定义,使用专门语句 完成部分不规则的边连接 ,使用循环完成部分有规 则的连接;
输出所有点的位置坐标, 有利于将来将点的位置保 存到数组,并从数组中恢 复这个图的同构图。
Drawpoints子图
(随意点击)绘图的效果
阻塞性鼠标输入函数
Wait_For_Mouse_Button(Which_Button)
等待按下指定鼠标按钮
Get_Mouse_Button(Which_Button, X, Y)
等待按下鼠标按钮并返回鼠标指针的坐标
非阻塞型鼠标输入函数
(1) x Get_Mouse_X
获得鼠标光标位置的X坐标值
Drawpoints子图
两种记录圆点位置的方法 ,其中s字符串可以直接输 出到文件中
图论图形中的边的绘制(一)
按照预定的要 求绘制无规律 的两点之间的 边
图论图形中的边的绘制(二)
使用循环方式绘制 符合某种规律的边
等待用户选择 (Get_Mouse_Button)
用户输入提示 检测用户点击(
detection子图)
drawbuttons子图
detection子图
子图用分支处 理点击
左侧分支判断 点击区域;右 侧表示出错
子图设计中, 无论选择对错 ,一律退出子 图
在图形视窗中画点并自动连线
例6-3 通过图形界面输入六
(2) y Get_Mouse_Y
获得鼠标光标位置的Y坐标值。
(3) Mouse_Button_Down(Which_Button)
是否有一个指定鼠标按钮按下?
(4) Mouse_Button_Released(Which_Button)
是否有一个鼠标按钮被释放
视窗交互需要考虑的问题
设计考虑
为完成这个设计,将程序分为三个子图, main子图负责用户输入和全局控制;
create子图进行用户界面的设计; detection子图负责用户输入结果的判断和出
错提示
按钮程序:maim子图
负责用户输入全 局控制
绘制按钮画面( creat子图)
等待用户选择 (Get_Mouse_Button)
如何提示用户进行输入? 如何判断用户是否已经输入? 采用阻塞型输入和非阻塞型输入? 采用鼠标还是键盘进行输入? 如果用户输入有错,例如按下非输入提示
的键或者点击了输入区域以外的区域,程 序是否需要进行提示?
RAPTOR视窗中的按钮设计
例6-2 设计要求,设计4个圆形 按钮,分别标示上数字, 并在视窗界面上提示用户 使用鼠标点击其中任何一 个按钮,如果点击的区域 在这四个按钮区域之外, 程序会提示出错信息,并 提示再次输入
阻塞性键盘输入函数
比较: Get_Key Get_Key_String
应用后的效果
非阻塞性键盘输入函数
Key_Hit 观察用户是否有击键。自上次调用Get_Key
后,如果曾有键按下,函数返回布尔值true 该函数可以使用在某个不间断执行的程序
或循环过程中,只要在循环过程中,执行 到Key_Hit语句,才探测是否发生过用户击 键的事件,从而决定是否继续执行程序或 退出循环