• command三国杀开发日记20200914


    目前状态

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

  • 相关阅读:
    对MVC HtmlHepler控件扩展(转载)
    通过源代码研究ASP.NET MVC中的Controller和View(一)(转载)
    rasmol使用方法
    经典笑话
    直线回归的概念
    众数
    Python ImportError: No module named Tkinter
    小干扰RNA
    complementary DNA, cDNA
    反义RNA
  • 原文地址:https://www.cnblogs.com/velscode/p/13670264.html
Copyright © 2020-2023  润新知