ÔÚ¼ÜÉè´«ÆæÊ±£¬WHILE Ñ»·ÊÇÒ»Öַdz£ÊµÓõĿØÖƽṹ£¬Ëü»áÔÚÿ´ÎÖ´ÐÐÑ»·Ìå֮ǰ¼ì²éÌõ¼þ±í´ïʽ£¬Ö»ÒªÌõ¼þÎªÕæ¾Í»á³ÖÐøÖ´ÐÐÑ»·Ì壬ֱµ½Ìõ¼þΪ¼Ù²Å»áÌø³öÑ»·¡£ÒÔÏÂÊÇ WHILE Ñ»·ÔÚ¼ÜÉè´«ÆæÖеÄһЩ¾ßÌåÓ¦Óó¡¾°£º
### 1. ×Ô¶¯²¹ÑªÓë²¹À¶
ÔÚ´«ÆæÓÎÏ·ÖУ¬½ÇÉ«ÔÚÕ½¶·¹ý³ÌÖÐѪÁ¿ºÍħ·¨Öµ»á²»¶ÏÏûºÄ£¬Ê¹Óà WHILE Ñ»·¿ÉÒÔʵÏÖ×Ô¶¯²¹ÑªºÍ²¹À¶µÄ¹¦ÄÜ£¬È·±£½ÇÉ«ÔÚÕ½¶·Öб£³ÖÁ¼ºÃµÄ״̬¡£
```plaintext
# ³õʼ»¯±äÁ¿
HP = GetMyHP() # »ñÈ¡µ±Ç°ÑªÁ¿
MAX_HP = GetMaxHP() # »ñÈ¡×î´óѪÁ¿
MP = GetMyMP() # »ñÈ¡µ±Ç°Ä§·¨Öµ
MAX_MP = GetMaxMP() # »ñÈ¡×î´óħ·¨Öµ
HP_THRESHOLD = MAX_HP * 0.3 # ѪÁ¿ãÐÖµ£¬µ±ÑªÁ¿µÍÓÚ 30% ʱ²¹Ñª
MP_THRESHOLD = MAX_MP * 0.2 # ħ·¨ÖµãÐÖµ£¬µ±Ä§·¨ÖµµÍÓÚ 20% ʱ²¹À¶
# WHILE Ñ»·ÊµÏÖ×Ô¶¯²¹Ñª²¹À¶
WHILE TRUE
HP = GetMyHP()
MP = GetMyMP()
# ²¹Ñª²Ù×÷
IF HP < HP_THRESHOLD
UseItem ²¹ÑªÒ©
Delay 1000 # ÑÓ³Ù 1 Ã룬±ÜÃâÆµ·±Ê¹ÓÃÒ©Æ·
ENDIF
# ²¹À¶²Ù×÷
IF MP < MP_THRESHOLD
UseItem ²¹À¶Ò©
Delay 1000
ENDIF
Delay 500 # ÿ¸ô 0.5 Ãë¼ì²éÒ»´Î״̬
ENDWHILE
```
ÔÚÕâ¸ö½Å±¾ÖУ¬Ê¹Óà `WHILE TRUE` ´´½¨ÁËÒ»¸öÎÞÏÞÑ»·£¬ÔÚÿ´ÎÑ»·Öмì²é½ÇÉ«µÄѪÁ¿ºÍħ·¨Öµ¡£Èç¹ûѪÁ¿µÍÓÚÉ趨µÄãÐÖµ£¬¾ÍʹÓò¹ÑªÒ©£»Èç¹ûħ·¨ÖµµÍÓÚãÐÖµ£¬¾ÍʹÓò¹À¶Ò©¡£Í¨¹ýÉèÖÃÊʵ±µÄÑÓ³Ùʱ¼ä£¬±ÜÃâÁËÆµ·±Ê¹ÓÃÒ©Æ·µ¼ÖµÄÒì³£¡£
### 2. ³ÖÐø´ò¹Ö
ÔÚ´«ÆæÖУ¬Íæ¼Òͨ³£ÐèÒª²»¶ÏµØ¹¥»÷¹ÖÎïÀ´»ñÈ¡¾ÑéºÍ×°±¸¡£Ê¹Óà WHILE Ñ»·¿ÉÒÔÈýÇÉ«³ÖÐø¹¥»÷¸½½üµÄ¹ÖÎֱµ½Âú×ãÌØ¶¨Ìõ¼þ£¨Èç±³°üÒÑÂú¡¢½ÇɫѪÁ¿¹ýµÍµÈ£©²ÅÍ£Ö¹¡£
```plaintext
# ³õʼ»¯±äÁ¿
BAG_SPACE = GetBagSpace() # »ñÈ¡±³°üÊ£Óà¿Õ¼ä
MIN_BAG_SPACE = 5 # ±³°ü×îСʣÓà¿Õ¼ä£¬µ±Ð¡ÓÚÕâ¸öֵʱֹͣ´ò¹Ö
HP = GetMyHP()
MIN_HP = GetMaxHP() * 0.2 # ѪÁ¿×îСֵ£¬µ±µÍÓÚÕâ¸öֵʱֹͣ´ò¹Ö
# WHILE Ñ»·³ÖÐø´ò¹Ö
WHILE BAG_SPACE > MIN_BAG_SPACE AND HP > MIN_HP
MONSTER_ID = FindNearestMonster() # ²éÕÒ×î½üµÄ¹ÖÎï
IF MONSTER_ID > 0
Attack MONSTER_ID # ¹¥»÷¹ÖÎï
Delay 1500 # ÑÓ³Ù 1.5 Ã룬µÈ´ý¹¥»÷½á¹û
ENDIF
BAG_SPACE = GetBagSpace()
HP = GetMyHP()
ENDWHILE
```
ÔÚÕâ¸ö½Å±¾ÖУ¬Ö»Òª±³°üÓÐ×ã¹»µÄ¿Õ¼äÇÒ½ÇɫѪÁ¿³ä×㣬¾Í»á²»¶Ï²éÕÒ²¢¹¥»÷×î½üµÄ¹ÖÎÿ´Î¹¥»÷ºó»áÑÓ³ÙÒ»¶Îʱ¼äµÈ´ý¹¥»÷½á¹û£¬È»ºó¸üб³°ü¿Õ¼äºÍѪÁ¿ÐÅÏ¢¡£µ±±³°ü¿Õ¼ä²»×ã»òѪÁ¿¹ýµÍʱ£¬Ñ»·½áÊø£¬Í£Ö¹´ò¹Ö¡£
### 3. ÈÎÎñÑ»·
ÔÚ´«ÆæÓÎÏ·ÖУ¬ÓÐÐí¶àÈÎÎñÐèÒªÍæ¼ÒÖØ¸´Íê³É£¬Èç²É¼¯×ÊÔ´¡¢ÔËËÍÎïÆ·µÈ¡£Ê¹Óà WHILE Ñ»·¿ÉÒÔʵÏÖÈÎÎñµÄ×Ô¶¯Ñ»·Ö´ÐУ¬Ö±µ½ÈÎÎñÍê³É»ò´ïµ½Ò»¶¨µÄ´ÎÊý¡£
```plaintext
# ³õʼ»¯±äÁ¿
TASK_COUNT = 0 # ÈÎÎñÍê³É´ÎÊý
MAX_TASK_COUNT = 10 # ×î´óÈÎÎñÍê³É´ÎÊý
# WHILE Ñ»·Ö´ÐÐÈÎÎñ
WHILE TASK_COUNT < MAX_TASK_COUNT
MoveTo ²É¼¯µØµã # ÒÆ¶¯µ½²É¼¯µØµã
UseSkill ²É¼¯¼¼ÄÜ # ʹÓòɼ¯¼¼ÄÜ
Delay 3000 # ÑÓ³Ù 3 Ã룬µÈ´ý²É¼¯½á¹û
TASK_COUNT = TASK_COUNT + 1 # ÈÎÎñÍê³É´ÎÊý¼Ó 1
ENDWHILE
```
ÔÚÕâ¸ö½Å±¾ÖУ¬½ÇÉ«»á²»¶ÏÒÆ¶¯µ½²É¼¯µØµã²¢Ê¹Óòɼ¯¼¼ÄÜ£¬Ã¿´Î²É¼¯ºóÈÎÎñÍê³É´ÎÊý¼Ó 1¡£µ±ÈÎÎñÍê³É´ÎÊý´ïµ½×î´óÉ趨ֵʱ£¬Ñ»·½áÊø£¬ÈÎÎñÍ£Ö¹Ö´ÐС£
### 4. µÈ´ýÌØ¶¨Ìõ¼þ
ÔÚijЩÇé¿öÏ£¬ÐèÒªµÈ´ýÓÎÏ·ÖеÄÌØ¶¨Ìõ¼þÂú×ãºó²ÅÄܼÌÐøÖ´ÐкóÐø²Ù×÷£¬ÀýÈçµÈ´ýij¸ö NPC ³öÏÖ¡¢µÈ´ýÌØ¶¨Ê¼þ´¥·¢µÈ¡£Ê¹Óà WHILE Ñ»·¿ÉÒÔʵÏÖÕâÖֵȴý»úÖÆ¡£
```plaintext
# ³õʼ»¯±äÁ¿
NPC_EXIST = CheckNPCExist ÌØ¶¨ NPC # ¼ì²éÌØ¶¨ NPC ÊÇ·ñ´æÔÚ
# WHILE Ñ»·µÈ´ý NPC ³öÏÖ
WHILE NPC_EXIST == 0
Delay 2000 # ÿ¸ô 2 Ãë¼ì²éÒ»´Î
NPC_EXIST = CheckNPCExist ÌØ¶¨ NPC
ENDWHILE
# NPC ³öÏÖºóÖ´ÐкóÐø²Ù×÷
TalkToNPC ÌØ¶¨ NPC
```
ÔÚÕâ¸ö½Å±¾ÖУ¬Ê¹Óà `WHILE` Ñ»·²»¶Ï¼ì²éÌØ¶¨ NPC ÊÇ·ñ´æÔÚ¡£Èç¹û NPC ²»´æÔÚ£¬¾Íÿ¸ôÒ»¶Îʱ¼ä¼ì²éÒ»´Î£¬Ö±µ½ NPC ³öÏÖΪֹ¡£µ± NPC ³öÏÖºó£¬Ìø³öÑ»·²¢Óë NPC ½øÐжԻ°¡£
### 1. ×Ô¶¯²¹ÑªÓë²¹À¶
ÔÚ´«ÆæÓÎÏ·ÖУ¬½ÇÉ«ÔÚÕ½¶·¹ý³ÌÖÐѪÁ¿ºÍħ·¨Öµ»á²»¶ÏÏûºÄ£¬Ê¹Óà WHILE Ñ»·¿ÉÒÔʵÏÖ×Ô¶¯²¹ÑªºÍ²¹À¶µÄ¹¦ÄÜ£¬È·±£½ÇÉ«ÔÚÕ½¶·Öб£³ÖÁ¼ºÃµÄ״̬¡£
```plaintext
# ³õʼ»¯±äÁ¿
HP = GetMyHP() # »ñÈ¡µ±Ç°ÑªÁ¿
MAX_HP = GetMaxHP() # »ñÈ¡×î´óѪÁ¿
MP = GetMyMP() # »ñÈ¡µ±Ç°Ä§·¨Öµ
MAX_MP = GetMaxMP() # »ñÈ¡×î´óħ·¨Öµ
HP_THRESHOLD = MAX_HP * 0.3 # ѪÁ¿ãÐÖµ£¬µ±ÑªÁ¿µÍÓÚ 30% ʱ²¹Ñª
MP_THRESHOLD = MAX_MP * 0.2 # ħ·¨ÖµãÐÖµ£¬µ±Ä§·¨ÖµµÍÓÚ 20% ʱ²¹À¶
# WHILE Ñ»·ÊµÏÖ×Ô¶¯²¹Ñª²¹À¶
WHILE TRUE
HP = GetMyHP()
MP = GetMyMP()
# ²¹Ñª²Ù×÷
IF HP < HP_THRESHOLD
UseItem ²¹ÑªÒ©
Delay 1000 # ÑÓ³Ù 1 Ã룬±ÜÃâÆµ·±Ê¹ÓÃÒ©Æ·
ENDIF
# ²¹À¶²Ù×÷
IF MP < MP_THRESHOLD
UseItem ²¹À¶Ò©
Delay 1000
ENDIF
Delay 500 # ÿ¸ô 0.5 Ãë¼ì²éÒ»´Î״̬
ENDWHILE
```
ÔÚÕâ¸ö½Å±¾ÖУ¬Ê¹Óà `WHILE TRUE` ´´½¨ÁËÒ»¸öÎÞÏÞÑ»·£¬ÔÚÿ´ÎÑ»·Öмì²é½ÇÉ«µÄѪÁ¿ºÍħ·¨Öµ¡£Èç¹ûѪÁ¿µÍÓÚÉ趨µÄãÐÖµ£¬¾ÍʹÓò¹ÑªÒ©£»Èç¹ûħ·¨ÖµµÍÓÚãÐÖµ£¬¾ÍʹÓò¹À¶Ò©¡£Í¨¹ýÉèÖÃÊʵ±µÄÑÓ³Ùʱ¼ä£¬±ÜÃâÁËÆµ·±Ê¹ÓÃÒ©Æ·µ¼ÖµÄÒì³£¡£
### 2. ³ÖÐø´ò¹Ö
ÔÚ´«ÆæÖУ¬Íæ¼Òͨ³£ÐèÒª²»¶ÏµØ¹¥»÷¹ÖÎïÀ´»ñÈ¡¾ÑéºÍ×°±¸¡£Ê¹Óà WHILE Ñ»·¿ÉÒÔÈýÇÉ«³ÖÐø¹¥»÷¸½½üµÄ¹ÖÎֱµ½Âú×ãÌØ¶¨Ìõ¼þ£¨Èç±³°üÒÑÂú¡¢½ÇɫѪÁ¿¹ýµÍµÈ£©²ÅÍ£Ö¹¡£
```plaintext
# ³õʼ»¯±äÁ¿
BAG_SPACE = GetBagSpace() # »ñÈ¡±³°üÊ£Óà¿Õ¼ä
MIN_BAG_SPACE = 5 # ±³°ü×îСʣÓà¿Õ¼ä£¬µ±Ð¡ÓÚÕâ¸öֵʱֹͣ´ò¹Ö
HP = GetMyHP()
MIN_HP = GetMaxHP() * 0.2 # ѪÁ¿×îСֵ£¬µ±µÍÓÚÕâ¸öֵʱֹͣ´ò¹Ö
# WHILE Ñ»·³ÖÐø´ò¹Ö
WHILE BAG_SPACE > MIN_BAG_SPACE AND HP > MIN_HP
MONSTER_ID = FindNearestMonster() # ²éÕÒ×î½üµÄ¹ÖÎï
IF MONSTER_ID > 0
Attack MONSTER_ID # ¹¥»÷¹ÖÎï
Delay 1500 # ÑÓ³Ù 1.5 Ã룬µÈ´ý¹¥»÷½á¹û
ENDIF
BAG_SPACE = GetBagSpace()
HP = GetMyHP()
ENDWHILE
```
ÔÚÕâ¸ö½Å±¾ÖУ¬Ö»Òª±³°üÓÐ×ã¹»µÄ¿Õ¼äÇÒ½ÇɫѪÁ¿³ä×㣬¾Í»á²»¶Ï²éÕÒ²¢¹¥»÷×î½üµÄ¹ÖÎÿ´Î¹¥»÷ºó»áÑÓ³ÙÒ»¶Îʱ¼äµÈ´ý¹¥»÷½á¹û£¬È»ºó¸üб³°ü¿Õ¼äºÍѪÁ¿ÐÅÏ¢¡£µ±±³°ü¿Õ¼ä²»×ã»òѪÁ¿¹ýµÍʱ£¬Ñ»·½áÊø£¬Í£Ö¹´ò¹Ö¡£
### 3. ÈÎÎñÑ»·
ÔÚ´«ÆæÓÎÏ·ÖУ¬ÓÐÐí¶àÈÎÎñÐèÒªÍæ¼ÒÖØ¸´Íê³É£¬Èç²É¼¯×ÊÔ´¡¢ÔËËÍÎïÆ·µÈ¡£Ê¹Óà WHILE Ñ»·¿ÉÒÔʵÏÖÈÎÎñµÄ×Ô¶¯Ñ»·Ö´ÐУ¬Ö±µ½ÈÎÎñÍê³É»ò´ïµ½Ò»¶¨µÄ´ÎÊý¡£
```plaintext
# ³õʼ»¯±äÁ¿
TASK_COUNT = 0 # ÈÎÎñÍê³É´ÎÊý
MAX_TASK_COUNT = 10 # ×î´óÈÎÎñÍê³É´ÎÊý
# WHILE Ñ»·Ö´ÐÐÈÎÎñ
WHILE TASK_COUNT < MAX_TASK_COUNT
MoveTo ²É¼¯µØµã # ÒÆ¶¯µ½²É¼¯µØµã
UseSkill ²É¼¯¼¼ÄÜ # ʹÓòɼ¯¼¼ÄÜ
Delay 3000 # ÑÓ³Ù 3 Ã룬µÈ´ý²É¼¯½á¹û
TASK_COUNT = TASK_COUNT + 1 # ÈÎÎñÍê³É´ÎÊý¼Ó 1
ENDWHILE
```
ÔÚÕâ¸ö½Å±¾ÖУ¬½ÇÉ«»á²»¶ÏÒÆ¶¯µ½²É¼¯µØµã²¢Ê¹Óòɼ¯¼¼ÄÜ£¬Ã¿´Î²É¼¯ºóÈÎÎñÍê³É´ÎÊý¼Ó 1¡£µ±ÈÎÎñÍê³É´ÎÊý´ïµ½×î´óÉ趨ֵʱ£¬Ñ»·½áÊø£¬ÈÎÎñÍ£Ö¹Ö´ÐС£
### 4. µÈ´ýÌØ¶¨Ìõ¼þ
ÔÚijЩÇé¿öÏ£¬ÐèÒªµÈ´ýÓÎÏ·ÖеÄÌØ¶¨Ìõ¼þÂú×ãºó²ÅÄܼÌÐøÖ´ÐкóÐø²Ù×÷£¬ÀýÈçµÈ´ýij¸ö NPC ³öÏÖ¡¢µÈ´ýÌØ¶¨Ê¼þ´¥·¢µÈ¡£Ê¹Óà WHILE Ñ»·¿ÉÒÔʵÏÖÕâÖֵȴý»úÖÆ¡£
```plaintext
# ³õʼ»¯±äÁ¿
NPC_EXIST = CheckNPCExist ÌØ¶¨ NPC # ¼ì²éÌØ¶¨ NPC ÊÇ·ñ´æÔÚ
# WHILE Ñ»·µÈ´ý NPC ³öÏÖ
WHILE NPC_EXIST == 0
Delay 2000 # ÿ¸ô 2 Ãë¼ì²éÒ»´Î
NPC_EXIST = CheckNPCExist ÌØ¶¨ NPC
ENDWHILE
# NPC ³öÏÖºóÖ´ÐкóÐø²Ù×÷
TalkToNPC ÌØ¶¨ NPC
```
ÔÚÕâ¸ö½Å±¾ÖУ¬Ê¹Óà `WHILE` Ñ»·²»¶Ï¼ì²éÌØ¶¨ NPC ÊÇ·ñ´æÔÚ¡£Èç¹û NPC ²»´æÔÚ£¬¾Íÿ¸ôÒ»¶Îʱ¼ä¼ì²éÒ»´Î£¬Ö±µ½ NPC ³öÏÖΪֹ¡£µ± NPC ³öÏÖºó£¬Ìø³öÑ»·²¢Óë NPC ½øÐжԻ°¡£

