teppoman2刺客游戏技巧

我以前一直玩teppoman2刺客游戏,一个日本人写的游戏,但最多只能玩到第5关。这个游戏难玩的原因之一是复杂的键盘操作:

  • 短跑(dash) – 快速按两次左/右方向键
  • 空中滑行(glide) – 短跑之后跳跃
  • 刹住(skid) – 滑行之后,按下相反的方向键
  • 反跳(reverse jump) – 刹住之后跳跃
  • 身体冲浪(body surf)- 在高处使出空中滑行,然后按住 Shift

我觉得最有用的就是反跳,但恰恰按键最复杂。如向前反跳为:快速按两次右方向键,马上再按一次左方向键,再按Shift。这一连串按键需一气呵成,我等懒人实在没办法只能借助Python的威力搞定这些按键了。

基本思路是Hook键盘keyup事件,然后用Win32 API SendInput或keybd_event函数模拟键盘输入,需要的Python第三方库有:pywin32、pyHook。

具体实现是用’z’键作向前反跳,用’x’键作向后反跳。

Python语言: Codee#23900
#-*- coding:UTF-8 -*-
import time
import win32gui
import win32api
import win32con
import pyHook  

# global
g_hwndWind = None

def SimulateKey(vk, t = 0.05):
    scan = win32api.MapVirtualKey(vk, 0)
    # down
    win32api.keybd_event(vk, scan, 0, 0)
    time.sleep(t)
    # up
    win32api.keybd_event(vk, scan, win32con.KEYEVENTF_KEYUP, 0)
    # simulate time delay
    time.sleep(0.05)

def OnKeyboardEvent(event):
    global g_hwndWind
    print event.MessageName
    if event.Window == g_hwndWind:
        if event.Ascii == ord(‘z’):
            # ‘z’ simulate jump back (right+right+left+shift)
            SimulateKey(win32con.VK_RIGHT)
            SimulateKey(win32con.VK_RIGHT)
            SimulateKey(win32con.VK_LEFT)
            SimulateKey(win32con.VK_SHIFT, 0.5)
        elif event.Ascii == ord(‘x’):
            # ‘x’ simulate jump front
            SimulateKey(win32con.VK_LEFT)
            SimulateKey(win32con.VK_LEFT)
            SimulateKey(win32con.VK_RIGHT)
            SimulateKey(win32con.VK_SHIFT, 0.5)
    return True

def main():
    try:
        # find teppoman2 window handle
        global g_hwndWind
        g_hwndWind = win32gui.FindWindow(“Mf2MainClassTh”, “偰偭傐儅儞俀”)

        # create the hook mananger
        hm = pyHook.HookManager()
        hm.KeyUp = OnKeyboardEvent

        # hook into the and keyboard events
        hm.HookKeyboard()

        # message poll
        win32gui.PumpMessages()
    except:
        print “can’t find window”

if __name__ == “__main__”:
    main()

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注