北邮打地鼠的游戏设计与实现
打地鼠游戏课程设计

打地鼠游戏 课程设计一、课程目标知识目标:1. 学生能理解打地鼠游戏背后的数学原理,掌握基本的分数和概率计算方法。
2. 学生能够运用所学的数学知识,分析和解释打地鼠游戏中出现的数量关系和概率问题。
技能目标:1. 学生通过设计并实施打地鼠游戏,培养动手操作能力和问题解决能力。
2. 学生能够运用合作学习的方式,与他人共同探讨和解决游戏中遇到的问题,提高团队协作能力。
情感态度价值观目标:1. 学生在游戏中体验数学的乐趣,增强对数学学科的兴趣和热情。
2. 学生通过参与游戏,培养公平竞争、遵守规则的良好品质。
3. 学生在合作学习中,学会尊重他人、倾听他人意见,形成积极向上的学习态度。
课程性质:本课程为数学学科实践活动,结合游戏教学,旨在让学生在轻松愉快的氛围中学习数学知识。
学生特点:五年级学生具有一定的数学基础和动手操作能力,对游戏充满兴趣,喜欢合作学习。
教学要求:教师应关注学生的个体差异,引导他们积极参与游戏,将数学知识融入游戏中,让学生在实践中掌握知识,提高能力。
同时,注重培养学生的合作精神和情感态度,使他们在活动中得到全面发展。
通过分解课程目标为具体的学习成果,为后续的教学设计和评估提供依据。
二、教学内容本课程以五年级数学教材中分数、概率知识为基础,结合打地鼠游戏开展教学。
教学内容及进度安排如下:1. 分数的认识与应用(第1课时)- 分数的含义与表示方法- 分数的大小比较- 分数的简单运算2. 概率初步(第2课时)- 随机事件与概率的定义- 概率的计算方法- 概率在实际问题中的应用3. 打地鼠游戏设计与实施(第3-4课时)- 游戏规则的制定与修改- 游戏中分数和概率的应用- 设计并制作打地鼠游戏道具4. 游戏实践与总结(第5课时)- 学生分组进行打地鼠游戏- 分析游戏中分数和概率问题- 总结游戏经验,提升数学思维能力教学内容关联教材章节:1. 《分数的认识与运算》2. 《概率初步》三、教学方法本课程采用多样化的教学方法,以激发学生的学习兴趣和主动性,提高教学效果。
图形化编程下游戏设计实现——以“打地鼠”游戏为实例

图形化编程下游戏设计实现——以“打地鼠”游戏为实例图形化编程下游戏设计实现——以“打地鼠”游戏为实例引言随着计算机技术的发展,图形化编程逐渐成为了软件开发的主流趋势。
图形化编程使得开发者无需深入了解编程语言的底层原理,便能轻松开发出各种应用程序,其中包括游戏。
游戏设计是图形化编程中最受欢迎的应用之一,因为它融合了创造力、逻辑思维和艺术性。
本文将以一个简单的“打地鼠”游戏为例,介绍图形化编程下的游戏设计与实现,并分享一些游戏开发的经验。
一、游戏设计概述“打地鼠”是一款非常经典和受欢迎的游戏,玩家需要在一定时间内尽可能多地击中从洞中冒出的地鼠。
游戏的难度通常通过地鼠的速度和冒出的时间间隔来调节,以增加游戏的挑战性。
在进行游戏设计之前,我们需要明确游戏的目标、规则和玩家的角色。
在“打地鼠”游戏中,玩家的目标是在限定的时间内击中尽可能多的地鼠,并获得高分。
游戏规则为玩家在游戏结束前必须击中尽可能多的地鼠,否则游戏结束。
玩家的角色则是一个持有锤子或其他工具的人,通过点击鼠标或触摸屏幕来击打地鼠。
二、游戏场景设计游戏场景设计是游戏开发的核心部分。
在“打地鼠”游戏中,我们需要创建一个由多个洞组成的地鼠出现区域,并在每个洞中随机放置一个地鼠。
地鼠在一定时间后会从洞中冒出,并在一定时间后消失。
玩家需要在地鼠冒出的瞬间快速点击它,以得分。
为了增加游戏的可玩性和趣味性,我们可以在游戏场景中添加一些道具和特殊效果。
例如,可以添加不同类型的地鼠,有些地鼠走得更快,有些地鼠会在被击中后爆炸,有些地鼠会削减玩家的时间。
此外,可以在场景中添加一些障碍物,需要玩家在击打地鼠时避开。
这些元素的添加将使游戏更加有趣且具有挑战性。
三、图形化编程工具选择与使用为了实现“打地鼠”游戏,我们可以选择使用一些常见的图形化编程工具,如Scratch、Unity、Unreal Engine等。
在本文中,我们将以Scratch作为图形化编程工具进行游戏设计与实现。
打地鼠游戏策划书3篇

