北京邮电大学数字电路实验迷宫游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字电路综合实验报告

学院:信息与通信工程学院

班级:

班内序号:

姓名:

学号:

选作题目:简易迷宫游戏

一、课题的任务要求

1、基本要求:

1)用8×8点阵进行游戏显示。

2)迷宫游戏如下图所示,采用双色点阵显示,其中红色LED为迷宫墙壁,

绿色LED表示人物。通过BTN0~BTN3四个按键控制迷宫中的人物进

行上下左右移动,使人物从起始点出发,走到迷宫的出口,游戏结束。

3)普通计时模式:通过按键BTN7启动游戏,必须在30秒内找到出口,否

则游戏失败,用两个数码管进行倒计时显示。游戏胜利或者失败均要在

8×8点阵上有相应的画面出现。

4)迷宫中的人物在行走过程中,如果碰到墙壁,保持原地不动。

2、提高要求:

1)多种迷宫地图可以选择。

2)在计时的基础上增加计步的功能,每按一次控制按键步数加1,碰壁不计

算步数,计步结果用数码管显示。

3)为游戏增加提示音乐,在不同时间段采用不同频率的信号控制蜂鸣器发

声报警。

4)增加其他游戏模式。

5)自拟其它功能。

二、系统设计(包括设计思路、总体框图、分块设计)

1、整体设计思路:

通过分析迷宫游戏的特点,将迷宫游戏的实现分为三大核心功能模块,一是控制模块controller,是整个游戏的“枢纽”,负责处理玩家的输入信号,控制整个游戏阶段的跳转,游戏胜负的判断,以及输出相应显示模块的控制信号。二是计时兼数码管显示模块timer,负责倒计时以及倒计时的显示,游戏已走步数的显示,并产生蜂鸣器的控制信号。三是点阵显示模块lattice,通过接收控制模块的控制信号,控制不同游戏模式或状态下的点阵输出。其他次要模块主要为:分频模块,防抖模块,蜂鸣器驱动模块。

迷宫游戏的划分方框图如下:

图2.1 迷宫游戏的逻辑划分方框图

2、总体框图:

顶层连接图如下:

图2.2 系统顶层设计图

3、分块设计:

1)控制模块(controller)

通过分析控制模块的随着游戏进程的状态变化,可将控制器分为七个状态,分别是

①WaitMsg:待机状态,等待玩家BTN0(进入游戏)的输入,跳转至

ChoModes。

②ChoModes:选择游戏模式状态,等待玩家BTN0(模式1)或BTN1

(模式2)的输入,跳转至ChoLevel。

③ChoLevle:选择游戏难度状态,等待玩家BTN0(难度1)或BTN1

(难度2)的输入,跳转至ChoMaps。

④ChoMaps:选择游戏地图状态,等待玩家BTN0(地图1)、BTN1

(地图2)、BTN2(地图3)、BTN3(随机选择)其中之一的输入,

跳转至Moving。

⑤Moving:游戏状态,等待玩家BTN0(上)、BTN1(下)、BTN2(右)、

BTN3(左)其中之一的输入,通过判断游戏终止条件,如是否时间

到,步数用尽,或到达终点,来转移状态至Win,或Lose。

⑥Win:游戏胜利状态,玩家在规定时间与步数内到达终点,等待玩

家BTN7(复位键)的输入,跳转至WaitMsg。

⑦Lose:游戏失败状态,时间用尽或步数到达上线,等待玩家BTN7

(复位键)的输入,跳转至WaitMsg。

在任何状态下,只要收到BTN7(复位)的信号,状态都会转移到WaitMsg。

对应的逻辑流程图如下:

图2.3 迷宫游戏控制器逻辑流程图

图2.4 controller模块元件图

2)计时兼数码管显示模块(timer)

timer模块受到controller模块的控制,controller模块将传递游戏状态信号、计时控制信号、游戏难度信号以及已走步数信号给timer。timer 模块利用case选择语句对相应的控制信号做出相应。并利用视觉暂留效应,将时间与已走步数显示在数码管上。

图2.5 timer元件图

以下是控制数码管显示的代码,负责同时显示时间和已走步数:

IF cont_display =4 THEN –模为5的计数器,轮流显示5个数字

cont_display<=0;

ELSE

cont_display<= cont_display+1;

END IF;

CASE cont_display IS –通过选择计数器的状态,来显示相应的数字

WHEN 0 =>

con_nixietube<= "101111";nixietube<=nixietube1; --时间的个位

WHEN 1 =>

con_nixietube<= "011111";nixietube<=nixietube2;--时间的十位

WHEN 2 =>

con_nixietube<= "111110";nixietube<=nixietubex; --已走步数的个位

WHEN 3 =>

con_nixietube<= "111101";nixietube<=nixietubey;--已走步数的十位

WHEN 4 =>

con_nixietube<= "111011";nixietube<=nixietubez;--已走步数的百位

END CASE;

3)点阵显示模块(lattice)

Lattice模块同样也受到controller模块的控制,controller模块将传递游戏状态信号,游戏模式信号,游戏地图信号,根据不同的游戏阶段显示出不同的图案。其中迷雾模式的显示是一个小难点,首先通过判断y的值,给相邻两行赋上地图,其他置零,然后判断x的值给相邻两行中的部分元素置零,最后达到只显示坐标点周围一格内有地图的显示的效果。

图2.6 lattice模块元件图

相关文档
最新文档