gpt4 book ai didi

c++ - 相对于其数据朝特定方向移动的有效方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:11 26 4
gpt4 key购买 nike

所以我正在开发一个迷你游戏,在这个游戏中,你是一个有怪物的竞技场中的玩家。目标是通过射击杀死所有怪物。你可以上/右/下/左移动,怪物也可以。如果怪物碰到你,你就会死。

我必须为玩家创建一个玩家 AI 以尝试维持生命。

所以我为每个方向(DangerUp/DangerDown/DangerRight/DangerLeft)的每个“危险区域”定义了一个整数,并将它们全部初始化为零。所以它看起来像这样:

int DangerUp = 0, DangerDown = 0, DangerRight = 0, DangerLeft = 0;

如果我上方有怪物,dangerUp 将增加 1。如果我下面有一个,dangerDown 将递增 1。与其他两个相同。

所以我想写的(在伪代码中)本质上是:

如果我被三个包围(这意味着 4 个危险变量中有 3 个的值为 1),则向危险为 0 的方向移动。

我正计划这样做:

if (DangerUP == 1 && DangerDOWN == 1 && DangerLEFT == 1 && DangerRIGHT == 0) // if surrounded by 3 in the up, down, left direction

{
// move right;
player_x_direction++; // (this moves my character one direction to the right)

}

然后我计划做另外三个 if 测试 4 个变量中的 3 个等于 1 的所有组合。

有没有一种更简单的方法可以做到这一点,我可以朝任何危险方向 = 0 的方向移动?

最佳答案

假设危险值总是0或1,那么:

int danger_everywhere = (dangerUp << 3) | (dangerDown << 2)
| (dangerLeft << 1) | (dangerRight);

然后:

if (danger_everywhere == 8 + 4 + 2)
move_right();

if (danger_everywhere == 8 + 4 + 1)
move_left();

if (danger_everywhere == 8 + 2 + 1)
move_down();

if (danger_everywhere == 4 + 2 + 1)
move_up();

关于c++ - 相对于其数据朝特定方向移动的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35664917/

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