目前状态

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

command三国杀开发日记20200914的更多相关文章

  1. command三国杀开发日记20200915

    一句话进展 完善了程序结构,分离.c和.h 搭建了6个阶段函数 实现了玩家摸牌 封装实现了日志打印函数 日志打印 想要区分日志等级,包括DEBUG.INFO.WARN.ERRRO.PANIC,提供统一 ...

  2. LayIM.AspNetCore Middleware 开发日记(三)基础框架搭建

    前言 在上一篇中简单讲了一些基础知识,例如Asp.Net Core Middleware 的使用,DI的简单使用以及嵌入式资源的使用方法等.本篇就是结合基础知识来构建一个基础框架出来. 那么框架有什么 ...

  3. 微信小程序开发日记——高仿知乎日报(中)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...

  4. 微信小程序开发日记——高仿知乎日报(上)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...

  5. 嵌入式Linux驱动开发日记

    嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...

  6. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)

    全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...

  7. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)

    全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...

  8. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)

    全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...

  9. 【原创】shadowebdict开发日记:基于linux的简明英汉字典(一)

    全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...

随机推荐

  1. ubuntu18.04配置与美化

    一:初步系统配置 1 不可或缺的更新 如果在上一步中勾选了安装 Ubuntu 时下载更新,那么大部分的系统更新已经下载完毕. 不过为了确保,先移步到 设置→详细信息 ,点击右下角的 检查更新 ,如果存 ...

  2. hdfs学习(三)

    HDFS 的 API 操作 使用url方式访问数据(了解) @Test public void urlHdfs() throws IOException { //1.注册url URL.setURLS ...

  3. JVM的方法执行引擎-模板表

    Java的模板解析执行需要模板表与转发表的支持,而这2个表中的数据在HotSpot虚拟机启动时就会初始化.这一篇首先介绍模板表. 在启动虚拟机阶段会调用init_globals()方法初始化全局模块, ...

  4. Python开发的入门教程(一)-数据类型、变量

    介绍 Python第一门课程,是Python开发的入门教程,将介绍Python语言的特点和适用范围,Python基本的数据类型,条件判断和循环,函数,以及Python特有的切片和列表生成式. Pyth ...

  5. OpenStack 服务心跳机制和状态监控

    参考链接: OpenStack服务心跳机制和状态监控 https://blog.csdn.net/qqhappy8/article/details/79304221

  6. Java算法——递归思想

    描述递归(recursion):程序调用自身的编程技巧. 递归满足2个条件:1)有反复执行的过程(调用自身)2)有跳出反复执行过程的条件(递归出口) 递归与栈的关系下面演示的是求n的阶乘 int Fa ...

  7. Java多线程_Master-Worker设计模式

    Master-Worker模式是常用的并行模式之一,它的核心思想是:系统由Master进程和Worker进程两类进程协同工作,Master负责接收和分配任务,Wroker负责处理子任务.当各个Work ...

  8. npm修改默认配置

    1.nodejs在program files下面会造成一些项目中的问题,因此nodejs在program files下需要先卸载nodejs 2.安装nodejs到自定义的目录下面,例:D:\node ...

  9. Vue | 自定义指令和动态路由实现权限控制

    功能概述: 根据后端返回接口,实现路由动态显示 实现按钮(HTML元素)级别权限控制 涉及知识点: 路由守卫 Vuex使用 Vue自定义指令 导航守卫 前端工程采用Github开源项目Vue-elem ...

  10. RabbitMQ高级之消息限流与延时队列

    人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 本篇是消息队列RabbitMQ的第五弹. 上篇本来打算讲述RabbitMQ的一些高级用法: 如何保证消息的可靠性? 消息队列如何进行限流? ...