我正在C中执行一个卡片游戏。有很多类型的卡,每个都有一堆信息,包括一些需要单独脚本化的操作。
给定一个这样的结构(我不确定我有函数指针的语法)
struct CARD {
int value;
int cost;
// This is a pointer to a function that carries out actions unique
// to this card
int (*do_actions) (struct GAME_STATE *state, int choice1, int choice2);
};
我想初始化一个静态数组,每个卡一个。我猜这个看起来像这样
int do_card0(struct GAME_STATE *state, int choice1, int choice2)
{
// Operate on state here
}
int do_card1(struct GAME_STATE *state, int choice1, int choice2)
{
// Operate on state here
}
extern static struct cardDefinitions[] = {
{0, 1, do_card0},
{1, 3, do_card1}
};
>这个工作是否正常,而我正是这样做吗?我试图避免大量的switch语句。
>我需要提前定义’do_cardN’函数,还是有一些方法可以在结构化的初始化中定义它们(像python中的lambda函数一样)?
>我需要从另一个文件中读取cardDefinitions的只读访问权限 – “extern static”是否正确?
我知道这是一个很多的问题,但我真的有点模糊如何去做。
谢谢。
编辑:
要明确,我的目标是能够做一些类似的事情
int cost = cardDefinitions[cardNumber].cost;
要么
int result = cardDefinitions[cardNumber].do_action(state, choice1, choice2);
而不是在整个地方使用巨大的switch语句。
博主正在尝试在C语言中为卡片游戏创建一个结构体数组,每个结构体包含卡片值、成本和指向执行特定操作的函数指针。他们希望避免使用大量switch语句,并能通过数组索引直接调用函数。已经定义了两个示例函数do_card0和do_card1。问题在于结构体数组的初始化、函数指针的语法以及如何从其他文件安全地访问此数组。
1939

被折叠的 条评论
为什么被折叠?



