迪文科技论坛

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

【分享】2611-吴竣-打地鼠

[复制链接]

0

主题

0

回帖

31

积分

新手上路

Rank: 1

积分
31
发表于 昨天 12:46 | 显示全部楼层 |阅读模式
一、作品简介
本作品为基于迪文T5L系列智能串口屏进行的“智能打地鼠”游戏系统的二次开发。该系统充分利用了迪文屏内置的8051兼容MCU及其DGUS II开发环境所提供的HMI(人机界面)设计与控制功能。通过C语言编程实现游戏的核心逻辑,包括地鼠和炸弹的随机出现与消失、用户触摸交互响应、得分与生命值管理、游戏难度动态调整、高分记录存储以及游戏状态切换、亮度适应调节等。系统将迪文屏的强大图形显示能力与嵌入式控制功能相结合,为用户提供了一个直观、有趣且响应迅速的打地鼠游戏体验。

二、工作原理
(一)系统架构
整个系统可以划分为三个主要层次(见图2-1
1. 硬件层:迪文T5L智能串口屏。它包含了T5L专用ASIC芯片(内置8051 CPUGPU、存储器等)、LCD显示屏、触摸屏以及必要的电源和通信接口。这是整个系统的物理基础。
2. DGUS II HMI层:运行在T5L ASIC内部的DGUS II图形系统。负责渲染所有游戏界面元素,包括背景、地鼠洞、地鼠图片、炸弹图片、得分显示、生命值显示、高分显示、按钮等。这些界面元素通过迪文屏特有的“变量指针”(Variable Pointer, VP)机制与MCU层进行数据交互。
3. MCU逻辑层:行在T5L内置8051兼容MCU上的C语言代码。这是游戏的核心大脑,负责处理所有的游戏逻辑
(二)流程与原理(见图2-2
1游戏初始化流程 ( game_initialize函数)
2游戏主循环流程 ( game_start函数)
3地鼠/炸弹随机显示消失机制 ( mouse_random_showmouse_delay_ms函数)
mouse_random_show():根据定时器触发的标志,决定哪个洞出现地鼠/炸弹,或将已出现的地鼠/炸弹清除。
mouse_delay_ms() 管理游戏中的各种时间计数器,并通过设置标志位来通知 mouse_random_show() 进行显示或清除操作。此函数在Timer2中断服务程序 sys_timer2_isr 中以固定频率(例如1ms)被调用。
4奖励与惩罚机制 ( reward_and_punishment_mechanism函数)处理玩家的敲击事件,根据游戏规则更新得分和生命值,并检查游戏是否结束。
5游戏难度动态调整机制 ( game_difficulty函数)
目的:根据玩家得分,动态调整游戏难度参数,使游戏更具挑战性。
6游戏结束与高分记录机制 ( game_over函数)处理游戏结束时的逻辑,包括高分更新、页面切换和游戏状态重置。
三、设计思路
(一)设计过程
本项目选择迪文T5L系列智能串口屏,整个软件系统采用模块化设计,主要分为sys (系统底层驱动)、 mouse (游戏逻辑)器main (主程序入口)三个模块。(见图3-1
硬件驱动层(sys.c / sys.h
1、sys系统初始化与底层驱动模块 (sys.c / sys.h)
2、CPU初始化 ( sys_cpu_init )
3、定时器2初始化 ( sys_timer2_init )
4系统初始化入口 ( sys_init )
5延时函数 ( sys_delay_about_ms ,sys_delay_about_us ,sys_delay_ms )
6VP读写机制 ( sys_read_vp ,sys_write_vp )
7定时器2中断服务程序 ( sys_timer2_isr )
用逻辑层(mouse.c / mouse.h)
1游戏初始化 ( game_initialize )
2游戏开始控制 ( game_start )
3地鼠/炸弹随机显示 ( mouse_random_show )
4游戏计时管理 ( mouse_delay_ms )
5奖励惩罚机制 ( reward_and_punishment_mechanism )
6游戏难度控制 ( game_difficulty )
7页面切换 ( page_switch )
8游戏结束处理 ( game_over )
main主程序模块 (main.c)
  3-1 模块图解
DGUS II界面设计
图片:准备不同状态的地鼠(露头、被敲)、炸弹(露头、爆炸)、空地鼠洞、背景图、开始/结束界面的图片。完成界面元素和VP的映射
(一)创新点
1随机出现炸弹干扰,玩家需精准识别目标,增加游戏策略性,避免单调点击,提升游戏深度与趣味性。
25级自适应难度,根据玩家得分动态调整地鼠出现频率与停留时间,游戏节奏加快。
3how_set + gone_set + show_has_set 三标志协同,精确控制地鼠生命周期,避免状态冲突与显示异常。
4game_over()函数提供最高纪录保持数据,不断电时暂存保持的最高数据记录于寄存器中,断电即清除记录


本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-14 09:46 , Processed in 0.029368 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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