command三国杀开发日记20200914
阅读原文时间:2023年07月10日阅读:1

目前状态

一时脑热开始写的东西,计划完全使用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;

UI

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章