|
一、作品简介 本作品为基于迪文T5L系列智能串口屏进行的“智能打地鼠”游戏系统的二次开发。该系统充分利用了迪文屏内置的8051兼容MCU及其DGUS II开发环境所提供的HMI(人机界面)设计与控制功能。通过C语言编程实现游戏的核心逻辑,包括地鼠和炸弹的随机出现与消失、用户触摸交互响应、得分与生命值管理、游戏难度动态调整、高分记录存储以及游戏状态切换、亮度适应调节等。系统将迪文屏的强大图形显示能力与嵌入式控制功能相结合,为用户提供了一个直观、有趣且响应迅速的打地鼠游戏体验。
二、工作原理 (一)系统架构 整个系统可以划分为三个主要层次(见图2-1) 1. 硬件层:迪文T5L智能串口屏。它包含了T5L专用ASIC芯片(内置8051 CPU、GPU、存储器等)、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_show和mouse_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 ) 6、VP读写机制 ( 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、随机出现炸弹干扰,玩家需精准识别目标,增加游戏策略性,避免单调点击,提升游戏深度与趣味性。 2、5级自适应难度,根据玩家得分动态调整地鼠出现频率与停留时间,游戏节奏加快。 3、how_set + gone_set + show_has_set 三标志协同,精确控制地鼠生命周期,避免状态冲突与显示异常。 4、game_over()函数提供最高纪录保持数据,不断电时暂存保持的最高数据记录于寄存器中,断电即清除记录
|