game1.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import pyautogui
  2. import time
  3. # 模拟按键按下后释放
  4. def simulate_key_press(key):
  5. pyautogui.keyDown(key)
  6. time.sleep(0.1)
  7. pyautogui.keyUp(key)
  8. # 模拟按键按下后释放,传入字符串数组
  9. def simulate_keys_press(keys, re=1):
  10. """模拟按键按下后释放,传入字符串数组
  11. Args:
  12. keys (list): 按键数组
  13. re (int, optional): 按键个数. Defaults to 1.
  14. """
  15. num = 0
  16. # 模拟按下释放按键
  17. for key in keys:
  18. # 限制触发的次数
  19. if num >= re:
  20. break
  21. pyautogui.keyDown(key)
  22. time.sleep(0.1)
  23. pyautogui.keyUp(key)
  24. num = num + 1
  25. # 模拟鼠标点击
  26. def simulate_mouse_press(x=0, y=0, button="left"):
  27. # 模拟鼠标点击
  28. pyautogui.click(x=x, y=y, button=button)
  29. # 解析字符串,模拟按键/鼠标按压
  30. def parse_key_and_simulate_key_mouse_press(key):
  31. # 删除数组中不需要的其他字符串
  32. # def remove_needless(keys):
  33. # for i in range(len(keys)):
  34. # if keys[i] not in ['1', '2', 're']:
  35. # keys.pop(i)
  36. # return keys
  37. # keys = remove_needless(keys)
  38. if key not in ['1', '2', 're']:
  39. return
  40. if key == '1':
  41. key = 'w'
  42. simulate_key_press(key)
  43. elif key == '2':
  44. key = 'up'
  45. simulate_key_press(key)
  46. elif key == 're':
  47. # 根据实际情况设置坐标值
  48. x = 1076
  49. y = 771
  50. simulate_mouse_press(x, y, 'left')
  51. time.sleep(1)
  52. x = 1311
  53. y = 951
  54. simulate_mouse_press(x, y, 'left')
  55. # 解析字符串数组,根据字符串第一位判断是否需要转换按键后,按压按键
  56. def parse_keys_and_simulate_keys_press(keys, re=1):
  57. # print(f"keys={keys}")
  58. # 删除数组中非 w a s d 1 2 3 的其他字符串
  59. def remove_needless(keys):
  60. for i in range(len(keys)):
  61. if keys[i] not in ['w', 'a', 's', 'd', '1']:
  62. keys.pop(i)
  63. return keys
  64. if isinstance(keys, list) and len(keys) > 0:
  65. if keys[0] == '1':
  66. keys = keys[1:]
  67. keys = remove_needless(keys)
  68. # 遍历数组,将123改为yui
  69. for i in range(len(keys)):
  70. if keys[i] == '1':
  71. keys[i] = 'f'
  72. # elif keys[i] == '2':
  73. # keys[i] = 'u'
  74. # elif keys[i] == '3':
  75. # keys[i] = 'i'
  76. elif keys[0] == '2':
  77. keys = keys[1:]
  78. keys = remove_needless(keys)
  79. # 遍历数组,将wsad改为上下左右,123改为789
  80. for i in range(len(keys)):
  81. if keys[i] == 'w':
  82. keys[i] = 'up'
  83. elif keys[i] == 's':
  84. keys[i] = 'down'
  85. elif keys[i] == 'a':
  86. keys[i] = 'left'
  87. elif keys[i] == 'd':
  88. keys[i] = 'right'
  89. elif keys[i] == '1':
  90. keys[i] = 'l'
  91. # elif keys[i] == '2':
  92. # keys[i] = '8'
  93. # elif keys[i] == '3':
  94. # keys[i] = '9'
  95. elif keys[0] == 're':
  96. # 鼠标按压的坐标,请手动重新校准坐标以适配
  97. x = 1097
  98. y = 779
  99. simulate_mouse_press(x, y)
  100. time.sleep(1)
  101. x = 1314
  102. y = 957
  103. simulate_mouse_press(x, y)
  104. return
  105. simulate_keys_press(keys, re)
  106. if __name__ == '__main__':
  107. # 测试游戏:醉酒拔河 https://www.4399.com/flash/221542_1.htm
  108. # 循环获取鼠标当前坐标
  109. def get_mouse_pos():
  110. # 定时获取鼠标坐标的时间间隔(秒)
  111. interval = 1
  112. try:
  113. while True:
  114. # 获取鼠标当前的坐标
  115. x, y = pyautogui.position()
  116. # 打印坐标信息
  117. print(f"当前鼠标坐标:x={x}, y={y}")
  118. # 等待一段时间后再次获取坐标
  119. time.sleep(interval)
  120. except KeyboardInterrupt:
  121. print("获取鼠标坐标的程序已结束。")
  122. get_mouse_pos()
  123. # game1 = Game1()
  124. # time.sleep(5)
  125. # game1.parse_key_and_simulate_key_mouse_press('re')