迪文科技论坛

 找回密码
 立即注册
搜索
查看: 29|回复: 0

【分享】李俊豪 胡嵩鼎-羊了个羊项目

[复制链接]

1

主题

0

回帖

26

积分

新手上路

Rank: 1

积分
26
发表于 昨天 12:24 | 显示全部楼层 |阅读模式
一、作品简介
本作品是基于迪文T5L智能屏与C51内核开发的一款消除类交互游戏。项目复刻了热门游戏“羊了个羊”的核心玩法,利用C语言与迪文DGUS变量存储器,实现了卡牌随机生成、上下层物理遮挡判定、槽位聚合插入与递归三消逻辑。
二、工作原理
  • 界面交互与底层通信:迪文T5L屏通过DGUS变量存储器(游戏区域 0x1100、底部槽位 0x1000)实现逻辑层与表现层的实时双向映射。屏幕被触控时,C51内核捕获二维坐标 (XPos, YPos),通过坐标范围比对完成卡牌点击事件的识别。
  • 卡牌遮挡与状态渲染:游戏区卡牌分为上下两层,利用一维数组GameMap记录牌值,touchable标志位记录可点击状态。通过遍历上层卡牌并计算与底层卡牌的固定下标差值,动态修改touchable标志。界面刷新时,被遮挡的卡牌在原图标ID基础上偏移0x05以显示暗色图标,未被遮挡则显示亮色图标。
  • 槽位逻辑与递归消除:点击亮色卡牌后,卡牌数值被移入底部槽位数组SlotArea。逻辑程序通过数组移位将相同数值的卡牌聚合存放,随后遍历检查是否有连续3个相等元素。若满足三消条件,则移除该组卡牌并将后续元素前移,并触发递归检查,以自动处理消除后补位产生的连续消除情况。

三、设计思路
  • 根据游戏布局确定游戏主背景、卡牌亮色/暗色图标库以及底部槽位UI素材。在迪文DGUS配置软件中设置好触控区域、变量存储器地址及图标库引用。
  • 在Keil开发环境中编写模块化代码。设计game_logic模块管理卡牌初始化与打乱、基于定时器的界面刷新轮询(20ms)与数据处理(1000ms);独立编写遮挡运算函数与递归消除函数,保证动画与逻辑互不阻塞。
  • 将编译生成的文件与DGUS界面工程文件一并放入SD卡 DWIN_SET 目录,通过迪文屏的SD卡接口完成UI素材与8051内核代码的烧录运行。

四、演示视频


五、工程文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-15 01:22 , Processed in 0.161476 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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