打地鼠游戏策划书3篇篇一《打地鼠游戏策划书》一、游戏概述1. 游戏名称:打地鼠2. 游戏类型:休闲小游戏3. 游戏目标:通过快速敲击出现的地鼠,获得分数并挑战更高的难度。
二、游戏玩法1. 游戏界面上会随机出现地鼠从洞中冒出。
2. 玩家需要使用鼠标或触摸操作,快速冒出的地鼠。
3. 击中地鼠可获得分数,不同类型的地鼠分数不同。
4. 随着时间推移,地鼠出现的速度和频率会逐渐增加,难度也相应提升。
三、游戏界面1. 设计一个可爱的游戏场景,包含多个地鼠洞。
2. 有明确的分数显示区域和游戏时间显示。
3. 不同的地鼠形象设计,易于区分。
四、游戏音效1. 地鼠时的打击音效。
2. 欢快的背景音乐,营造轻松愉快的氛围。
五、游戏难度设置1. 简单模式:地鼠出现速度较慢,数量较少。
2. 普通模式:速度和数量适中。
3. 困难模式:快速出现大量地鼠,挑战玩家反应速度。
六、游戏道具1. 加分道具:随机出现,后可获得额外分数。
2. 减速道具:使地鼠出现速度暂时减慢。
七、游戏关卡设置多个关卡,每个关卡有不同的目标分数和特殊规则。
八、计分系统1. 准确计算玩家击中地鼠的分数。
2. 根据游戏难度和关卡完成情况给予奖励分数。
九、排行榜设立全球排行榜,展示玩家的高分排名。
十、社交分享玩家可以将自己的游戏成绩分享到社交媒体上。
十一、游戏开发与上线计划1. 确定开发团队和开发周期。
2. 进行游戏测试和优化。
3. 选择合适的平台上线游戏。
十二、盈利模式1. 内置广告。
2. 提供付费道具或关卡解锁。
篇二《打地鼠游戏策划书》一、游戏概述打地鼠是一款经典的休闲游戏,玩家通过屏幕上冒出的地鼠来获得分数。
游戏具有简单易玩、趣味性强等特点,适合各个年龄段的玩家。
二、游戏目标玩家的目标是在规定时间内尽可能多地击中地鼠,获得更高的分数。
三、游戏规则1. 游戏场景中会随机出现地鼠从洞中冒出。
2. 玩家需要冒出的地鼠来得分。
3. 若玩家成功地鼠,则获得相应分数;若未到,则地鼠会退回洞中。
打地鼠课程设计报告

