gpt4 book ai didi

c - 使用 Structs 来保存我在 C 游戏中的所有变量?

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:21 25 4
gpt4 key购买 nike

我目前正在使用 SDL 进行一些更高级的 C 编程,但我在函数和整体程序结构方面遇到了很多麻烦。

我的主要问题是游戏需要很多变量,大多数函数都需要访问和操作这些变量。我不想创建一堆全局变量,但我也不希望每次访问函数时都传递每个相关变量。

为了解决这个问题,我在程序的顶部创建了一个 Game 结构。该结构包含所有需要传递的游戏变量,如纹理和位置。我在主函数的开头声明了该结构的一个实例,初始化了其中的所有变量,然后继续将结构实例传递给不同的函数。

我的问题是:这是一个好的解决方案吗?也许有更好、更传统的方法来处理这个问题;如果是,请解释。

这更像是一个理论问题,没有任何我可以向您展示的具体代码的基础。

最佳答案

这样更好一些……但这是一种意见。首先,它看起来更好。其次,如果你够聪明,你可以将整个游戏结构转储到一个文件中供以后加载。 (我不知道怎么做,但我知道可以做到)

此外,您应该在顶层声明结构:

/* main.c */

typedef struct{
int health;
int xp_level;
} game_t;

game_t GAME;

void takeHit(){
printf("The monster hits you!\n")
GAME.helath--;
}

main(){
GAME.health = 42;
GAME.xp_level = 0;
printf("Health: %d | Level: %d\n",GAME.health,GAME.xp_level);
takeHit();
printf("Health: %d | Level: %d\n",GAME.health,GAME.xp_level);
}

$ make main
$ ./main
Health: 42 | Level: 0
The monster hits you!
Health: 41 | Level: 0

因此,您编写的任何函数都可以访问该结构,而无需传递它。

您还可以使用 Ularn 方法:

/* Character.h */

#define NUMBER_ATTRIBUTES 4

#define HP 0
#define STR 1
#define INT 2
#define WIS 3
/* etc... */

int c[NUMBER_ATTRIBUTES];

关于c - 使用 Structs 来保存我在 C 游戏中的所有变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40197848/

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