gpt4 book ai didi

c - 如何使用 lncurses 检测太空入侵者控制台游戏中的子弹击中

转载 作者:行者123 更新时间:2023-11-30 17:17:23 24 4
gpt4 key购买 nike

如何完成这个功能,让子弹摧毁岩石(以 # 字符显示)?我正在考虑使用 mvinch 来检查 * 项目符号字符 == “#”,但这不起作用。

void update_bullet(int key_code) {
screen_position bullet_pos = get_sprite_screen_loc(bullet_id);
if (bullet_pos.x < 0 && key_code == ' ') {
screen_position ship_pos = get_sprite_screen_loc(ship_id);
move_sprite_to(bullet_id, ship_pos.x + 7, ship_pos.y + 3);
} else if (bullet_pos.x > 79) {
move_sprite_to(bullet_id, -1, 0);
} else if (bullet_pos.x > 0) {
move_sprite(bullet_id, 1, 0);
}
}

上面的代码的作用是在屏幕上移动项目符号。

我试图让它做的是,当它走出控制台屏幕的边缘时,它移回到(-1,0),并且当它与岩石处于相同的位置时,两者都# 和 * 字符移回 (-1,0)。

最佳答案

您无法将光标移出窗口,因此您的 move_sprite 函数(问题中未给出)必须处理该方面。例如(缺少 move_sprite 的代码,它可能会这样做

int move_sprite(screen_position position, int dx, int dy)
{
int y, x;
getyx(stdscr, y, x);
if (dx > 0) {
++x;
}
else if (dx < 0) {
x = -1; /* this is incorrect, but matches the information given in the question */
}
...
move(y, x);
}

根据move手册页中,尝试将光标移出窗口将返回 ERR 并且无效。

关于c - 如何使用 lncurses 检测太空入侵者控制台游戏中的子弹击中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430207/

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