查看: 3122|回复: 6

[求助] 【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块

[复制链接]

该用户从未签到

3

主题

35

帖子

0

新手上路

Rank: 1

积分
70
最后登录
1970-1-1
发表于 2012-10-6 17:59:13 | 显示全部楼层 |阅读模式
【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块
最近月下听蝉童心未昧,用K10搞起了贪吃蛇,怀念一下童年经典游戏之余,也学习一下制作游戏的简单过程,下面我来发发观看过程,有兴趣的可以玩玩哈```
先来介绍一下游戏框架
u8 key; //全局变量用于获取蛇的移动方向,通过TSI模块引出的4个电容按键
typedef enum //定义表示方向的枚举变量
{
left, right, up, down
}DIR;
//定义一个结构体表示坐标
typedef struct
{
int x;
int y;
}COOR;
//定义结构体,来存储食物的相关信息
struct FOOD
{
COOR crd; //食物出现的坐标
int flag; //食物的状态,1表示食物还没被吃,0表示食物被吃了
}food;
//定义结构体,来存储蛇的相关信息
struct SNAKE
{
COOR crd[1000]; //保存蛇的每个结数的坐标,最多有1000节
int node; //保存蛇当前节数
DIR dir; //当前蛇行进的方向
}snake;
 
游戏整体过程的介绍:
int main(void)
{
DelayInit();
TSI_Init(); //开启TSI按键
SPILCD_Init(); //初始化SPILCD
init(); //游戏初始化
while(1)
{
if (!food.flag)
{
setfoodcrd(); //食物坐标设置
}
SPILCD_nod(food.crd.x, food.crd.y);//显示食物
judgesef(); //判断是否吃到食物
snakemove();// 移动
DelayMs(300);
changeskdir(); //改变移动方向
gameover(); //失败检测

}
}
详细解释:
void init() //初始化
{
SPILCD_DrawRectangle(3,4,124,155);//屏幕坐标定格 相当于校准游戏边框
SPILCD_DrawRectangle(0,0,127,159); //屏幕坐标定格 相当于校准边框
snake.crd[0].x = 20 + 1; //两节蛇身
snake.crd[0].y = 20;
snake.crd[1].x = 20;
snake.crd[1].y = 20;
snake.node = 2;
snake.dir = right;
key=0;
food.flag = 0;
}
void setfoodcrd() //随机产生食物坐标
{
food.crd.x = rand() % 40;
food.crd.y = rand() % 50;
food.flag = 1;
}
//9点作为一节
void SPILCD_nod(u16 x1,u16 y1)
{
if(x1=0; i--) //从头到尾画蛇
{
SPILCD_nod(snake.crd.x, snake.crd.y); //9点作为一节
}
//清除上次蛇的末节 形成行动效果
SPILCD_clear_nod(snake.crd[snake.node].x, snake.crd[snake.node].y);
}
void changeskdir() //判断移动方向
{
switch(key)
{
case 1:
if (snake.dir != up)snake.dir = down;break;
case 2:
if (snake.dir != down)snake.dir = up;break;
case 3:
if (snake.dir != right)snake.dir = left;break;
case 4:
if (snake.dir != left)snake.dir = right;break;
}
}
void gameover() //结束游戏
{
char str[30];
u8 flag_gameover=0;
u16 i;
for(i=snake.node-1; i>0; i--)
{
//只要蛇头跟蛇身的任意一部分坐标重叠就挂了```
if(snake.crd.x == snake.crd[0].x&&snake.crd.y == snake.crd[0].y)
{
flag_gameover=1;
break;
}

}
//蛇头出界结束游戏
if(snake.crd[0].y49||snake.crd[0].x>39||snake.crd[0].xSTATUS & 0x0000FFFF);
if(TSI_ReadBit(TSIStatues,TSI_KEY1_CH)&&TSI_ReadBit(Status,TSI_KEY1_CH))
{
key = 1;
}
if(TSI_ReadBit(TSIStatues,TSI_KEY2_CH)&&TSI_ReadBit(Status,TSI_KEY2_CH))
{
key = 2;
}
if(TSI_ReadBit(TSIStatues,TSI_KEY3_CH)&&TSI_ReadBit(Status,TSI_KEY3_CH))
{
key = 3;
}
if(TSI_ReadBit(TSIStatues,TSI_KEY4_CH)&&TSI_ReadBit(Status,TSI_KEY4_CH))
{
key = 4;
}
TSIStatues=~Status; //记录上次状态
TSI0->GENCS |= TSI_GENCS_OUTRGF_MASK; //清超出阀值标志位
TSI0->GENCS |= TSI_GENCS_EOSF_MASK; //清扫描结束标志位
TSI0->STATUS = 0xFFFFFFFF;//清零标志
NVIC_EnableIRQ(TSI0_IRQn);//开中断
}
TSI的工作原理可参考以下链接:http://www.21ic.com/app/power/201208/138774.htm
完整工程代码请于月下听蝉的贴子下载:https://www.nxpic.org.cn/bbs/article_891_515121.html
月下听蝉贪吃蛇游戏效果:https://v.youku.com/v_show/id_XNDU4NDM2Nzg0.html
 
 
接下来我也想搞一下俄罗斯方块玩玩,敬请期待````
我知道答案 目前已有5人回答
回复

使用道具 举报

该用户从未签到

3

主题

37

帖子

0

新手上路

Rank: 1

积分
43
最后登录
1970-1-1
发表于 2012-10-6 18:41:08 | 显示全部楼层

回复:【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块

 哈哈,谢谢分析
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

35

帖子

0

新手上路

Rank: 1

积分
70
最后登录
1970-1-1
 楼主| 发表于 2012-10-11 19:54:52 | 显示全部楼层

RE:【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块

这个没人鸟
回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

327

帖子

1

高级会员

Rank: 4

积分
886
最后登录
2023-7-19
发表于 2012-10-12 17:36:04 | 显示全部楼层

RE:【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块

不错,我想把你这个贪食蛇 优化一下,加入V.2.21的代码,请问可以吗?
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

37

帖子

0

新手上路

Rank: 1

积分
43
最后登录
1970-1-1
发表于 2012-10-12 20:36:47 | 显示全部楼层

回复:【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块

回复第 4 楼 于2012-10-12 17:36:04发表:
不错,我想把你这个贪食蛇 优化一下,加入V.2.21的代码,请问可以吗?
十分乐意啊
 
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

37

帖子

0

新手上路

Rank: 1

积分
43
最后登录
1970-1-1
发表于 2012-10-12 20:38:52 | 显示全部楼层

回复:【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块

回复第 3 楼 于2012-10-11 19:54:52发表:
这个没人鸟
别哭,俄罗斯方块出来就会火爆了
 
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

35

帖子

0

新手上路

Rank: 1

积分
70
最后登录
1970-1-1
 楼主| 发表于 2012-10-13 13:02:00 | 显示全部楼层

回复:【开战Kinetis , .分享有礼】分析 月下听蝉之贪吃蛇游戏&后续俄罗斯方块

回复第 4 楼 于2012-10-12 17:36:04发表:
不错,我想把你这个贪食蛇 优化一下,加入V.2.21的代码,请问可以吗? 

我想 月下听蝉也愿意哈````优化之后再来分享一下嘿````我强烈支持  这段时间忙,等我搞好俄罗斯方块也让你优化一下,给点建议之类的 
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 07:16 , Processed in 0.099076 second(s), 26 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表