幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1534|回复: 5

[RM2K&2K3] [求助]按键设置和计时器问题

[复制链接]

9

主题

22

帖子

244

积分

③业余

积分
244
发表于 2006-8-28 23:21:52 | 显示全部楼层 |阅读模式
想做一个类似敲鼹鼠的小游戏,大致思路如下

1 设一个 变量[随机] 为随机数1-9,再设九个开关,分别由随机数1-9控制on/off
   创建1个名字为击中数的物品,添加一个变量[击中数],代入所持物品数=击中数
   
2 然后循环刷这个变量,使用倒数计时器(1分),到了规定时间(小于1秒)就中断循环,

3 在游戏地图上3x3的格子上做九个事件,然后对应之前的1-9的开关,开始条件为开关=on
  事件内容是更改透明度由0变为255,变为255后等待10桢,然后off掉对应的开关
另设9个变量,分别等于常量1-9
加上按键处理,假设有9个按键分别对应那9个变量,设定条件分歧,当按键变量=变量[随机]时,物品[击中数]+1,(也可按需要变换一下被击中后的图片),off掉对应开关

4 时间到点,循环中断后,显示文章,/v[击中数]

问题
1,该游戏最好是用小键的1-9来控制,如何设置小键盘上的按键处理?
2,我设定了计时器处理,1分钟,但是跑到59秒就不动了。。
3,我这样做循环有问题吗?

