游戏玩法
非常简单的一个小游戏(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
整理卡片,计算卡片位置