嵌入式打地鼠课程设计一、系统方案设计本设计应用STM32开发板进行设计,即一个带触摸功能的液晶屏,主要负责显示打地鼠游戏运行界面及分数变化等,STM32主控版采用的型号为STM32F103,使用高性能的ARM Cortex-M3内核,工作频率为72MHz,内置高速存储器(高达128k字节的闪存和20k字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和1个PWM定时器,还包含标准和先进的通信接口:多达2个I2C接口和SPI接口、3个USART接口、一个USB接口和一个CAN接口。
本次设计的显示界面用了一块串口液晶屏,这种串口屏具有界面设计简单,交互性好,使用方便的特点,且它使用USART进行与主控版进行通信,便于控制部分与显示部分独立进行调试,也便于通信协议的制定。
可实现如下功能:1.地鼠在规定的时间内随机地出现在不同的洞口。
2.当用户击中地鼠分数加一。
3.当用户未击中地鼠生命值减一。
4.触摸屏显示用户所得分数、关数、生命值数。
二、硬件设计①触摸屏模块1. 一般转换模式:单独的转换模式一般使用来作为通用的ADC转换使用,这种模式可以通过初始化设置寄存器ADCCON,并且读写寄存器ADCDA T0来实现。
2. 分别X/Y位置转换模式:触摸屏控制器可以通过X/Y两个转换模式中的一个来完成,X位置模式写X位置转换数据到寄存ADCDAT0,这时触摸屏接口产生中断源到中断控制器。
Y位置模式写Y位置转换数据到寄存器ADCDAT1,,这时触摸屏接口产生中断源到中断控制器。
3. 自动X/Y位置转换模式:自动X/Y位置转换模式的工作方式如下:当触摸屏有触点触发时,触摸屏控制器依次转换X位置和Y位置。
在触摸屏控制器写X位置测试数据到寄存器ADCDAT0和写Y位置测试数据到寄存器ADCDA T1后,触摸屏接口产生中断源到中断控制器。
4.等待中断模式:当有触摸笔按下的时候,触摸屏控制器会产生中断信号(INT_TC)。
打地鼠课程设计

打地鼠课程设计一、课程目标知识目标:1. 学生能理解“打地鼠”游戏中的数学概念,掌握基本的加减法运算。
2. 学生能运用已学过的数学知识,解决游戏中的问题,如分数、概率等。
3. 学生了解游戏背后的数学原理,如随机性和概率分布。
技能目标:1. 学生通过操作“打地鼠”游戏,提高手眼协调能力和反应速度。
2. 学生在游戏中锻炼问题解决能力和策略制定能力。
3. 学生学会合作与交流,通过团队协作完成游戏任务。
情感态度价值观目标:1. 学生培养对数学的兴趣和好奇心,认识到数学在生活中的实际应用。
2. 学生在游戏中体验成功与失败,学会面对挑战,增强自信心。
3. 学生在团队合作中,培养尊重他人、乐于助人的品质。
课程性质分析:本课程以数学学科为背景,结合趣味性的“打地鼠”游戏,旨在激发学生对数学的兴趣,提高数学实际应用能力。
学生特点分析:二年级学生好奇心强,活泼好动,喜欢游戏和互动,但注意力集中时间较短。
教学要求:1. 课程内容要贴近学生生活,易于理解和接受。
2. 教学方法要注重趣味性和互动性,充分调动学生的积极性。
3. 教师要关注学生的个体差异,给予每个学生适当的指导和鼓励。
二、教学内容本课程以《数学课程标准》为指导,结合二年级数学教材中“加减法运算”和“简单的概率”等内容,设计以下教学大纲:1. 回顾和巩固加减法运算:- 复习100以内的加减法运算。
- 引导学生理解加减法的实际意义。
2. 引入“打地鼠”游戏,探索数学概念:- 游戏规则介绍,让学生了解游戏中的数学元素。
- 通过游戏,让学生感受随机性和概率。
3. 教学内容的详细安排:- 第一课时:复习加减法运算,引入游戏。
- 第二课时:学生在游戏中运用加减法,讨论策略。
- 第三课时:探索游戏中的概率问题,如打中地鼠的概率。
4. 教材章节关联:- 二年级上册《数学》第二章“100以内的加减法”。
- 二年级下册《数学》第八章“简单的概率”。
5. 教学进度:- 第一周:完成第一、第二课时教学。
北邮数电实验打地鼠游戏的设计与实现实验报告

数字电路与逻辑设计实验(下)实验报告课题名称:打地鼠游戏的设计与实现学院:电子工程学院班级:2013211202姓名:学号:目录一.设计课题及任务要求 (4)1.课题名称:打地鼠游戏的设计及实现 (4)二.系统设计 (4)1.设计思路:采用自顶向下的设计原则。
(4)2.整体分析: (4)3.整体设计框图: (4)三.分模块设计 (5)1.分频模块设计 (5)1)需求分析: (5)2)模块代码: (5)3)模块仿真波形 (5)2.倒计时模块: (6)1)功能分析: (6)2)模块代码: (6)3)模块仿真 (7)3.计分模块 (9)1)功能分析:。
(9)2)模块代码: (9)3)模块仿真 (10)4.数码管控制模块 (12)1)功能分析: (12)2)模块代码: (12)5.控制模块 (13)1)功能分析: (13)2)模块代码 (13)3)模块仿真 (13)6.随机地鼠生成模块 (14)1)功能分析: (14)2)模块代码 (14)3)模块仿真: (15)7.点阵显示模块 (16)1)功能分析: (16)2)点阵显示原理:原理图: (16)3)模块代码: (17)4)模块仿真 (18)8.键盘模块 (20)1)功能分析: (20)2)原理分析 (20)3)模块代码: (20)4)模块仿真 (22)9.总体模块 (24)1)元件实例连接分析 (24)2)RTL VIEWS (25)3)部分代码 (26)四.功能说明及资源利用情况 (30)1.功能说明: (30)2.资源利用情况 (30)3.总工程 (30)五.故障及问题分析 (31)1.问题分析: (31)2.解决办法 (31)六.总结和结论 (32)一.设计课题及任务要求1.课题名称:打地鼠游戏的设计及实现2.任务要求:1)设计“打地鼠”游戏,采用8X8双色点阵显示游戏界面,其中游戏边界采用绿色LED显示,随机出现的地鼠采用红色LED显示,游戏有十六个洞穴。
打地鼠游戏策划书3篇

