µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡ÈÈѪ´«Ææ¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

´«Ææ×Ô¶¯ÍÚ¿ó½Å±¾ÖÆ×÷È«¹¥ÂÔ£º´Ó×Ô¶¯Ñ°Â·µ½×Ô¶¯Ê°È¡

Èȶȣº
ÔÚ´«ÆæÖУ¬ÍÚ¿óÊÇÍæ¼Ò»ñÈ¡×ÊÔ´µÄÖØÒªÍ¾¾¶Ö®Ò»¡£È»¶ø£¬ÊÖ¶¯ÍÚ¿ó²»½öºÄʱºÄÁ¦£¬»¹ÈÝÒ×ÈÃÈ˸е½¿ÝÔΪÁ˽â¾öÕâÒ»ÎÊÌ⣬Ðí¶àÍæ¼ÒÑ¡ÔñʹÓÃ×Ô¶¯ÍÚ¿ó½Å±¾¡£±¾ÎĽ«Ïêϸ½éÉÜÈçºÎÖÆ×÷Ò»¸öÍêÕûµÄ´«Ææ×Ô¶¯ÍÚ¿ó½Å±¾£¬º­¸Ç´Ó×Ô¶¯Ñ°Â·µ½×Ô¶¯Ê°È¡µÄÈ«¹ý³Ì¡£

---

### Ò»¡¢×Ô¶¯ÍÚ¿ó½Å±¾µÄºËÐŦÄÜ

Ò»¸öÍêÕûµÄ×Ô¶¯ÍÚ¿ó½Å±¾ÐèҪʵÏÖÒÔϹ¦ÄÜ£º
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. **·çÏÕ¿ØÖÆ**
- ±ÜÃⳤʱ¼äÁ¬ÐøÔËÐнű¾£¬ÒÔ·À±»·â½û¡£
- ¶¨ÆÚ¸üнű¾£¬ÒÔÓ¦¶ÔÓÎÏ·¸üкͷ´×÷±×ϵͳµÄÉý¼¶¡£

---

### Áù¡¢½áÓï

ͨ¹ý±¾ÎĵÄÏêϸ½²½âºÍ´úÂëʾÀý£¬Äú¿ÉÒÔÇáËÉʵÏÖ´«ÆæÖеÄ×Ô¶¯ÍÚ¿ó¹¦ÄÜ£¬²¢Ö§³Ö×Ô¶¯Ñ°Â·ºÍ×Ô¶¯Ê°È¡¡£Ï£Íû±¾ÎÄÄܰïÖúÄúÌáÉýÓÎÏ·ÌåÑ飬ͬʱҲÄܼ¤·¢Äú¶Ô±à³ÌºÍ×Ô¶¯»¯¼¼ÊõµÄÐËȤ£¡