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

时间:2016-10-22 22:58:42

标签: c function variables struct

我目前正在使用SDL进行更高级的C编程,并且我在功能和整体程序结构方面遇到了很多麻烦。

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

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

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

这更像是一个理论问题,并且在我可以向您展示的任何特定代码中都没有基础。

1 个答案:

答案 0 :(得分:0)

这有点好......但这是一个观点。首先,它看起来更好。其次,如果您非常聪明,可以将整个游戏结构转储到文件中以便以后加载。 (我不知道怎么做,但我知道可以做到)

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

fetch
/* 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);
}

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

你也可以使用Ularn方法:

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