打地鼠游戏策划书3篇篇一《打地鼠游戏策划书》一、游戏名称打地鼠二、游戏类型休闲益智类三、游戏目标玩家通过屏幕上出现的地鼠,尽可能多地得分。
四、游戏规则1. 游戏开始后,地鼠会从地洞中随机出现。
2. 玩家需要在规定时间内地鼠,正确得一分,错误扣一分。
3. 随着游戏的进行,地鼠出现的速度会越来越快,难度也会逐渐增加。
4. 游戏结束后,根据玩家的得分进行排名。
五、游戏界面1. 游戏背景:选择一个适合的场景,如草地、田野等。
2. 地鼠:设计可爱的地鼠形象,地鼠会从不同的地洞中出现。
3. 地洞:在地鼠出现的位置设置地洞。
4. 得分显示:在屏幕上方显示玩家的得分。
5. 时间显示:在屏幕上方显示游戏剩余时间。
6. 开始/结束按钮:开始按钮开始游戏,结束按钮结束游戏。
六、游戏操作1. 玩家通过屏幕来击打地鼠。
2. 玩家可以使用手指或鼠标进行操作。
七、游戏难度1. 游戏设置多个难度级别,玩家可以根据自己的能力选择适合的难度。
2. 难度级别包括地鼠出现的速度、数量、时间等因素。
八、游戏音效1. 游戏中添加轻松愉快的背景音乐,增加游戏的趣味性。
2. 地鼠时添加音效,增强游戏的打击感。
九、游戏道具1. 游戏中设置一些道具,如炸弹、冻结等,玩家可以使用道具来增加得分或减缓地鼠的出现速度。
2. 道具可以通过游戏中的奖励或购买获得。
十、游戏社交1. 游戏设置排行榜,玩家可以查看自己的得分排名。
2. 玩家可以分享自己的游戏成绩到社交平台,与好友进行比较。
十一、游戏盈利模式1. 游戏内广告:在游戏中展示广告,获得广告收益。
2. 付费道具:玩家可以通过付费购买游戏道具,增加游戏体验。
3. 付费关卡:设置一些付费关卡,玩家需要支付一定的费用才能解锁。
十二、游戏开发计划1. 第一阶段:完成游戏的策划和设计。
2. 第二阶段:进行游戏的开发和测试。
3. 第三阶段:发布游戏并进行推广。
十三、游戏评估1. 收集玩家的反馈意见,对游戏进行改进和优化。
打地鼠-数电创新实验报告

