我正在为挖矿游戏制作脚本。我正在使用 pyautogui 来查找要开采的矿脉的各种屏幕截图。但问题是,如果我的库存在矿石 #1 处填满,我的 if 语句似乎不会运行,并且会被跳过,直到 for 循环完成范围。我希望在每个范围整数之后使用 if 语句检查库存,如果发现已满,则退出函数并开始“dropOff()”。我在下面添加了我的功能
def mine():
inventoryFull = pyautogui.locateCenterOnScreen(
"full inv.png", confidence = 0.7)
print("Is inventory full?")
if inventoryFull is not None:
print("Yes, inventory is full. Drop off ore.")
dropOff()
else:
print("No inventory is not full. Proceed")
oreReset()
# i is for the number of ore veins
for i in range(1, 19):
# Check inventory again
if inventoryFull is not None:
print("Yes, inventory is full. Drop off ore.")
dropOff()
else:
print("Searching for ore #" + str(i))
oreCoords = pyautogui.locateCenterOnScreen(
"ore" + str(i) + ".png", confidence = 0.5)
if oreCoords is not None:
# Get the X and Y of the vein
veinX = oreCoords[0] + random.randrange(-3, 3)
veinY = oreCoords[1] + random.randrange(-3, 3)
# Move mouse to vein and click
pyautogui.moveTo(veinX, veinY)
pyautogui.sleep(0.5)
pyautogui.rightClick(veinX, veinY)
# Mine ore vein action
mineOreCoords = pyautogui.locateCenterOnScreen(
"mine ore.png", confidence = 0.7)
pyautogui.sleep(0.65)
if mineOreCoords is not None:
mineX = mineOreCoords[0] + random.randrange(-3, 3)
mineY = mineOreCoords[1] + random.randrange(-3, 3)
print("Mining ore #" + str(i))
pyautogui.moveTo(mineX, mineY)
pyautogui.sleep(0.65)
pyautogui.click(mineX, mineY)
pyautogui.sleep(25)
else:
print("Mine ore action could not be located...")
else:
print("No ore vein could be found.")
我尝试过使用break、return、重新排列if/else语句,并在块的挖掘部分完成后添加if语句,“pyautogui.sleep(25)”。
i=0
while i<19:
i=i+1
print(i)
if somefunction==True:
i=20