乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 47|回复: 7

[编程交流] 设置用户输入超时

[复制链接]

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 08:53:25 | 显示全部楼层 |阅读模式
有没有办法为用户输入设置倒计时?
 
我试图在AutoCAD中创建一个CAD测试例程。一旦该命令被激活,它将询问15个问题,并在鼠标右键单击菜单下提供答案选项。但我必须设置最长30秒的时间从四个选项中选择答案。
代码在这里。如何设置倒计时?
 
  1. (defun c:CADTEST()
  2. (setq n 0)
  3. (initget 1 "zoomDynamic zoomExtents zoomCenter zoomPan")
  4. (setq Answer01 (getkword "Which one of the following commands allows simultaneous pan and zoom? [zoomDynamic/zoomExtents/zoomCenter/zoomPan]"))
  5. (if
  6.    (eq Answer01 "zoomDynamic")
  7. (Progn
  8. (alert "You are right...")
  9. (setq n (1+ n))
  10. )
  11. (alert "Sorry, You are wrong...")
  12. )
  13. (alert (strcat "You scored " (itoa n) "/1"))
  14. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 09:04:05 | 显示全部楼层
您可以通过读取日期系统变量并将其与参考值(进程开始时读取的日期)进行比较来计算时间。我不知道你怎么能把它和输入过程联系起来——如果超过允许的时间,就跳到下一个问题。也许只是设置一个超时答案(见下文)?
 
  1. (setq RefTime (getvar “DATE”))
  2. ;{ask user for input}
  3. (if (> (- (getvar “DATE”) RefTime) TimeLimit) (prompt ”Sorry, your answer exceeded allowed time!”))

 
也许有更好的方法,我会试着去想别的…
 
当做
米尔恰
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:11:30 | 显示全部楼层
msasu,非常感谢。。。我会试试。。。!!
在上面的例子中,我实际上想用空格来显示选项。比如,我想展示“Zoom Dynamic”而不是“Zoom_Dynamic”,有没有办法添加句子(单词之间有空格)作为initget函数的参数?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 09:21:32 | 显示全部楼层
 
这是不可能的,因为空间保留为关键字分隔符。您可以使用GETSTRING而不是GETKWORD,但这将需要额外的代码来验证答案。
 
当做
米尔恰
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:34:07 | 显示全部楼层
好啊谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:43:15 | 显示全部楼层
由于LISP无法实现多线程,因此您无法在同时提示用户的同时监视时间,因此必须关注其中一个过程。
 
但是,您可以监控每个问题发出后的时间:
 
[code](defun c:测试(/\u lst->str \u askquestion-answers-answers-intime-question-questions-start-time)(设置时间10);;秒(defun \u lst->str(lst del/str)(setq str(car lst))(foreach x(cdr lst)(setq str(strcat str del x)))str)(defun \u askquestion(init ques)(initget(\u lst->str init“”)(getkword(strcat ques“[”(\u lst->str init”/“):”))(setq questions'((“男”“女”“其他”)“\nAre you”)((“苹果”“香蕉”“梨”)“\n你最喜欢哪种水果?”)((“红”“蓝”“绿”“黄”)“\n你最喜欢哪种颜色?”))(setq时间(*时间1000)(setq start(getvar’毫秒))(while(和(setq intime(<((getvar’毫秒)start)time))(setq QUEST(car QUESTS))(princ(strcat“\n剩余时间:”(RTO(/(-time(-getvar’毫秒)start))1000。)2.2)“秒。”)(if(setq-answer(apply'\u askquestion-question))(setq-answers(cons-answer-answers))(setq-answers(cons“No-answer”answers)))(setq-questions(cdr-questions)))(terpri)(if(not intime)(princ“\n===>超时!
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:45:00 | 显示全部楼层
谢谢你的密码李。。。!!!
我手头有东西要玩。谢谢。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:58:21 | 显示全部楼层
 
这不是一个很好的例子,但它给了你一些如何实现目标的想法
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 06:08 , Processed in 0.601888 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表