gpt4 book ai didi

python - 我正在用 Python 编写 Roguelike 程序,并且需要一个特定的怪物跟随脚本

转载 作者:行者123 更新时间:2023-12-01 05:36:41 25 4
gpt4 key购买 nike

我正在使用 libtcod 和 python 来制作 roguelike;我正在跟随的教程中,只有当您在怪物的视野中时,怪物才会跟随您。显然这是不够的;因为这意味着您可以转弯,而他们不会跟着您转弯。
我尝试过这样的事情;

class BasicMonster:
def take_turn(self, seen):
self.seen = False
monster = self.owner

if lib.map_is_in_fov(fov_map, monster.x, monster.y):
self.seen == True

if self.seen == True:
self.move_towards(player.x, player.y)

没有效果。它提高了

TypeError: take_turn() takes exactly 2 arguments (1 given)

不确定如何实现。

我正在调用我正在调用 take_turn

if game_state == 'playing' and player_action != 'didnt-take-turn': 
for object in objects:
if object.ai:
object.ai.take_turn()

最佳答案

一个简单的解决方案是跟踪怪物上次看到玩家时玩家的位置。

当玩家移出视野时,只需朝最后一个位置移动即可。

class BasicMonster:

def __init__(self):
self.last_player_pos = None

def take_turn(self):
monster = self.owner
if libtcod.map_is_in_fov(fov_map, monster.x, monster.y):
# store position we last saw the player
self.last_player_pos = player.x, player.y

#move towards player if far away
# ... rest of code here ...
else:
if self.last_player_pos:
monster.move_towards(*self.last_player_pos)

这当然非常简单(并且可利用),但您会明白的。进一步的步骤可能是创建某种暂停和/或通过声音/气味或与 FOV 无关的任何内容来跟踪玩家。

关于python - 我正在用 Python 编写 Roguelike 程序,并且需要一个特定的怪物跟随脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18818933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com