gpt4 book ai didi

c - 如何删除在C循环中作为函数调用的字符图像?

转载 作者:行者123 更新时间:2023-11-30 16:18:28 25 4
gpt4 key购买 nike

我正在创建一个游戏。我有一个函数,它使用循环在随机位置绘制字符图像。我有碰撞逻辑,一切都运行得很好。我遇到的问题是我不知道如何在碰撞时从游戏中删除角色图像。该图像是游戏显示中的许多同类图像之一,因此我特别希望能够删除特定位置的角色图像,并减少存储的总存储数量(如果游戏中存在该类型的图像),以返回它在记分牌上。

我尝试以与数组项相同的方式删除被调用函数的所需迭代,但这只是给出了错误。

void drawEnemy(){
drawEnemyImage(x[i], y[i], enemyImage);
}

void drawAllEnemies(){
for(int i = 0; i < numEnemies; i++){
drawEnemy(i);
}
}
// (i also have collision logic here but it's not needed for the problem)

void returnCollision(){
for (int i = 0; i < numEnemies; i++){
if(collision() == true)
return;
}

最佳答案

从这段代码中,我只能推测你想删除敌人的角色图像。好吧。我们通常会做这样的事情:

void deleteEnemy(int i) {
--numEnemies;
if (i == numEnemies) return;
memmove(x + i, x + i + 1, (numEnemies - i) * sizeof(x[0]));
memmove(y + i, y + i + 1, (numEnemies - i) * sizeof(y[0]));
}

现在阵列中间的敌人已经消失了。我假设 x 和 y 是整数数组或类似的数组。如果您首先需要释放内存,则可以在 if 之前放置适当的 free() 调用。

请为全局变量使用更好的变量名称。 enemyxenemyy 已经是巨大的改进了。

关于c - 如何删除在C循环中作为函数调用的字符图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896593/

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