0
void moveZombie(char gr[][SIZEX], int sp[], int keyMove[], int zombie[][ZOMBIECOUNT]) {
for(int i(0); i < ZOMBIECOUNT; i++) { 
    if (( zombie[0][ZOMBIECOUNT] < (sp[0] + keyMove[0])) && (zombie[1][ZOMBIECOUNT] < (sp[1] + keyMove[1]))) {

    }
    if (( zombie[0][ZOMBIECOUNT] < (sp[0] + keyMove[0])) && (zombie[1][ZOMBIECOUNT] > (sp[1] + keyMove[1]))) {

    }
    if (( zombie[0][ZOMBIECOUNT] > (sp[0] + keyMove[0])) && (zombie[1][ZOMBIECOUNT] < (sp[1] + keyMove[1]))) {

    }
    if (( zombie[0][ZOMBIECOUNT] > (sp[0] + keyMove[0])) && (zombie[1][ZOMBIECOUNT] > (sp[1] + keyMove[1]))) {

    }
    if (( zombie[0][ZOMBIECOUNT] = (sp[0] + keyMove[0])) && (zombie[1][ZOMBIECOUNT] != (sp[1] + keyMove[1]))) {

    }
    if (( zombie[0][ZOMBIECOUNT] != (sp[0] + keyMove[0])) && (zombie[1][ZOMBIECOUNT] = (sp[1] + keyMove[1]))) {

    }

上面的代码具有一个 for 循环和许多 if。对于 zobie 可能去的地方,每个 if 都应该是不同的选择。这是一个来自 pacman 风格游戏的程序的函数,其中 sp 是 pacman,僵尸盲目地跟随 sp。Sp由人类控制,但僵尸会自动跟随玩家移动。sp 向上、向下、向左、向右移动,但僵尸也可以沿对角线移动。一共有四个僵尸,ZOMBIECOUNT = 4

4

3 回答 3

3

首先,创建一个大小为 ZOMBIECOUNT 的数组,其中包含 ZOMBIE 的 X 和 Y 位置,而不是 X 和 Y 位置的数组,每个位置都有 ZOMBIECOUNT 条目。

第二,计算sp[0] + keymove[0]一次。对 做同样的事情sp[1] + keymove[1]。将其存储在具有描述性名称的变量中。

第三,a = b不是你想要的,你想要a == b的。

第四,计算spx 是更高还是更低或在同一位置。然后计算出sp更高或更低或在 y 中的相同位置。将您计算出的内容存储在 中int,+1 表示“更高”,-1 表示“更低”,0 表示“相同”。 zombieDirectionXzombieDirectionY,或相同的 2 元素数组。

第五,zombie[0][ZOMBIECOUNT]在你的条件下不是你想要的。你想要zombie[0][i](或者即使zombie[i][0]你像我上面提到的那样颠倒顺序)。

最后,添加zombiedirectionX当前僵尸的 x 坐标,使其在 x 轴上向玩家移动 1 个方格,如下所示zombie[0][i] += zombieDirectionX

于 2013-04-15T20:25:31.520 回答
1

好吧zombie[0][ZOMBIECOUNT]是错误的。我猜你zombie[0][i]的意思是 一个明显的问题是为什么你有一个二维的僵尸数组。为什么一维不够?你做错了什么,但很难说是什么。

你使用的方式sp看起来keyMove也有点可疑。

于 2013-04-15T20:23:01.110 回答
1

i 在您的代码中不使用索引。

for(int i(0); i < ZOMBIECOUNT; i++) { 
if (( zombie[0][ZOMBIECOUNT] < (sp[0] + keyMove[0])) && (zombie[1][ZOMBIECOUNT] < (sp[1] + keyMove[1])))

可能您想在“某处”使用它;p,也许:

for(int i(0); i < ZOMBIECOUNT; i++) { 
    if (( zombie[0][i] < (sp[0] + keyMove[0])) && (zombie[1][i] < (sp[1] + keyMove[1])))

也改变这一行:

&& (zombie[1][ZOMBIECOUNT] = (sp[1] + keyMove[1])))

可能你想比较,所以使用==而不是 single =which assigns

于 2013-04-15T20:26:30.813 回答