麻烦老大们来指点下,谢谢拉~~
回复

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2006-8-29 08:32:12 | 显示全部楼层
有一个全键盘调用脚本,但是由于不知道其他键位的相应代码,所以用案件输入控制的话可能会有点困难……先把那个脚本贴出来好了……
  1. #============================================================================
  2. # ■ Keyboard Script
  3. #----------------------------------------------------------------------------
  4. #  By: Cybersam
  5. #   Date: 25/05/05
  6. #   Version 4
  7. #   Who steal this script and consider it as his own work will die.
  8. #============================================================================
  9. module Kboard
  10. #==========================================================================
  11. # List
  12. #--------------------------------------------------------------------------
  13. $Rmouse_BUTTON_L = 0x01        # left mouse button
  14. $Rmouse_BUTTON_R = 0x02        # right mouse button
  15. $Rmouse_BUTTON_M = 0x04        # middle mouse button
  16. $Rmouse_BUTTON_4 = 0x05        # 4th mouse button
  17. $Rmouse_BUTTON_5 = 0x06        # 5th mouse button
  18. #--------------------------------------------------------------------------
  19. $R_Key_BACK      = 0x08        # BACKSPACE key
  20. $R_Key_TAB       = 0x09        # TAB key
  21. $R_Key_RETURN    = 0x0D        # ENTER key
  22. $R_Key_SHIFT     = 0x10        # SHIFT key
  23. $R_Key_CTLR      = 0x11        # CTLR key
  24. $R_Key_ALT       = 0x12        # ALT key
  25. $R_Key_PAUSE     = 0x13        # PAUSE key
  26. $R_Key_CAPITAL   = 0x14        # CAPS LOCK key
  27. $R_Key_ESCAPE    = 0x1B        # ESC key
  28. $R_Key_SPACE     = 0x20        # SPACEBAR
  29. $R_Key_PRIOR     = 0x21        # PAGE UP key
  30. $R_Key_NEXT      = 0x22        # PAGE DOWN key
  31. $R_Key_END       = 0x23        # END key
  32. $R_Key_HOME      = 0x24        # HOME key
  33. $R_Key_LEFT      = 0x25        # LEFT ARROW key
  34. $R_Key_UP        = 0x26        # UP ARROW key
  35. $R_Key_RIGHT     = 0x27        # RIGHT ARROW key
  36. $R_Key_DOWN      = 0x28        # DOWN ARROW key
  37. $R_Key_SELECT    = 0x29        # SELECT key
  38. $R_Key_PRINT     = 0x2A        # PRINT key
  39. $R_Key_SNAPSHOT  = 0x2C        # PRINT SCREEN key
  40. $R_Key_INSERT    = 0x2D        # INS key
  41. $R_Key_DELETE    = 0x2E        # DEL key
  42. #--------------------------------------------------------------------------
  43. $R_Key_0         = 0x30        # 0 key
  44. $R_Key_1         = 0x31        # 1 key
  45. $R_Key_2         = 0x32        # 2 key
  46. $R_Key_3         = 0x33        # 3 key
  47. $R_Key_4         = 0x34        # 4 key
  48. $R_Key_5         = 0x35        # 5 key
  49. $R_Key_6         = 0x36        # 6 key
  50. $R_Key_7         = 0x37        # 7 key
  51. $R_Key_8         = 0x38        # 8 key
  52. $R_Key_9         = 0x39        # 9 key
  53. #--------------------------------------------------------------------------
  54. $R_Key_A         = 0x41        # A key
  55. $R_Key_B         = 0x42        # B key
  56. $R_Key_C         = 0x43        # C key
  57. $R_Key_D         = 0x44        # D key
  58. $R_Key_E         = 0x45        # E key
  59. $R_Key_F         = 0x46        # F key
  60. $R_Key_G         = 0x47        # G key
  61. $R_Key_H         = 0x48        # H key
  62. $R_Key_I         = 0x49        # I key
  63. $R_Key_J         = 0x4A        # J key
  64. $R_Key_K         = 0x4B        # K key
  65. $R_Key_L         = 0x4C        # L key
  66. $R_Key_M         = 0x4D        # M key
  67. $R_Key_N         = 0x4E        # N key
  68. $R_Key_O         = 0x4F        # O key
  69. $R_Key_P         = 0x50        # P key
  70. $R_Key_Q         = 0x51        # Q key
  71. $R_Key_R         = 0x52        # R key
  72. $R_Key_S         = 0x53        # S key
  73. $R_Key_T         = 0x54        # T key
  74. $R_Key_U         = 0x55        # U key
  75. $R_Key_V         = 0x56        # V key
  76. $R_Key_W         = 0x57        # W key
  77. $R_Key_X         = 0x58        # X key
  78. $R_Key_Y         = 0x59        # Y key
  79. $R_Key_Z         = 0x5A        # Z key
  80. #--------------------------------------------------------------------------
  81. $R_Key_LWIN      = 0x5B        # Left Windows key (Microsoft Natural keyboard)
  82. $R_Key_RWIN      = 0x5C        # Right Windows key (Natural keyboard)
  83. $R_Key_APPS      = 0x5D        # Applications key (Natural keyboard)
  84. #--------------------------------------------------------------------------
  85. $R_Key_NUMPAD0   = 0x60        # Numeric keypad 0 key
  86. $R_Key_NUMPAD1   = 0x61        # Numeric keypad 1 key
  87. $R_Key_NUMPAD2   = 0x62        # Numeric keypad 2 key
  88. $R_Key_NUMPAD3   = 0x63        # Numeric keypad 3 key
  89. $R_Key_NUMPAD4   = 0x64        # Numeric keypad 4 key
  90. $R_Key_NUMPAD5   = 0x65        # Numeric keypad 5 key
  91. $R_Key_NUMPAD6   = 0x66        # Numeric keypad 6 key
  92. $R_Key_NUMPAD7   = 0x67        # Numeric keypad 7 key
  93. $R_Key_NUMPAD8   = 0x68        # Numeric keypad 8 key
  94. $R_Key_NUMPAD9  = 0x69        # Numeric keypad 9 key
  95. $R_Key_MULTIPLY  = 0x6A        # Multiply key (*)
  96. $R_Key_ADD       = 0x6B        # Add key (+)
  97. $R_Key_SEPARATOR = 0x6C        # Separator key
  98. $R_Key_SUBTRACT  = 0x6D        # Subtract key (-)
  99. $R_Key_DECIMAL   = 0x6E        # Decimal key
  100. $R_Key_DIVIDE    = 0x6F        # Divide key (/)
  101. #--------------------------------------------------------------------------
  102. $R_Key_F1        = 0x70        # F1 key
  103. $R_Key_F2        = 0x71        # F2 key
  104. $R_Key_F3        = 0x72        # F3 key
  105. $R_Key_F4        = 0x73        # F4 key
  106. $R_Key_F5        = 0x74        # F5 key
  107. $R_Key_F6        = 0x75        # F6 key
  108. $R_Key_F7        = 0x76        # F7 key
  109. $R_Key_F8        = 0x77        # F8 key
  110. $R_Key_F9        = 0x78        # F9 key
  111. $R_Key_F10       = 0x79        # F10 key
  112. $R_Key_F11       = 0x7A        # F11 key
  113. $R_Key_F12       = 0x7B        # F12 key
  114. #--------------------------------------------------------------------------
  115. $R_Key_NUMLOCK   = 0x90        # NUM LOCK key
  116. $R_Key_SCROLL    = 0x91        # SCROLL LOCK key
  117. #--------------------------------------------------------------------------
  118. $R_Key_LSHIFT    = 0xA0        # Left SHIFT key
  119. $R_Key_RSHIFT    = 0xA1        # Right SHIFT key
  120. $R_Key_LCONTROL  = 0xA2        # Left CONTROL key
  121. $R_Key_RCONTROL  = 0xA3        # Right CONTROL key
  122. $R_Key_L_ALT    = 0xA4        # Left ALT key
  123. $R_Key_R_ALT    = 0xA5        # Right ALT key
  124. #--------------------------------------------------------------------------
  125. $R_Key_SEP      = 0xBC        # , key
  126. $R_Key_DASH      = 0xBD        # - key
  127. $R_Key_DOTT      = 0xBE        # . Key
  128. #--------------------------------------------------------------------------
  129. GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
  130. GetKeyboardState = Win32API.new("user32","GetKeyState",['I'],'I')
  131. GetSetKeyState = Win32API.new("user32","SetKeyboardState",['I'],'I')
  132. #--------------------------------------------------------------------------
  133. module_function
  134. #--------------------------------------------------------------------------
  135. def keyb(rkey)
  136.     if GetKeyState.call(rkey) != 0
  137.       return 1
  138.     end
  139.     return 0
  140. end
  141.   #--------------------------------------------------------------------------
  142. def keyboard(rkey)
  143.    GetKeyState.call(rkey) & 0x01 == 1  #
  144. end
  145. #--------------------------------------------------------------------------
  146. def key(rkey, key = 0)
  147.    GetKeyboardState.call(rkey) & 0x01 == key #
  148. end
  149. end
