游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7997|回复: 30

有什么好办法禁止键盘的使用

[复制链接]

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-3-24 23:26:00 | 显示全部楼层 |阅读模式
我在三个循环里使用三次按ESC
下面这个程序的问题是,按一次ESC键直接到了结束程序,而显示画面2没有被执行,
请帮我添加一两个命令,让第一次按下ESC后键盘就失效,而按两次ESC才到结束程序

private sub program1()
do
IF 按下ESC then  program2:exit do
显示画面1
loop

end sub

private sub program2()
do
IF 按下ESC then  program3:exit do
显示画面2
loop
end sub

private sub program3()
do
IF 按下ESC then 结束程序 :exit do
loop
end sub

1

主题

77

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2008-3-25 01:06:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

占个沙发
exit do 放在显示画面2后边

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-3-25 08:07:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

你的方法好象不行,我现在的方法是,我寻求更简单方法。

ZD=10   '子弹数量
private sub program1()
do
IF 按下ESC then  program2:exit do
显示画面1
loop

end sub

private sub program2()
do
如果开枪zd = zd - 1
IF zd < 10  and 按下ESC then  program3:exit do    '开一枪后才执行
显示画面2
loop
end sub

private sub program3()
do
IF 按下ESC then 结束程序 :exit do
loop
end sub

77

主题

485

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
发表于 2008-3-25 08:45:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

Dim BolESC as Boolean

KeyDown中 BolESC=True
KeyUp中  BolESC=False

private sub program1()
do
IF BolESC then  BolESC=False:program2:exit do
显示画面1
loop

end sub

private sub program2()
do
IF BolESC then  BolESC=False:program3:exit do
显示画面2
loop
end sub

private sub program3()
do
IF BolESC then BolESC=False:结束程序 :exit do
loop
end sub

77

主题

485

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
发表于 2008-3-25 08:48:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

游戏之家很有趣,从一个小循环,跑另一个小循环.
应该设标志量,有一个总循环就行了.
不然,你会晕的.

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2008-3-25 09:03:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

大侠,你应该相应 KEY_UP 事件。 不是 KEY DOWN

17

主题

141

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2008-3-25 09:36:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

4楼正解,不过TV3D中好像没有KEYDOWN和KEYUP事件

我的方法是记录上次循环时ESC按键状态
dim OldESC as Boolean

private sub program1()
do
IF 按下ESC and not OldESC then OldESC=TRUE:program2:exit do
显示画面1
loop

end sub

private sub program2()
do
IF 按下ESC and not OldESC then OldESC=TRUE:program3:exit do
显示画面2
loop
end sub

private sub program3()
do
IF 按下ESC and not OldESC then OldESC=TRUE:结束程序 :exit do
loop
end sub

OldESC= 按下ESC

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2008-3-25 12:10:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

一定有 buffered input 和 unbuffered input 之分,不然这个引擎就不要出来混了。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-3-25 12:40:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

我这样做多个循环有特别意义,因为每个循环里都有一组独立的代码,谢谢各位解答。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-3-25 13:46:00 | 显示全部楼层

Re:有什么好办法禁止键盘的使用

同志们!! 你们的方法好象不灵,
如果我在同一个循环里有多次按下ESC怎么办,如何禁止ESC,程序如下

private sub program()
do
IF 按下ESC then
做第一件事
end if

IF 按下ESC then
做第二件事
end if

IF 按下ESC then
做第三件事
end if

LOOP
end sub

但现在这样的问题是,按下ESC不是做第一件事就是第三,我需要只做一件事,上面的代码只是举例,其实我想实现的还是楼顶那贴。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 21:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表