影子论坛

发新帖

【CAPP源码】卡牌游戏-击败年兽吧! 教程 源码 图文 作品

wuhuisai 2020-1-28 992

游戏玩法

非常简单的一个小游戏(demo),拖动下方卡片到年兽身上,击败年兽!

击败年兽截图


源码讲解

源码使用CAPP编译模式编译,使用自制游戏库,代码更简洁。
主要源码:game.c, game.h, home.c, card.h
(src内为库源码,包含了整个游戏框架)

game.h

game.h主要用于声明游戏内结构体以及函数
例如,GM结构体定义全局变量

//游戏变量
struct _game
{
 int32 timer;//全局定时器
 
 _FNT *fnt;//全局字体
 Room*rmHome;//主页
 Room*rmGame;//游戏页
 
 //年兽血条
 int hp;
}GM;

game.c

game.c内实现游戏框架搭建,若制作新游戏可直接复制简单修改即可使用。

例如,

//定时器回调
//运行并绘制当前房间
void gameRun(int32 data)
{
 cls(0xff,0xff,0xff);
 runCurRoom();
 drawCurRoom();
 ref(0,0,SW,SH);
}

card.h

card.h声明卡片结构体,绘制卡片时使用

//卡片结构
typedef struct
{
 char*name;//名字
 char*json;//文件
 
 int coin;//金币
 
 int leve;//等级
 int blod;//血量
 int attk;//攻击
}Card;

home.c

home.c为home页面源码,本游戏游戏逻辑控制代码都在这里。

1. 函数goHome

跳转到本页面时执行的代码:生成页面,定义函数


//跳转房间
int gotoHome()
{
 if(GM.rmHome==NULL)
 {
  GM.rmHome = 
  newRoom(640,640*SH/SW,100);
 }
 GM.rmHome->create = homeCreate;
 GM.rmHome->draw = homeDraw;
 GM.rmHome->event = homeEvent;
 gotoRoom(GM.rmHome);
 return 0;
}

2. 函数homeCreate

当房间创建完成时会自动调用一次,主要用于载入资源,创建游戏物体

3. 函数homeDraw

负责绘制房间内物体,特殊绘制代码

4. 函数homeEvent

房间事件,处理按键,触屏等事件
(卡片拖动效果部分代码在这里)

5. 函数drawCard

卡片的绘制函数,参数ob为物体obj

6. 函数drawCardMore

绘制选中卡片的详细信息

7. 函数resetCard

整理卡片,计算卡片位置

附件列表(2)

登陆可见附件内容.

最新回复 (1)
cfvgbhnj 2023-1-18
引用 1
支持!!
返回
发新帖
wuhuisai
主题数
29
帖子数
37
注册排名
2

Processed Time:0.20595192909241