信息与通信工程学院数字电路实验报告题目:打地鼠游戏的设计与实现姓名:班级:学号:班内序号:联系电话:指导教师:实验日期:目录一、设计任务与要求 (3)二、总体框图 (3)2.1 总体框图 (3)2.2 设计思路及各模块功能 (3)2.2.1 设计思路 (3)2.2.2 各模块功能 (4)三、模块功能实现 (6)3.1 分频器模块 (6)3.2 译码器模块 (7)3.3 数据选择模块 (8)3.4 倒计时模块 (10)3.5 计分模块 (13)3.6 开机画面模块 (15)3.7 难度选择模块 (16)3.8 地鼠模块 (18)3.9 锤子模块 (21)3.10 最高分保存模块 (23)3.11 结束画面模块 (24)四、总体设计电路图 (27)五、游戏说明书 (29)5.1 前言 (29)5.2 配置要求 (29)5.3 运行说明 (29)5.4 评分规则 (30)六、心得体会 (30)打地鼠游戏机一、设计任务与要求设计一个挑战反应速度的“打地鼠”游戏机。
要求:在游戏开始时选择难度级别,分别对应地鼠出现的三种不同频率(即三个二极管的亮的频率);统计30 秒内打到地鼠的次数,显示所获得的成绩;并有保存并显示最高分的功能;按复位键可重新开始游戏。
二、总体框图2.1、打地鼠游戏机的总体框图如下图所示:图 1 电路设计总体框图分为以下几个主要模块:●辅助模块(分为三个子模块:分频器模块、译码器模块和数据选择模块)●进程显示模块(分为两个子模块:倒数计时模块和计分模块)●开机画面模块(分为两个子模块:开机动画模块和难度选择模块)●游戏核心模块(分为两个子模块:地鼠模块和锤子模块)●结束画面模块(分为三个子模块:结束动画模块和最高分保存显示模块)2.2、设计思路及各模块功能:2.2.1 设计思路:用 3 个发光二极管代表地鼠洞,灯亮时表示地鼠出没,由程序每次随机选择一个灯亮。
三个发光二极管分别对应于三个弹跳开关,在灯亮期间按下亮的灯对应的开关(即打到地鼠),得一分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数电实验报告题目:打地鼠的游戏设计与实现姓名:学号:班级:学院: 电子工程学院2015年 11 月 8日一、 任务要求基本要求1、设计一个挑战反应速度的“打地鼠”游戏,采用用 8×8双色点阵显示游戏界面,其中游戏边界采用绿色 LED 显示,随机出现的地鼠采用红色 LED 显示,游戏有 16个洞穴,如图 1所示。
2、游戏洞穴每次随机出现一个地鼠,每个地鼠的最长保持时间为 2 秒,2 秒后随机出现下一个地鼠。
以 4×4键盘的按键代表锤子,16个洞穴与 16个按键一一对应,一旦锤子在 2秒内击中地鼠,地鼠消失,数码管计分器分数加 1分;若锤子一直没有击中地鼠,2秒后该地鼠消失。
用两个数码管显示游戏成绩,当游戏成绩达到 10分时游戏结束,点阵显示字符“V”。
3、用两个数码管对整个游戏进行倒计时,当游戏时间超过 59秒而成绩未达到 10分时,游戏失败,点阵显示字符“X”。
4、按复位键重新开始游戏,并开始倒计时。
提高要求:1、增加游戏难关,在边界内每次随机出现两个地鼠,两个地鼠的最长保持时间均为2秒,2秒后随机出现下两个地鼠,锤子击中一个地鼠加1分,当游戏成绩达到20分而且游戏时间未超过59秒时,游戏结束,显示字符“V”,否则显示字符“X”。
2、自拟其他功能。
二、系统设计设计思路:1、将该程序进行分模块设计。
可以将程序分为:分频模块、随机数产生模块、比较模块、键盘电路、显示模块、计时模块、游戏结束模块。
2、分模块进行相应模块的编写。
3、对编好的模块进行测试。
4、编写主程序并进行调试。
总体框图:分块设计:1、分频模块将50MHz的信号源分别分频为各难度所需频率的时钟信号。
2、随机数产生模块本实验采用伪随机数产生方法,即在ROM中存入随机表中的数据,游戏开始后采用一个计数器不断从其中读取数据。
3、比较模块判断选手得分或失分主要是由一个比较器完成的,将系统传给LED灯的信号与选手输入的信号作比较,相同则加分,否则扣分,这两个信号分别传给计分模块,从而完成系统判定得分的工作。
4、键盘电路主要通过产生行扫描,来识别用户的按键,电路中已经对按键进行了消抖。
其提供给控制器按键的编码。
5、显示模块显示模块分为两部分,一为60s的倒计时,另一个为从0到10的记分模块,游戏开始时计时模块和比较模块分别将信号传递给显示模块,用来将BCD码转化为可以在七段数码管中显示的。
6、计时模块在此模块中集合开始键,复位键。
当复位键等于0,开始键等于1时,游戏开始。
倒计时模块预置值为60,开始信号给出后,开始60s倒计时。
7、记分模块计分模块接受来自比较模块的信号控制分数的加减,同时将当前的分数BCD码以电信号传递给显示模块显示分数,每一次加分时,判断当前分数是否超过10分,同时当前时间是否小于0。
8、游戏结束模块接收来自计分模块的信号,判断是否结束,保存当前分数,时间通过显示模块显示。
三、仿真波形及波形分析:一、随机数仿真波形在等级为1的情况下产生0---16随机数,产生时间不定,根据当前数字,对应与点阵中的16个LED灯,同时点亮该点。
二、键盘输入(“锤子”仿真波形)通过消抖,提高了键盘反应,当点阵数列和键盘相同时,判断为1,表示为加分信号三、计时器出始时刻设为60S, 通过频率为1Hz的时钟,每一次在时钟上升沿到来时,时间减一。
四、最高分保存模块最高分保存模块和计分模块倒计时模块相连,当倒计时显示为0,分数小于10时保存,或者当分数等于10,倒计时小于60保存,其余情况下均输出0,该模块不工作。
五、比较计分模块波形当计分信号显示为1时,分数u1加一,时钟频率为0.5Hz,在每一个时钟周期内为1,加一否则保持不变。
六、等级判断模块四、源程序:一、分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpinqi ISPORT(clk_f,clear_f: IN STD_LOGIC;clk_f_out10k, clk_f_out100, clk_f_out1, clk_f_out1d2: OUT STD_LOGIC);END fenpinqi;ARCHITECTURE a OF fenpinqi ISSIGNAL tmp1: INTEGER RANGE 0 TO 24999; --50000分频SIGNAL tmp2: INTEGER RANGE 0 TO 4;SIGNAL tmp3: INTEGER RANGE 0 TO 49; --100分频SIGNAL tmp4: INTEGER RANGE 0 TO 99; --200分频SIGNAL clktmp1: STD_LOGIC;SIGNAL clktmp2: STD_LOGIC;SIGNAL clktmp3: STD_LOGIC;SIGNAL clktmp4: STD_LOGIC;BEGINP1: PROCESS(clear_f, clk_f)BEGINIF clear_f = '1' THENtmp1<=0;ELSIF clk_f'event AND clk_f='1' THENIF tmp1=24999 THENtmp1<=0;clktmp1<=not clktmp1; -- 50000fenpinELSEtmp1<=tmp1+1;END IF;END IF;END PROCESS P1;P2: PROCESS(clear_f, clktmp1)BEGINIF clear_f = '1' THENtmp2<=0;ELSIF clktmp1'event AND clktmp1='1' THENIF tmp2=4 THENtmp2<=0;clktmp2<=not clktmp2; -- 10fenpinELSEtmp2<=tmp2+1;END IF;END IF;END PROCESS P2;P3: PROCESS(clear_f, clktmp2)BEGINIF clear_f = '1' THENtmp3<=0;ELSIF clktmp2'event AND clktmp2='1' THENIF tmp3=49 THENtmp3<=0;clktmp3<=not clktmp3; -- 100fenpin ELSEtmp3<=tmp3+1;END IF;END IF;END PROCESS P3;P4: PROCESS(clear_f, clktmp2)BEGINIF clear_f = '1' THENtmp4<=0;ELSIF clktmp2'event AND clktmp2='1' THENIF tmp4=99 THENtmp4<=0;clktmp4<=not clktmp4; -- 200fenpin ELSEtmp4<=tmp4+1;END IF;END IF;END PROCESS P4;clk_f_out10k<=clktmp1;clk_f_out100<=clktmp2;clk_f_out1<=clktmp3;clk_f_out1d2<=clktmp4;END a;二、译码器libraryieee;use ieee.std_logic_1164.all;entityyimaqi isport(clk_y, clear_y: in std_logic;time1, time2, score1, score2: IN std_logic_vector(3 downto 0);yimaqi_out: out std_logic_vector(6 downto 0);cat: out std_logic_vector(5 downto 0));endyimaqi;architecture yimaqi_1 of yimaqi issignal time1_tmp, time2_tmp, score1_tmp, score2_tmp: std_logic_vector(6 downto 0);signalcat_tmp: std_logic_vector(5 downto 0);function convert (input: std_logic_vector) return std_logic_vector isbegincase input ISwhen "0000" => return "1111110"; --根据BCD码,生成不同的显when "0001" => return "0110000"; 序列,点亮不同位置,显示when "0010" => return "1101101"; 数字1--10when "0011" => return "1111001";when "0100" => return "0110011";when "0101" => return "1011011";when "0110" => return "1011111";when "0111" => return "1110000";when "1000" => return "1111111";when "1001" => return "1111011";when others => return "0000000";end case;end convert;beginp1: process(clk_y, clear_y)beginifclear_y= '1' then cat_tmp<= "111111";elsifclk_y'event and clk_y= '1' thencasecat_tmp iswhen "111110" =>cat_tmp<= "011111";yimaqi_out<= time2_tmp;when "011111" =>cat_tmp<= "101111";yimaqi_out<= time1_tmp;when "101111" =>cat_tmp<= "111101";yimaqi_out<= score2_tmp;when "111101" =>cat_tmp<= "111110";yimaqi_out<= score1_tmp;when others =>cat_tmp<= "111110";end case;end if;end process p1;p2: process(time1, time2, score1, score2, time1_tmp, time2_tmp, score1_tmp, score2_tmp)begintime1_tmp<= convert(time1);time2_tmp<= convert(time2);score1_tmp<= convert(score1);score2_tmp<= convert(score2);end process p2;cat<= cat_tmp;end yimaqi_1;三、计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entityjishuqi isPORT(add, clk_j60, clear_j: IN STD_LOGIC;q1_j60, q2_j60, q1_j10, q2_j10: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);time_up, reach10: OUT STD_LOGIC);endjishuqi;architecture a of jishuqi issignal q1_j60tmp, q2_j60tmp, q1_j10tmp,q2_j10tmp: std_logic_vector(3 DOWNTO 0);signalendsignal: std_logic_vector(1 downto 0);beginp1: process(clk_j60, clear_j)begin --倒计时部分,预置为60,根据时钟信号每一秒减一ifclear_j= '1' thenq1_j60tmp<= "0000";q2_j60tmp<= "0000";time_up<= '0';endsignal(1)<= '0';elsifendsignal(0)= '0' thenif clk_j60'event and clk_j60 = '1' thenif q1_j60tmp= "1001" thenif q2_j60tmp= "0101" then time_up<= '1';endsignal(1)<= '1';else q1_j60tmp<= "0000";q2_j60tmp<= q2_j60tmp+1;time_up<= '0';endsignal(1)<= '0';end if;else q1_j60tmp<= q1_j60tmp+1;time_up<= '0';endsignal(1)<= '0';end if;end if;end if;end process p1;q1_j60<= q1_j60tmp;q2_j60<= q2_j60tmp;p2: process(add)begin --分数表示部分,接收加分信号,并输出给判断模块ifclear_j= '1' thenq1_j10tmp<= "0000";q2_j10tmp<= "0000";reach10<= '0';endsignal(0)<= '0';elsifendsignal(1)= '0' thenifadd'event and add= '1' thenif q1_j10tmp= "1001" thenif q2_j10tmp= "0000" then q1_j10tmp<= "0000";q2_j10tmp<= q2_j10tmp+1;reach10<= '1';endsignal(0)<= '1';else q1_j10tmp<= "0000";q2_j10tmp<= q2_j10tmp+1;reach10<= '0';endsignal(0)<= '0';end if;else q1_j10tmp<= q1_j10tmp+1;reach10<= '0';endsignal(0)<= '0';end if;end if;end if;end process p2;q1_j10<= q1_j10tmp;q2_j10<= q2_j10tmp;end a;四、点阵模块libraryieee;use ieee.std_logic_1164.all;entitydianzhen isport(x, y: in std_logic_vector(1 downto 0); --根据产生的伪随机数,确定行clear_d, clk_d, hit, win, lose: in std_logic; 列坐标,点亮相应点阵序列cat1_out, cat2_out, cat3_out: out std_logic_vector(5 downto 0));enddianzhen;architecture a of dianzhen issignal cat1, cat2, cat3, x_tmp: std_logic_vector(5 downto 0);beginp1: process(y, clear_d, clk_d, hit)beginifclear_d = '1' then cat3<="111111";elsifclk_d'event and clk_d='1' thenif win= '1' then --当获胜信号为1时,控制点阵显示Vcase cat3 iswhen "011111" => cat3<="101111";cat1<="100001";cat2<= "010010";when "101111" => cat3<="110111";cat1<="100001";cat2<= "010010";when "110111" => cat3<="111011";cat1<="100001";cat2<= "001100";when "111011" => cat3<="111101";cat1<="100001";cat2<= "001100";when "111101" => cat3<="111110";cat1<="111111";cat2<= "000000";when "111110" => cat3<="011111";cat1<="111111";cat2<= "000000";when others => cat3<="011111";end case; --失败信号为1时,显示Xelsif lose= '1' thencase cat3 iswhen "011111" => cat3<="101111";cat1<="100001";cat2<= "010010";when "101111" => cat3<="110111";cat1<="100001";cat2<= "001100";when "110111" => cat3<="111011";cat1<="100001";cat2<= "001100";when "111011" => cat3<="111101";cat1<="100001";cat2<= "010010";when "111101" => cat3<="111110";cat1<="111111";cat2<= "000000";when "111110" => cat3<="011111";cat1<="111111";cat2<= "000000";when others => cat3<="011111";end case;else --游戏进行中win、lose均不为1,游戏继续case cat3 iswhen "011111" => cat3<="101111";cat1<="100001";if y="00" then cat2<=x_tmp;else cat2<="000000"; end if;when "101111" => cat3<="110111";cat1<="100001";if y="01" then cat2<=x_tmp;else cat2<="000000"; end if;when "110111" => cat3<="111011";cat1<="100001";if y="10" then cat2<=x_tmp;else cat2<="000000"; end if;when "111011" => cat3<="111101";cat1<="100001";if y="11" then cat2<=x_tmp;else cat2<="000000"; end if;when "111101" => cat3<="111110";cat1<="111111";cat2<="000000";when "111110" => cat3<="011111";cat1<="111111";cat2<="000000";when others => cat3<="011111";end case;end if;end if;end process p1;p2: process(x, x_tmp, hit)beginif hit='1' then x_tmp<="000000";elsif hit= '0' thencase x iswhen "00" =>x_tmp<="000010";when "1" =>x_tmp<="000100";when "10" =>x_tmp<="001000";when "11" =>x_tmp<="010000";when others =>x_tmp<="000000";end case;end if;end process p2;cat1_out<=cat1;cat2_out<=cat2;cat3_out<=cat3;end a;五、控制器libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitykongzhiqi isport(x_in, y_in: in std_logic_vector(1 downto 0);--键盘输入xkey_out: out std_logic_vector(3 downto 0); --列项ykey_in: in std_logic_vector(3 downto 0); --行项reach10_in, time_up_in: in std_logic;--分数时间信号clk_k, clk_k2, clear_k: in std_logic;add_out, win_out, lose_out, disappear_out:outstd_logic);endkongzhiqi;architecture a of kongzhiqi issignalscan_key: std_logic_vector(3 downto 0); signaldiv_cnt: std_logic_vector(24 downto 0);signalx_tmp, y_tmp, x, y: std_logic_vector(2 downto 0); signal flag: std_logic;signalx_old, y_old: std_logic_vector(1 downto 0); beginp1: process(clk_k,clear_k)beginifclear_k = '1' thendiv_cnt<= "0000000000000000000000000";elsif(clk_k'event and clk_k = '1')thendiv_cnt<= div_cnt + 1;end if;end process p1;p2: process(div_cnt(1 downto 0))begincasediv_cnt(1 downto 0) ISwhen "00"=>scan_key<="1110";when "01"=>scan_key<="1101";when "10"=>scan_key<="1011";when "11"=>scan_key<="0111";end case;end process p2;p3: process(clk_k,clear_k)beginifclear_k='1' thenx_tmp<= "111";y_tmp<= "111";elsif(clk_k'event and clk_k='1')thenif not(x_in= x_old) or not(y_in= y_old) thenx_tmp<= "111";y_tmp<= "111";x_old<= x_in;y_old<= y_in;end if;casescan_key is --jiancewhen "1110" =>caseykey_in iswhen "0111" =>y_tmp<= "000";x_tmp <= "000";when "1011" =>y_tmp<= "001";x_tmp <= "000";when "1101" =>y_tmp<= "010";x_tmp <= "000";when "1110" =>y_tmp<= "011";x_tmp <= "000";when others => null;end case;when "1101" =>caseykey_in iswhen "0111" =>y_tmp<= "000";x_tmp <= "001";when "1011" =>y_tmp<= "001";x_tmp <= "001";when "1101" =>y_tmp<= "010";x_tmp <= "001";when "1110" =>y_tmp<= "011";x_tmp <= "001";when others => null;end case;when "1011" =>caseykey_in iswhen "0111" =>y_tmp<= "000";x_tmp <= "010";"1011" =>y_tmp<= "001";x_tmp <= "010";when "1101" =>y_tmp<= "010";x_tmp <= "010";when "1110" =>y_tmp<= "011";x_tmp <= "010";when others => null;end case;when "0111" =>caseykey_in iswhen "0111" =>y_tmp<= "000";x_tmp <= "011";when "1011" =>y_tmp<= "001";x_tmp <= "011";when "1101" =>y_tmp<= "010";x_tmp <= "011";when "1110" =>mp<= "011";x_tmp <= "011";when others => null;end case;when others => null;end case;end if;end process p3;p4: process(x_in, y_in, flag, x, y, x_tmp, y_tmp, clk_k2) beginif x= x_tmp and y= y_tmp thenadd_out<= '1';disappear_out<= '1';elsif clk_k2'event and clk_k2= '0' thenadd_out<= '0';disappear_out<= '0';end if;end process p4;p5: process(reach10_in, time_up_in)beginif reach10_in= '1' thenwin_out<= '1';elsiftime_up_in= '1' thenlose_out<= '1';elsewin_out<= '0';lose_out<= '0';end if;end process p5;xkey_out<= scan_key;x(1 downto 0)<= x_in;y(1 downto 0)<= y_in;x(2)<= '0';y(2)<= '0';end a;五、功能说明及资源利用率情况:通过不同模块协同和作,实现打地鼠游戏。