复制代码
使用方法是在条件分歧里面写上:Kboard.keyboard($R_Key_键盘上的对应按键)

按理论来说,应该不会有计时器突然停掉的问题……
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

9

主题

22

帖子

244

积分

③业余

积分
244
 楼主| 发表于 2006-8-29 09:20:54 | 显示全部楼层
哦,我这就去试试看,谢谢阿鸡一早就来答疑 [s:1]
回复 支持 反对

使用道具 举报

9

主题

22

帖子

244

积分

③业余

积分
244
 楼主| 发表于 2006-8-29 13:29:33 | 显示全部楼层
1。按键设置好像可以了,但是有个问题,游戏中原先有预设定义的那些按键如果用脚本定义了按键设置的话依旧无效,只有哪些没有定义过的才有作用,比如小键盘上的1,7,9键,字母J,K,L键等,这个问题如何解决阿,我现在只好先定义[U I O J K L M , .]这9键来控制(按F1取消游戏中的按键设置也没用)

2。计时器的问题好像是开始条件没给,直接放事件里让他并行处理了。。。现在好了
回复 支持 反对

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2006-8-29 14:34:06 | 显示全部楼层
引用第3楼etal2006-08-29 13:29发表的“”:
1。按键设置好像可以了,但是有个问题,游戏中原先有预设定义的那些按键如果用脚本定义了按键设置的话依旧无效,只有哪些没有定义过的才有作用,比如小键盘上的1,7,9键,字母J,K,L键等,这个问题如何解决阿,我现在只好先定义[U I O J K L M , .]这9键来控制(按F1取消游戏中的按键设置也没用)

2。计时器的问题好像是开始条件没给,直接放事件里让他并行处理了。。。现在好了

这个就是脚本本身的问题……非我的能力所及,对不起咯…… [s:5]
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

9

主题

22

帖子

244

积分

③业余

积分
244
 楼主| 发表于 2006-8-29 17:35:05 | 显示全部楼层
嗯,所以最后设了暂时用不到的一些按键
不过总算略有小成了,完成了一段小的游戏演示了 [s:1]
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-29 20:01 , Processed in 0.014041 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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