如何解决为什么下面的代码不起作用? 使用pyautogui在游戏中创建机器人
x=0
while x==0:
target = pyautogui.locateOnScreen(os.path.expanduser(r'~\Desktop\ bot\references\target.png'),region=(0,1024,768),confidence=.7)
time.sleep(0.5)
target2 = pyautogui.locateOnScreen(os.path.expanduser(r'~\Desktop\ bot\references\target2.png'),confidence=.7)
print(target,target2)
if target and target2 is None:
pyautogui.keyDown('W')
elif target or target2 != None:
pyautogui.keyUp("W")
print(target or target2)
target_point = pyautogui.center(target or target2)
targetx,targety = target_point
pyautogui.click(targetx,targety)
x=1
(应该使用导入的模块重新创建代码)大家好!我正在尝试为游戏创建一个简单的机器人,该机器人在未检测到目标时会向前移动,但在检测到目标时会停止移动。为什么没有按下W键?奇怪的是,当检测到target或target2.png时,它按W否则不按?
解决方法
这里的问题是python将某些值视为True,而其他值视为False。
在Python中,None
,0
和""
(空字符串)都被认为是False。其他任何值都视为True。
您的代码中包含以下行:
if target and target2 is None:
虽然该短语听起来很正确(如果两个单词都为None),但实际上发生的是target
在评估中转换为布尔值:
if bool(target) == True and target2 is None:
由于target
不是None/0/""
,布尔转换将返回True。这会导致代码中出现意外行为。
相同的想法也适用于elif
语句
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。