ÔÚ´«ÆæÖУ¬ÍÚ¿óÊÇÍæ¼Ò»ñÈ¡×ÊÔ´µÄÖØÒªÍ¾¾¶Ö®Ò»¡£È»¶ø£¬ÊÖ¶¯ÍÚ¿ó²»½öºÄʱºÄÁ¦£¬»¹ÈÝÒ×ÈÃÈ˸е½¿ÝÔΪÁ˽â¾öÕâÒ»ÎÊÌ⣬Ðí¶àÍæ¼ÒÑ¡ÔñʹÓÃ×Ô¶¯ÍÚ¿ó½Å±¾¡£±¾ÎĽ«Ïêϸ½éÉÜÈçºÎÖÆ×÷Ò»¸öÍêÕûµÄ´«Ææ×Ô¶¯ÍÚ¿ó½Å±¾£¬º¸Ç´Ó×Ô¶¯Ñ°Â·µ½×Ô¶¯Ê°È¡µÄÈ«¹ý³Ì¡£
---
### Ò»¡¢×Ô¶¯ÍÚ¿ó½Å±¾µÄºËÐŦÄÜ
Ò»¸öÍêÕûµÄ×Ô¶¯ÍÚ¿ó½Å±¾ÐèҪʵÏÖÒÔϹ¦ÄÜ£º
1. **×Ô¶¯Ñ°Â·**£º×Ô¶¯ÕÒµ½¿ó¶´²¢Òƶ¯µ½ÍÚ¿óµã¡£
2. **×Ô¶¯ÍÚ¿ó**£ºÄ£ÄâÍÚ¿ó²Ù×÷£¬»ñÈ¡¿óʯ¡£
3. **×Ô¶¯Ê°È¡**£º×Ô¶¯Ê°È¡ÍÚµ½µÄ¿óʯ¡£
4. **Ñ»·Âß¼**£ºÔÚÍÚ¿ó¹ý³ÌÖÐʵÏÖÑ»·£¬È·±£½Å±¾³ÖÐøÔËÐС£
---
### ¶þ¡¢¿ª·¢¹¤¾ßÓëÒÀÀµ
1. **±à³ÌÓïÑÔ**
- Python£ºÊʺϿìËÙ¿ª·¢£¬ÓµÓзḻµÄµÚÈý·½¿âÖ§³Ö¡£
- AutoHotkey£ºÊÊÓÃÓÚWindowsƽ̨µÄ½Å±¾ÓïÑÔ£¬ÊʺÏÄ£Äâ¼üÅ̺ÍÊó±ê²Ù×÷¡£
2. **ÒÀÀµ¿â**
- `pyautogui`£ºÓÃÓÚÄ£ÄâÊó±êºÍ¼üÅ̲Ù×÷¡£
- `opencv-python`£ºÓÃÓÚͼÏñʶ±ð£¬¶¨Î»¿ó¶´ºÍ¿óʯ¡£
- `pytesseract`£ºÓÃÓÚʶ±ðÓÎÏ·ÖеÄÎÄ×Ö£¨ÈçµØÍ¼Ãû³Æ£©¡£
3. **¿ª·¢»·¾³**
- Python 3.x
- Îı¾±à¼Æ÷£¨ÈçVS Code£©
- ÓÎÏ·´°¿Ú»¯¹¤¾ß£¨ÈçD3DWindower£©
---
### Èý¡¢½Å±¾ÊµÏÖ²½Öè
#### 1. ×Ô¶¯Ñ°Â·
##### £¨1£©Ê¶±ðµ±Ç°µØÍ¼
ʹÓÃͼÏñʶ±ð¼¼Êõ£¬Í¨¹ý`opencv`¿âʶ±ðµ±Ç°µØÍ¼Ãû³Æ¡£
```python
import cv2
import pytesseract
from PIL import Image
# ½ØÈ¡µØÍ¼Ãû³ÆÇøÓò
map_name_region = (x, y, width, height) # ¸ù¾ÝÓÎÏ·½çÃæµ÷Õû
map_name_image = pyautogui.screenshot(region=map_name_region)
# ʶ±ðµØÍ¼Ãû³Æ
map_name = pytesseract.image_to_string(map_name_image)
print(f"µ±Ç°µØÍ¼£º{map_name}")
```
##### £¨2£©½øÈë¿ó¶´
¸ù¾Ýʶ±ðµ½µÄµØÍ¼Ãû³Æ£¬ÅжÏÊÇ·ñÐèÒªÇл»µØÍ¼£¬²¢Ä£Äâ²Ù×÷½øÈë¿ó¶´¡£
```python
if map_name != "¿ó¶´µØÍ¼Ãû³Æ":
# Ä£Äâ´ò¿ªµØÍ¼½çÃæ
pyautogui.press('m') # ¼ÙÉè'm'¼ü´ò¿ªµØÍ¼
time.sleep(1)
# Ä£ÄâÑ¡Ôñ¿ó¶´µØÍ¼
pyautogui.click(x=target_map_x, y=target_map_y) # µã»÷¿ó¶´µØÍ¼
time.sleep(1)
# Ä£ÄâÈ·ÈϽøÈë
pyautogui.press('enter') # ¼ÙÉè'enter'¼üÈ·ÈϽøÈë
time.sleep(3) # µÈ´ýµØÍ¼¼ÓÔØ
```
##### £¨3£©×Ô¶¯Ñ°Â·µ½ÍÚ¿óµã
ʹÓÃͼÏñʶ±ð¼¼Êõ£¬Í¨¹ý`opencv`¿âʶ±ðÍÚ¿óµãλÖ㬲¢Ä£ÄâÒÆ¶¯²Ù×÷¡£
```python
# ¼ÓÔØÍÚ¿óµãÄ£°åͼƬ
mining_spot_template = cv2.imread('mining_spot.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥ÅäÍÚ¿óµãλÖÃ
result = cv2.matchTemplate(screenshot, mining_spot_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡ÍÚ¿óµãÖÐÐÄ×ø±ê
mining_spot_x, mining_spot_y = max_loc[0] + mining_spot_template.shape[1] // 2, max_loc[1] + mining_spot_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½ÍÚ¿óµãλÖÃ
pyautogui.moveTo(mining_spot_x, mining_spot_y, duration=0.5)
# Ä£Äâµã»÷ÒÆ¶¯
pyautogui.click()
time.sleep(5) # µÈ´ý½ÇÉ«ÒÆ¶¯µ½ÍÚ¿óµã
```
---
#### 2. ×Ô¶¯ÍÚ¿ó
##### £¨1£©Ä£ÄâÍÚ¿ó²Ù×÷
ʹÓÃ`pyautogui`Ä£ÄâÍÚ¿ó¼ü¡£
```python
# °´ÏÂÍÚ¿ó¼ü£¨¼ÙÉèÍÚ¿ó¼üΪ'g'£©
pyautogui.press('g')
time.sleep(2) # µÈ´ýÍÚ¿óÍê³É
```
---
#### 3. ×Ô¶¯Ê°È¡
##### £¨1£©¶¨Î»µôÂä¿óʯ
ʹÓÃͼÏñʶ±ð¼¼Êõ¼ì²âµØÃæÉϵĿóʯ£¬²¢Ä£Äâʰȡ²Ù×÷¡£
```python
# ¼ÓÔØ¿óʯģ°åͼƬ
ore_template = cv2.imread('ore.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥Åä¿óʯλÖÃ
result = cv2.matchTemplate(screenshot, ore_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡¿óʯÖÐÐÄ×ø±ê
ore_x, ore_y = max_loc[0] + ore_template.shape[1] // 2, max_loc[1] + ore_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½¿óʯλÖò¢Ê°È¡
pyautogui.moveTo(ore_x, ore_y, duration=0.5)
pyautogui.click()
```
---
#### 4. Ñ»·Âß¼
ÔÚÖ÷Ñ»·ÖÐʵÏÖÍÚ¿óÂß¼£¬È·±£½Å±¾³ÖÐøÔËÐС£
```python
import time
while True:
# ½øÈë¿ó¶´
enter_mining_map()
# Ѱ·µ½ÍÚ¿óµã
navigate_to_mining_spot()
# ÍÚ¿ó
mine_ore()
# ʰȡ¿óʯ
pickup_ore()
# µÈ´ýÒ»¶Îʱ¼ä
time.sleep(5) # ÍÚ¿ó¼ä¸ôʱ¼ä
```
---
### ËÄ¡¢ÍêÕû½Å±¾Ê¾Àý
ÒÔÏÂÊÇÒ»¸öÍêÕûµÄ×Ô¶¯ÍÚ¿ó½Å±¾Ê¾Àý£º
```python
import pyautogui
import cv2
import numpy as np
import time
import pytesseract
from PIL import Image
# µØÍ¼Ê¶±ðÓë½øÈë
def enter_mining_map():
# ½ØÈ¡µØÍ¼Ãû³ÆÇøÓò
map_name_region = (x, y, width, height) # ¸ù¾ÝÓÎÏ·½çÃæµ÷Õû
map_name_image = pyautogui.screenshot(region=map_name_region)
# ʶ±ðµØÍ¼Ãû³Æ
map_name = pytesseract.image_to_string(map_name_image)
print(f"µ±Ç°µØÍ¼£º{map_name}")
if map_name != "¿ó¶´µØÍ¼Ãû³Æ":
# Ä£Äâ´ò¿ªµØÍ¼½çÃæ
pyautogui.press('m') # ¼ÙÉè'm'¼ü´ò¿ªµØÍ¼
time.sleep(1)
# Ä£ÄâÑ¡Ôñ¿ó¶´µØÍ¼
pyautogui.click(x=target_map_x, y=target_map_y) # µã»÷¿ó¶´µØÍ¼
time.sleep(1)
# Ä£ÄâÈ·ÈϽøÈë
pyautogui.press('enter') # ¼ÙÉè'enter'¼üÈ·ÈϽøÈë
time.sleep(3) # µÈ´ýµØÍ¼¼ÓÔØ
# Ѱ·µ½ÍÚ¿óµã
def navigate_to_mining_spot():
# ¼ÓÔØÍÚ¿óµãÄ£°åͼƬ
mining_spot_template = cv2.imread('mining_spot.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥ÅäÍÚ¿óµãλÖÃ
result = cv2.matchTemplate(screenshot, mining_spot_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡ÍÚ¿óµãÖÐÐÄ×ø±ê
mining_spot_x, mining_spot_y = max_loc[0] + mining_spot_template.shape[1] // 2, max_loc[1] + mining_spot_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½ÍÚ¿óµãλÖÃ
pyautogui.moveTo(mining_spot_x, mining_spot_y, duration=0.5)
# Ä£Äâµã»÷ÒÆ¶¯
pyautogui.click()
time.sleep(5) # µÈ´ý½ÇÉ«ÒÆ¶¯µ½ÍÚ¿óµã
# ÍÚ¿ó
def mine_ore():
# °´ÏÂÍÚ¿ó¼ü£¨¼ÙÉèÍÚ¿ó¼üΪ'g'£©
pyautogui.press('g')
time.sleep(2) # µÈ´ýÍÚ¿óÍê³É
# ʰȡ¿óʯ
def pickup_ore():
# ¼ÓÔØ¿óʯģ°åͼƬ
ore_template = cv2.imread('ore.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥Åä¿óʯλÖÃ
result = cv2.matchTemplate(screenshot, ore_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡¿óʯÖÐÐÄ×ø±ê
ore_x, ore_y = max_loc[0] + ore_template.shape[1] // 2, max_loc[1] + ore_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½¿óʯλÖò¢Ê°È¡
pyautogui.moveTo(ore_x, ore_y, duration=0.5)
pyautogui.click()
# Ö÷Ñ»·
while True:
enter_mining_map()
navigate_to_mining_spot()
mine_ore()
pickup_ore()
time.sleep(5) # ÍÚ¿ó¼ä¸ôʱ¼ä
```
---
### Îå¡¢½Å±¾ÓÅ»¯Óë×¢ÒâÊÂÏî
1. **ͼÏñʶ±ðÓÅ»¯**
- ʹÓøü¸ß¾«¶ÈµÄÄ£°åͼƬ¡£
- µ÷ÕûͼÏñÆ¥ÅäµÄãÐÖµ£¬Ìá¸ßʶ±ð׼ȷÂÊ¡£
2. **¼æÈÝÐÔ**
- È·±£½Å±¾ÔÚ²»Í¬·Ö±æÂʺÍÓÎÏ·´°¿ÚλÖÃ϶¼ÄÜÕý³£ÔËÐС£
3. **·çÏÕ¿ØÖÆ**
- ±ÜÃⳤʱ¼äÁ¬ÐøÔËÐнű¾£¬ÒÔ·À±»·â½û¡£
- ¶¨ÆÚ¸üнű¾£¬ÒÔÓ¦¶ÔÓÎÏ·¸üкͷ´×÷±×ϵͳµÄÉý¼¶¡£
---
### Áù¡¢½áÓï
ͨ¹ý±¾ÎĵÄÏêϸ½²½âºÍ´úÂëʾÀý£¬Äú¿ÉÒÔÇáËÉʵÏÖ´«ÆæÖеÄ×Ô¶¯ÍÚ¿ó¹¦ÄÜ£¬²¢Ö§³Ö×Ô¶¯Ñ°Â·ºÍ×Ô¶¯Ê°È¡¡£Ï£Íû±¾ÎÄÄܰïÖúÄúÌáÉýÓÎÏ·ÌåÑ飬ͬʱҲÄܼ¤·¢Äú¶Ô±à³ÌºÍ×Ô¶¯»¯¼¼ÊõµÄÐËȤ£¡
---
### Ò»¡¢×Ô¶¯ÍÚ¿ó½Å±¾µÄºËÐŦÄÜ
Ò»¸öÍêÕûµÄ×Ô¶¯ÍÚ¿ó½Å±¾ÐèҪʵÏÖÒÔϹ¦ÄÜ£º
1. **×Ô¶¯Ñ°Â·**£º×Ô¶¯ÕÒµ½¿ó¶´²¢Òƶ¯µ½ÍÚ¿óµã¡£
2. **×Ô¶¯ÍÚ¿ó**£ºÄ£ÄâÍÚ¿ó²Ù×÷£¬»ñÈ¡¿óʯ¡£
3. **×Ô¶¯Ê°È¡**£º×Ô¶¯Ê°È¡ÍÚµ½µÄ¿óʯ¡£
4. **Ñ»·Âß¼**£ºÔÚÍÚ¿ó¹ý³ÌÖÐʵÏÖÑ»·£¬È·±£½Å±¾³ÖÐøÔËÐС£
---
### ¶þ¡¢¿ª·¢¹¤¾ßÓëÒÀÀµ
1. **±à³ÌÓïÑÔ**
- Python£ºÊʺϿìËÙ¿ª·¢£¬ÓµÓзḻµÄµÚÈý·½¿âÖ§³Ö¡£
- AutoHotkey£ºÊÊÓÃÓÚWindowsƽ̨µÄ½Å±¾ÓïÑÔ£¬ÊʺÏÄ£Äâ¼üÅ̺ÍÊó±ê²Ù×÷¡£
2. **ÒÀÀµ¿â**
- `pyautogui`£ºÓÃÓÚÄ£ÄâÊó±êºÍ¼üÅ̲Ù×÷¡£
- `opencv-python`£ºÓÃÓÚͼÏñʶ±ð£¬¶¨Î»¿ó¶´ºÍ¿óʯ¡£
- `pytesseract`£ºÓÃÓÚʶ±ðÓÎÏ·ÖеÄÎÄ×Ö£¨ÈçµØÍ¼Ãû³Æ£©¡£
3. **¿ª·¢»·¾³**
- Python 3.x
- Îı¾±à¼Æ÷£¨ÈçVS Code£©
- ÓÎÏ·´°¿Ú»¯¹¤¾ß£¨ÈçD3DWindower£©
---
### Èý¡¢½Å±¾ÊµÏÖ²½Öè
#### 1. ×Ô¶¯Ñ°Â·
##### £¨1£©Ê¶±ðµ±Ç°µØÍ¼
ʹÓÃͼÏñʶ±ð¼¼Êõ£¬Í¨¹ý`opencv`¿âʶ±ðµ±Ç°µØÍ¼Ãû³Æ¡£
```python
import cv2
import pytesseract
from PIL import Image
# ½ØÈ¡µØÍ¼Ãû³ÆÇøÓò
map_name_region = (x, y, width, height) # ¸ù¾ÝÓÎÏ·½çÃæµ÷Õû
map_name_image = pyautogui.screenshot(region=map_name_region)
# ʶ±ðµØÍ¼Ãû³Æ
map_name = pytesseract.image_to_string(map_name_image)
print(f"µ±Ç°µØÍ¼£º{map_name}")
```
##### £¨2£©½øÈë¿ó¶´
¸ù¾Ýʶ±ðµ½µÄµØÍ¼Ãû³Æ£¬ÅжÏÊÇ·ñÐèÒªÇл»µØÍ¼£¬²¢Ä£Äâ²Ù×÷½øÈë¿ó¶´¡£
```python
if map_name != "¿ó¶´µØÍ¼Ãû³Æ":
# Ä£Äâ´ò¿ªµØÍ¼½çÃæ
pyautogui.press('m') # ¼ÙÉè'm'¼ü´ò¿ªµØÍ¼
time.sleep(1)
# Ä£ÄâÑ¡Ôñ¿ó¶´µØÍ¼
pyautogui.click(x=target_map_x, y=target_map_y) # µã»÷¿ó¶´µØÍ¼
time.sleep(1)
# Ä£ÄâÈ·ÈϽøÈë
pyautogui.press('enter') # ¼ÙÉè'enter'¼üÈ·ÈϽøÈë
time.sleep(3) # µÈ´ýµØÍ¼¼ÓÔØ
```
##### £¨3£©×Ô¶¯Ñ°Â·µ½ÍÚ¿óµã
ʹÓÃͼÏñʶ±ð¼¼Êõ£¬Í¨¹ý`opencv`¿âʶ±ðÍÚ¿óµãλÖ㬲¢Ä£ÄâÒÆ¶¯²Ù×÷¡£
```python
# ¼ÓÔØÍÚ¿óµãÄ£°åͼƬ
mining_spot_template = cv2.imread('mining_spot.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥ÅäÍÚ¿óµãλÖÃ
result = cv2.matchTemplate(screenshot, mining_spot_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡ÍÚ¿óµãÖÐÐÄ×ø±ê
mining_spot_x, mining_spot_y = max_loc[0] + mining_spot_template.shape[1] // 2, max_loc[1] + mining_spot_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½ÍÚ¿óµãλÖÃ
pyautogui.moveTo(mining_spot_x, mining_spot_y, duration=0.5)
# Ä£Äâµã»÷ÒÆ¶¯
pyautogui.click()
time.sleep(5) # µÈ´ý½ÇÉ«ÒÆ¶¯µ½ÍÚ¿óµã
```
---
#### 2. ×Ô¶¯ÍÚ¿ó
##### £¨1£©Ä£ÄâÍÚ¿ó²Ù×÷
ʹÓÃ`pyautogui`Ä£ÄâÍÚ¿ó¼ü¡£
```python
# °´ÏÂÍÚ¿ó¼ü£¨¼ÙÉèÍÚ¿ó¼üΪ'g'£©
pyautogui.press('g')
time.sleep(2) # µÈ´ýÍÚ¿óÍê³É
```
---
#### 3. ×Ô¶¯Ê°È¡
##### £¨1£©¶¨Î»µôÂä¿óʯ
ʹÓÃͼÏñʶ±ð¼¼Êõ¼ì²âµØÃæÉϵĿóʯ£¬²¢Ä£Äâʰȡ²Ù×÷¡£
```python
# ¼ÓÔØ¿óʯģ°åͼƬ
ore_template = cv2.imread('ore.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥Åä¿óʯλÖÃ
result = cv2.matchTemplate(screenshot, ore_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡¿óʯÖÐÐÄ×ø±ê
ore_x, ore_y = max_loc[0] + ore_template.shape[1] // 2, max_loc[1] + ore_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½¿óʯλÖò¢Ê°È¡
pyautogui.moveTo(ore_x, ore_y, duration=0.5)
pyautogui.click()
```
---
#### 4. Ñ»·Âß¼
ÔÚÖ÷Ñ»·ÖÐʵÏÖÍÚ¿óÂß¼£¬È·±£½Å±¾³ÖÐøÔËÐС£
```python
import time
while True:
# ½øÈë¿ó¶´
enter_mining_map()
# Ѱ·µ½ÍÚ¿óµã
navigate_to_mining_spot()
# ÍÚ¿ó
mine_ore()
# ʰȡ¿óʯ
pickup_ore()
# µÈ´ýÒ»¶Îʱ¼ä
time.sleep(5) # ÍÚ¿ó¼ä¸ôʱ¼ä
```
---
### ËÄ¡¢ÍêÕû½Å±¾Ê¾Àý
ÒÔÏÂÊÇÒ»¸öÍêÕûµÄ×Ô¶¯ÍÚ¿ó½Å±¾Ê¾Àý£º
```python
import pyautogui
import cv2
import numpy as np
import time
import pytesseract
from PIL import Image
# µØÍ¼Ê¶±ðÓë½øÈë
def enter_mining_map():
# ½ØÈ¡µØÍ¼Ãû³ÆÇøÓò
map_name_region = (x, y, width, height) # ¸ù¾ÝÓÎÏ·½çÃæµ÷Õû
map_name_image = pyautogui.screenshot(region=map_name_region)
# ʶ±ðµØÍ¼Ãû³Æ
map_name = pytesseract.image_to_string(map_name_image)
print(f"µ±Ç°µØÍ¼£º{map_name}")
if map_name != "¿ó¶´µØÍ¼Ãû³Æ":
# Ä£Äâ´ò¿ªµØÍ¼½çÃæ
pyautogui.press('m') # ¼ÙÉè'm'¼ü´ò¿ªµØÍ¼
time.sleep(1)
# Ä£ÄâÑ¡Ôñ¿ó¶´µØÍ¼
pyautogui.click(x=target_map_x, y=target_map_y) # µã»÷¿ó¶´µØÍ¼
time.sleep(1)
# Ä£ÄâÈ·ÈϽøÈë
pyautogui.press('enter') # ¼ÙÉè'enter'¼üÈ·ÈϽøÈë
time.sleep(3) # µÈ´ýµØÍ¼¼ÓÔØ
# Ѱ·µ½ÍÚ¿óµã
def navigate_to_mining_spot():
# ¼ÓÔØÍÚ¿óµãÄ£°åͼƬ
mining_spot_template = cv2.imread('mining_spot.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥ÅäÍÚ¿óµãλÖÃ
result = cv2.matchTemplate(screenshot, mining_spot_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡ÍÚ¿óµãÖÐÐÄ×ø±ê
mining_spot_x, mining_spot_y = max_loc[0] + mining_spot_template.shape[1] // 2, max_loc[1] + mining_spot_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½ÍÚ¿óµãλÖÃ
pyautogui.moveTo(mining_spot_x, mining_spot_y, duration=0.5)
# Ä£Äâµã»÷ÒÆ¶¯
pyautogui.click()
time.sleep(5) # µÈ´ý½ÇÉ«ÒÆ¶¯µ½ÍÚ¿óµã
# ÍÚ¿ó
def mine_ore():
# °´ÏÂÍÚ¿ó¼ü£¨¼ÙÉèÍÚ¿ó¼üΪ'g'£©
pyautogui.press('g')
time.sleep(2) # µÈ´ýÍÚ¿óÍê³É
# ʰȡ¿óʯ
def pickup_ore():
# ¼ÓÔØ¿óʯģ°åͼƬ
ore_template = cv2.imread('ore.png', 0)
# ½ØÈ¡ÓÎÏ·ÆÁÄ»
screenshot = pyautogui.screenshot()
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY)
# Æ¥Åä¿óʯλÖÃ
result = cv2.matchTemplate(screenshot, ore_template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# »ñÈ¡¿óʯÖÐÐÄ×ø±ê
ore_x, ore_y = max_loc[0] + ore_template.shape[1] // 2, max_loc[1] + ore_template.shape[0] // 2
# ÒÆ¶¯Êó±êµ½¿óʯλÖò¢Ê°È¡
pyautogui.moveTo(ore_x, ore_y, duration=0.5)
pyautogui.click()
# Ö÷Ñ»·
while True:
enter_mining_map()
navigate_to_mining_spot()
mine_ore()
pickup_ore()
time.sleep(5) # ÍÚ¿ó¼ä¸ôʱ¼ä
```
---
### Îå¡¢½Å±¾ÓÅ»¯Óë×¢ÒâÊÂÏî
1. **ͼÏñʶ±ðÓÅ»¯**
- ʹÓøü¸ß¾«¶ÈµÄÄ£°åͼƬ¡£
- µ÷ÕûͼÏñÆ¥ÅäµÄãÐÖµ£¬Ìá¸ßʶ±ð׼ȷÂÊ¡£
2. **¼æÈÝÐÔ**
- È·±£½Å±¾ÔÚ²»Í¬·Ö±æÂʺÍÓÎÏ·´°¿ÚλÖÃ϶¼ÄÜÕý³£ÔËÐС£
3. **·çÏÕ¿ØÖÆ**
- ±ÜÃⳤʱ¼äÁ¬ÐøÔËÐнű¾£¬ÒÔ·À±»·â½û¡£
- ¶¨ÆÚ¸üнű¾£¬ÒÔÓ¦¶ÔÓÎÏ·¸üкͷ´×÷±×ϵͳµÄÉý¼¶¡£
---
### Áù¡¢½áÓï
ͨ¹ý±¾ÎĵÄÏêϸ½²½âºÍ´úÂëʾÀý£¬Äú¿ÉÒÔÇáËÉʵÏÖ´«ÆæÖеÄ×Ô¶¯ÍÚ¿ó¹¦ÄÜ£¬²¢Ö§³Ö×Ô¶¯Ñ°Â·ºÍ×Ô¶¯Ê°È¡¡£Ï£Íû±¾ÎÄÄܰïÖúÄúÌáÉýÓÎÏ·ÌåÑ飬ͬʱҲÄܼ¤·¢Äú¶Ô±à³ÌºÍ×Ô¶¯»¯¼¼ÊõµÄÐËȤ£¡

