目前状态
一时脑热开始写的东西,计划完全使用C语言实现,尽量使用通用接口,能够在windows上直接运行
几乎是一穷二白,初步搭建了牌堆、玩家信息接口体,编写了简单的UI函数,能够将玩家信息显示在屏幕上
牌堆
由cards.h
中定义了卡牌的信息结构体
enum Card_Color {heart = 3, spade = 5, diamond = 4, club = 5} ;
enum Card_Package {debug} ;
enum Card_Type {normal} ;
/* 卡牌类 */
typedef struct{
char name[24]; // 卡牌名称
enum Card_Color color; // 花色
int point; // 点数
enum Card_Type type; // 卡牌类型
enum Card_Package package; // 所属卡包
} Card;
这里设定一张卡牌的基本信息由名称、花色、点数、类型和所属卡包组成,定义了三个枚举变量
Card_Color
是卡牌的花色,有红桃、黑桃、方块、草花组成
Card_Package
是卡牌包,比如标准、ex、军争、风火林山等,可能是为了后续可以自由设定所使用的卡包(还早),目前只开启了DEBUG卡包
Card_Type
是卡包类型,计划支持普通牌、锦囊牌、装备牌等等,目前未实现
卡牌以如下的形式组成,精确到每一张牌,先用宏隔离不同的卡包
/* 卡包集合 */
Card cards[] = {
#ifdef CARD_PACKAGE_DEBUG
{.name = "杀", .color = heart, .point = 1, .package = debug, },
{.name = "杀", .color = heart, .point = 2, .package = debug, },
{.name = "杀", .color = heart, .point = 3, .package = debug, },
{.name = "杀", .color = heart, .point = 4, .package = debug, },
{.name = "杀", .color = heart, .point = 5, .package = debug, },
#endif /* CARD_PACKAGE_DEBUG */
};
玩家信息
因为要支持的东西太多了性别、特殊标记等等,先都不考虑
目前支持名字、血量、最大血量、攻击距离。判定区、装备区使用卡牌指针指向一张牌,没有则为NULL
手牌使用链表的形式进行组织(考虑到频繁的插入、删除操作)
typedef struct {
char name[16];
int hp;
int maxhp;
int att_distance;
Card *weapon;
Card *armour;
Card *att_horse;
Card *def_horse;
struct Card_List *hand_card;
} Player;