迪文科技论坛

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

【分享】2026智能工程学院万传政、詹源鑫、张志远洞穴速击.

[复制链接]

1

主题

0

回帖

20

积分

新手上路

Rank: 1

积分
20
发表于 前天 14:52 | 显示全部楼层 |阅读模式
一、作品简介
本作品是一套单屏触摸互动游戏系统,以迪文 T5L 智能显示模块(800×480 彩色触摸屏)作为人机交互界面,并承载全部运算,不需要外加单片机、独立按键与扬声器;画面渲染、触摸响应、游戏规则、计时计分全部在屏内完成。玩家在主界面点击「开始游戏」进入选关页,从 3×3(9 洞)、4×4(16 洞)、5×5(25 洞)三种布局中任选一关;地鼠按波次从洞中冒出,玩家在它回洞前点中即得分,累计击打 30、50、100 只可依次过关,遗漏数超出上限则本局失败。作品包含动态难度曲线与四维强化(地鼠降速、地鼠数量、失败惩罚、锤子升级),锤子升到 10 级后解锁清屏技能「巨力锤」;适合展台演示、课堂互动等场景,结构简洁,上手即玩。
二、工作原理
系统由四部分组成:GUI 核、OS 核、变量存储器(VP)和触摸屏本体。GUI 核运行 DGUS II 图形系统,负责页面调度、控件渲染与触摸采集;OS 核是芯片内部的 8051 兼容 CPU,运行 C51 程序,负责游戏规则、计时与计分。两核之间没有函数调用,只通过 VP 交换数据。
  • 界面部分:用 DGUS GUI 工具绘制 9 个页面(主界面、选关、强化、工具、三个关卡页、通关页、失败页),并配背景库 32 与图标库 42;控件在工程里绑定 VP 地址。
  • 触摸部分:菜单按钮把键值写入 0x1000;每个洞口是一个独立触摸控件,按键值 0x0100+i 写入 0x1002,因此一次触摸就同时带回了“哪个洞”。
  • 逻辑部分:C51 以 1 ms 定时器为时基;中断负责回洞倒计时、遗漏判定与特效递减。主循环读出非零键值后立即回写 0 完成握手,再判断命中、计算金币、检查是否达标。
  • 显示部分:逻辑侧改写 VP 地址即刷新数值,图形控件只写图标序号。切页时先写 0x0085,再向 0x0084 写 5A 01,并分别设置 1000 毫秒(通关)和 700 毫秒(失败)的触摸保护期,以消除抬手产生的余波。
图解说明:一块屏就是全部硬件;GUI 核对内渲染画面、对外采集触摸,OS 核按 VP 契约读写数据,形成“触摸输入→规则判定→变量写回→画面刷新”的完整闭环,单次交互在数十毫秒内完成。
三、设计思路
设计过程
  • 前期学习迪文屏开发教程,熟悉 DGUS 组态、触控控件与变量显示功能,完成 9 个页面以及背景、图标资源的制作。
  • 规则设计:确定三关的洞数、目标击打数、出洞间隔、停留时间、遗漏上限与强化价格,整理成常量参数表,并规划击打与遗漏、金币、技能、洞位的画面分区。
  • 接口与编码:由界面工程导出接口头文件 gui_map.h,集中登记页面号、按键值、变量地址与每关洞数;程序分三层实现:硬件抽象(sys.c)、业务逻辑(game.c)、主循环调度(main.c)。
  • 系统联调:把固件与资源合成 DWIN_SET 资源包下载到屏;借助工具页注入金币、借助心跳计数定位问题,逐项排查变量覆盖、触摸余波、出洞判空等问题,完成二次开发优化。
创新点
  • 以 VP 为唯一数据边界的双核解耦:界面侧只认变量地址,逻辑侧只认同一套地址,因此换肤、换布局、加页面都不需要改动游戏规则代码。
  • 单字读改写机制:由于 32 位总线访问会连带相邻变量,所以写前先读,只改目标半字,再整体写回,避免“金币显示正常、强化等级莫名归零”的串扰。
  • 差分刷新与双时间域调度:影子变量比对后只写变化项,每帧写操作从 30 余次减少到 0–3 次;1 ms 中断负责时间语义,主循环负责人机事件,再配合 volatile 在裸机上获得确定时序。
  • 动态难度与经济闭环:出洞节奏随本局时间线性加快,配合四维强化与满级巨力锤,使“打得更准—赚得更多—打得更快”形成正反馈。








本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-4 10:51 , Processed in 0.034840 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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