点阵赛车游戏

合集下载

电玩城赛车活动策划方案

电玩城赛车活动策划方案

电玩城赛车活动策划方案一、活动背景:随着电子游戏行业的迅猛发展,电玩城已成为年轻人的热门娱乐方式。

为了吸引更多的顾客,提高电玩城的知名度和美誉度,我们计划举办一场电玩城赛车活动。

通过该活动,我们希望给顾客带来刺激和乐趣的同时,也传达电玩城的品牌精神和价值观。

二、活动目标:1. 提高电玩城的知名度和美誉度。

2. 增加顾客的参与度和忠诚度。

3. 增加电玩城的收入和盈利能力。

三、活动时间和地点:1. 活动时间:计划在周末或节假日举办,为期一周。

2. 活动地点:电玩城内的赛车游戏专区。

四、活动内容:1. 主题设置:将电玩城赛车活动定为一个大型竞速赛事,让顾客能够亲身参与其中,感受速度与激情的魅力。

2. 比赛项目:设置多个赛车游戏站点,每个站点设有多台游戏机。

参赛顾客可在规定时间内进行游戏,以达到最快完成比赛项目的目标。

3. 分组设置:根据参赛顾客的不同水平和经验,将他们分为初级组、中级组和高级组。

每个组别设立奖项,以鼓励顾客参与。

4. 赛程安排:(1) 比赛预选赛:每个组别的前100名将晋级到决赛。

(2) 决赛:将所有组别的选手进行混合,通过单场或多场比赛选出冠军和亚军。

5. 奖品设置:为增加活动的吸引力和参与度,设立奖品,包括金牌、奖杯、奖金、电玩城会员卡充值金额等。

6. 游戏规则:参赛顾客需购买电玩城会员卡,并对赛车游戏进行积分充值。

通过游戏机上的排行榜,确定比赛的名次和晋级名单。

五、活动推广:1. 合作推广:与赛车游戏开发商进行合作,共同推广活动。

2. 媒体宣传:通过电视、广播、报纸、杂志等媒体渠道进行宣传推广。

3. 社交媒体:利用微博、微信、抖音等社交媒体平台宣传活动,并举办相应的线上抽奖活动,吸引更多的参与者。

4. 门店宣传:通过电玩城内海报、展板、彩带等物料宣传活动信息。

5. 会员推广:鼓励电玩城会员邀请亲友前来参与活动,设立奖励机制。

六、活动运营:1. 人员安排:活动期间设立专门的工作人员负责活动的组织、协调和管理。

幼儿园大班数学小游戏

幼儿园大班数学小游戏

幼儿园大班数学小游戏对于幼儿园大班的小朋友来说,数学学习既重要又充满挑战。

通过有趣的小游戏,可以让他们在轻松愉快的氛围中,不知不觉地掌握数学知识,培养数学思维。

以下是一些适合幼儿园大班的数学小游戏。

一、数字拼图准备一些数字卡片和相应的拼图卡片。

将数字写在拼图卡片的一部分,另一部分是与数字相关的图案。

例如,数字“5”对应的拼图部分可能是五朵小花的图案。

小朋友们需要将数字和图案正确匹配,拼成完整的卡片。

这个游戏可以帮助小朋友们认识数字,并理解数字与数量的对应关系。

二、数字跳房子在地上画出类似跳房子的格子,每个格子里写上不同的数字。

小朋友们通过扔沙包或者小石子,按照数字顺序依次跳进格子。

比如,从 1 开始,跳到 2,再跳到 3,依此类推。

这个游戏可以锻炼小朋友们对数字顺序的认知和身体协调能力。

三、购物游戏设置一个“小超市”,准备一些常见的商品玩具和价格标签。

小朋友们扮演顾客和收银员。

顾客选择自己想要购买的商品,收银员计算总价。

在这个过程中,小朋友们可以学习物品的价格、货币的使用以及简单的加法运算。

四、数字接龙老师先说出一个数字,然后小朋友们依次说出后面的数字。

例如,老师说“3”,第一个小朋友说“4”,第二个小朋友说“5”,以此类推。

如果有小朋友说错了,就重新开始。

这个游戏可以强化小朋友们对数字顺序的记忆。

五、分类游戏准备一些不同形状、颜色、大小的物品,如各种颜色和形状的积木。

让小朋友们按照一定的标准进行分类,比如按照颜色分类,或者按照形状分类。

分类完成后,让他们数一数每种分类有多少个物品,从而引入数量的概念。

六、猜数字老师在心里想一个 1 到 10 之间的数字,小朋友们通过提问来猜出这个数字。

比如,小朋友可以问“是大于 5 的数字吗?”老师回答“是”或“不是”,直到小朋友猜出正确的数字。

这个游戏可以培养小朋友们的逻辑推理能力和对数字范围的理解。

七、搭积木比高矮给小朋友们提供一些相同大小的积木,让他们自由搭建。

用Unity创建一个刺激的赛车游戏

用Unity创建一个刺激的赛车游戏

用Unity创建一个刺激的赛车游戏Unity是一款强大的游戏开发引擎,它提供了丰富的工具和功能,使得开发人员能够轻松创建各种类型的游戏。

在本文中,我将介绍如何使用Unity来创建一个刺激的赛车游戏。

1. 游戏场景设计游戏的第一步是设计一个引人入胜的游戏场景。

你可以选择一个城市街道、田野或者山脉等作为背景,或者根据自己的喜好设计一个虚构的场景。

使用Unity的场景编辑器,你可以轻松地创建和布置不同的道路和环境元素,使场景变得更加丰富多样。

2. 赛车模型和材质接下来,需要创建一个赛车模型并为其添加材质。

Unity提供了多种建模工具,你可以使用它们来创建一个具有细节丰富的赛车模型。

在设计赛车外观时,你可以参考现实世界的汽车或者自己的想象来进行创作。

为了使赛车看起来更逼真,你可以为其添加光照和阴影效果。

3. 赛道设计制作赛道是赛车游戏的重要一环。

你可以使用Unity的道路工具来绘制赛道路径,并根据需要自定义赛道的形状和曲线。

你可以为赛道设置不同的地形和障碍物,如山石、建筑物或者其他赛车无法穿越的障碍物。

4. 赛车控制实现赛车的控制是游戏开发中的一个关键步骤。

你可以使用Unity 的物理引擎来为赛车添加真实的物理效果,如重力、摩擦力和碰撞。

通过编写脚本来控制赛车的移动、转向和加速,你可以使赛车在游戏中具有更真实的表现。

5. 对手AI如果你希望游戏更具挑战性,可以为赛车游戏添加对手AI。

你可以使用Unity的AI工具来创建对手赛车,并编写脚本来控制它们的行为。

对手可以自动驾驶,在赛道上与玩家进行竞争,增加游戏的刺激性。

6. 游戏界面和音效一个好的游戏界面可以增加游戏的可玩性和吸引力。

你可以使用Unity的UI工具来创建游戏的界面元素,如开始菜单、计分板等。

同时,添加适当的音效也能为游戏增添乐趣,比如引擎声音、碰撞声效等。

7. 测试和优化在开发过程中,经常进行测试和优化是非常重要的。

通过测试,你可以找到游戏中存在的问题,并对其进行修复。

洛克人x8攻略[整理]

洛克人x8攻略[整理]

洛克人x8攻略CAPCOM的《洛克人》系列一直是家用游戏机上的经典,笔者从任天堂红白机上就开始领略到其不容拒绝的魅力。

多年来以《洛克人》为题材的游戏一直在各种家用机平台上反复出现了数十次之多,其间也往PC Game领域移植过几次,基本没有造成太大的反响。

前作《洛克人X7》是一个失败的3D化版本,而这次的《洛克人X8》则吸取了前作完全改版以至于特色尽失的教训,又回到了以2D横版为主的老路上来。

游戏以简单的横版过关形式为主,夹杂了诸如赛车等诸多游戏模式,设计了丰富的升级系统和让人眼花缭乱的动作元素,让游戏自始至终给玩家以极大的刺激和强烈的挑战,其设计巧妙的各种隐藏元素更是让游戏者反复把玩,欲罢不能。

基本操控X(或双击→键):冲刺Z:跳跃S:特殊武器A:一般攻击D或C:转换武器F:转换角色V:双重攻击←↑→↓:方向控制空格键:联络领航员Alt+F4:退出游戏角色简介艾克斯:以字母X表示,洛克人系列永远的主角,各种能力较均衡。

射击方向仅能左右两向,不可做到斜向,可蓄力射击,有强化装甲。

杰洛:以字母Z表示,手持光剑的猎人,近身攻击力强大,拥有2段跳绝技,进化后有多种威力惊人的必杀技。

艾克赛尔:以字母A表示。

射击威力一般,但可以45度角斜向射击,而且可连发。

他的特点是跳跃后滞空时间长,还有别人没有的复制功夫。

艾莉雅:领航员,熟悉每个关卡的场景情况,掌握了各关Boss的一手资料。

第一次以简单模式玩游戏时建议多多选择艾莉雅。

柏拉图:领航员,擅长分析航线数据,可提醒玩家隐藏路线。

通关一次后,第二次以探寻隐藏要素为主要目的的话,选择柏拉图将不会错过任何可疑之处。

雷亚:领航员,具备分析敌人弱点的能力,可以回复主角部分生命值。

在游戏最后阶段,选择雷亚的回复能力是很有必要的。

特别提示:如果在游戏中开发出特别的领航员晶片,那么在选择角色时就可选择领航员代替猎人进行游戏(按Tab键切换),艾莉雅、柏拉图和雷亚分别对应艾克斯、艾克赛尔和杰洛。

《疾驰残影》评测:一款绝妙的游戏

《疾驰残影》评测:一款绝妙的游戏
精选2021版课件
*
向设定, 如果是箭头那边控制方向, 也许我就不 会玩了, 因为我几乎所有的游戏都是 WSAD 控制 方向的, 其他的键我都可以迁就。
总之, 这款游戏真的很棒, 从各方面来讲,
SS 和 BLUR 都不错, 只不过先入为主的害了 BLUR, 大家刚玩爽 SS 那火爆刺激, 再玩这个自然觉得 很平淡无趣, 如果 BLUR 早于 SS 先发售就不会是 现在这个局面, 那样大家就会认为有两款神作赛 车了。他们之间其实没有什么可比性。如果你没 有深玩 BLUR, 你是不会有体会的。我写这篇文章
精选2021版课件
*
《疾驰残影》评测:一款绝妙的游戏
咱们论坛里的绝大多数人都在说 BLUR 很雷, 但是由于我非常的喜欢赛车类游戏,所以顶着巨 大的鸭梨我也还是下载了,刚才呢玩了几个小 时,解锁到第三章,也算是熟悉游戏了,写点玩 后感想,目的就是想让那些真正喜欢赛车的朋友 别太在意评论拉,和什么 IGN 之类的评分拉,自 己去试试才是一个真正喜欢游戏的人应有的态 度。我认为这两款游戏完全没有可比性,不过既 然论坛的朋友喜欢拿这两款比,考虑到也都是最
精选2021版课件
*
画面像 SS 那样渲染, 我想没几个能看清的, SS 的画面绝对是亮点, 但如果出现在 BLUR 里就是 败笔, 会严重影响道具的显示和玩家的发挥, 所 以说 BLUR 这种风格决定了游戏场景的画面, 而 在保证玩家可以完全分辩出道具的前提下, 做出 的这种场景画面, 我觉得可以给满分, 而且我认 为单讲车体精细度, BLUR 比 SS 强, 强很多。
优化方面, 我感觉 BLUR 比 SS 强太多了, SS 开到 VH 都会掉帧, 保持不到 30, 这点论坛里超 级配置的人多的很, 也多数是这样吧。反正我玩

幼儿园公开课:大班数学游戏《新型车展》教案(详案)

幼儿园公开课:大班数学游戏《新型车展》教案(详案)

幼儿园公开课:大班数学游戏《新型车展》教案(详案)教案概述:本节课是一堂幼儿园大班数学游戏公开课,主题为《新型车展》。

通过游戏的方式,引导幼儿认识不同类型的车辆,并培养他们的观察力、分类能力和数学思维。

教学目标:1. 认识不同类型的车辆,如汽车、火车、飞机等。

2. 培养幼儿的观察力和分类能力。

3. 引导幼儿进行简单的数学思维,如数量比较和数数。

教学准备:1. 图片或玩具车辆模型,包括汽车、火车、飞机等。

2. 大班教室的空地或地板。

教学步骤:1. 导入环节:- 引导幼儿回忆他们在生活中见过的不同类型的车辆,如汽车、火车、飞机等。

- 展示一些车辆的图片或玩具模型,让幼儿观察并说出它们的名称。

2. 游戏规则说明:- 解释游戏规则:幼儿将分成几个小组,每个小组代表一个车展的展台。

- 每个小组将获得一些车辆的图片或玩具模型,他们需要根据车辆的类型将它们分类并展示在自己的展台上。

3. 游戏进行:- 让每个小组在自己的展台上展示他们的车辆。

- 引导幼儿观察其他小组的展台,看看他们是如何分类车辆的。

- 鼓励幼儿互相交流,分享自己的观察和分类方法。

4. 数量比较:- 引导幼儿观察每个小组展台上的车辆数量,比较哪个小组的车辆最多,哪个小组的车辆最少。

- 让幼儿用手指指向最多和最少的小组,并说出原因。

5. 数数游戏:- 让每个小组选出一种车辆,如汽车,然后数一数他们展台上有多少辆汽车。

- 引导幼儿说出数目,并比较不同小组的数目。

6. 游戏- 回顾整个游戏过程,让幼儿分享他们的观察和学到的知识。

- 引导幼儿总结不同类型的车辆,并复习数数和数量比较的概念。

教学延伸:1. 可以引导幼儿制作自己喜欢的车辆模型,加强他们对车辆的认识和兴趣。

2. 可以在游戏中加入更多的数学元素,如车辆的颜色、形状等,让幼儿进行更多的观察和分类。

3. 可以组织幼儿参观附近的车展或交通博物馆,进一步拓展他们对车辆的认识。

数学游戏-趣味几何

数学游戏-趣味几何

数学游戏-趣味几何介绍数学游戏是一种结合娱乐和学习的方式,可以帮助人们更轻松地理解和应用数学知识。

而趣味几何作为数学游戏的一种形式,在解决几何问题的同时,还能增加人们对几何概念的理解和兴趣。

本文将介绍一些有趣的数学游戏,帮助您在玩乐中提升几何能力。

游戏1:拼图游戏拼图游戏是一种常见的数学游戏,在这个过程中,玩家需要根据给定的图形碎片来还原出完整的图案。

对于拼图游戏来说,几何概念是非常重要的。

玩家需要观察每个碎片的形状、边长、角度等特征,并通过比较和试错来将碎片正确地组合在一起。

游戏2:迷宫探险迷宫探险是一种以解决迷宫问题为基础的数学游戏。

在这个游戏中,玩家需要从起点走到终点,避开障碍物和死胡同。

玩家需要运用几何知识来判断行进的方向和距离,同时还需要灵活应对迷宫中的复杂结构和规则。

游戏3:三角形拼图三角形拼图是一种有趣而挑战性的数学游戏。

每个拼图由散落的三角形碎片组成,玩家需要将这些碎片重新排列,使它们通过共享边长或相等的角度来完整地连接在一起。

这个游戏可以帮助玩家加深对三角形特性(如内角和、边长关系等)的理解。

游戏4:射击几何图形射击几何图形是一种结合游戏和几何学习的互动体验。

在这个游戏中,玩家扮演一个射手,需要用弓箭来命中不同形状的目标,比如圆形、正方形、矩形等。

通过调整射击角度和力度,玩家能够更好地理解和应用几何知识,并提高空间感知力。

结论数学游戏-趣味几何为我们提供了一种有趣而有效的学习方式。

通过参与各种几何相关的数学游戏,我们可以增加对几何概念的理解和应用能力,同时培养数学思维和推理能力。

无论是在学校还是在生活中,通过参与这些游戏,我们可以更加轻松地掌握几何知识,并提升自己的数学水平。

3d极速飙车(体育小游戏)

3d极速飙车(体育小游戏)
3d极速飙车(体育小游戏)
体育小游戏
01 背景设定
03 游戏目标
目录
02 操作指南 04 游戏特点
基本信息
《3d极速飙车》是一款体育小游戏名。
背景设定
背景设定
3d极速飙车是一款体育小游戏名。在灿烂的阳光下飙车,穿越城市、沙滩、冰川和沙漠,尽情的体验那种生 死时速的畅快感觉。让天亮我们就出发。Speed Forge 3D是一款非常好玩的3D赛车类游戏。
游戏目标
游戏目标
避免与其他赛车的碰撞的同时,以最快的速度抵达终点。
游戏特点
游戏特点
-真实的撞击感-6种不同的赛道 -3辆不同性能的赛车-3个不同的难度级别 -画面可呈现出完整的3D效果 -提供地雷和制导火箭作为攻击武器
谢谢观看
操作指南
启动方式
操作方法启动方式游戏源自入后点击开始游戏即可。操作方法
方向键↑控制前进,方向键↓刹车,方向键←→控制方向,数字键1、3切换第一视角和第三视角。 3D双人极速飙车3d极速飙车可以进行双人游戏,玩家一:使用键盘的W键前进,S键刹车,AD键控制左右移 动;玩家二:使用键盘方向键 ↑键前进,↓键刹车,←→键控制左右移动。 提示:按B键开始游戏,使用全屏进行游戏效果更好。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

点阵赛车游戏实验报告姓名班级学号一、要求和任务1.用8×8点阵进行5秒倒计时显示,如下图所示。

2.当5秒倒计时结束后,点阵显示下图所示的赛道和赛车的初始位置,赛车游戏开始,并开示赛车行进的方向。

要求:用BTN1~BTN3三个按键分别控制赛车的左移、前进、右移,最终使赛车在不碰撞赛道的情况下走完全程(即图2中的绿色位置),游戏结束,点阵显示“V”图案,数码管显示走完全程所耗费的时间。

当游戏时间超过59秒,或者赛车在行进过程中碰撞赛道,游戏失败,点阵显示“X”图案。

通过按键BTN0进行复位,控制点阵返回到初始状态。

提高要求:有多种游戏赛道可选,5秒倒计时显示后赛道随机出现。

赛车的初始位置随机出现。

在赛车行进过程中,赛道中随机出现障碍物(用8×8点阵中的一个LED表示),通过BTN1~BTN3三个按键的控制躲避障碍物,走完全程。

若赛车碰到障碍物和赛道,则游戏失败。

二、系统设计(包括设计思路、总体框图、分块设计)总体框图:三、仿真波形及波形分析Button0按下,点阵显示5 1秒后,点阵显示42后,点阵显示33秒后,显示2 4秒后,显示15秒后,数码管显示5 9两个向左按键,赛车碰壁,显示失败‘x’又复位之后,又54321减下来又开始重复。

四、源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY saiche ISPORT(CLOCK:IN STD_LOGIC;button0,button1,button2,button3:IN STD_LOGIC; --四个按键:复位键、右、上、左ROW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --控制车道的横向量COL_RED:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--控制车道的红色列向量COL_GREEN:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--控制车道的绿色列向量LIGHT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --段选输出LIGHT_EN:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)--位选输出);END saiche;ARCHITECTURE MLD OF saiche ISSIGNAL CLK1hz,CLK_5K,CLK_1K,CLK_2K,CLK_100hz,CLK_200hz:STD_LOGIC;--1hz,5khz,1Khz,2Khz,100hz,200hz时钟信号SIGNAL N:INTEGER RANGE 0 TO 6; --产生随机赛道时的判断数SIGNAL NUM:INTEGER RANGE 0 TO 20; --0号赛道逐点扫描时点的序列SIGNAL NUM1:INTEGER RANGE 0 TO 19; --1号赛道逐点扫描时点的序列SIGNAL NUM2:INTEGER RANGE 0 TO 18; --2号赛道逐点扫描时点的序列SIGNAL NUM3:INTEGER RANGE 0 TO 22; --3号赛道逐点扫描时点的序列SIGNAL T_HIGH:INTEGER RANGE 0 TO 5; --倒计时高位SIGNAL T_LOW:INTEGER RANGE 0 TO 9; --倒计时低位SIGNAL COUNT200:INTEGER RANGE 0 TO 250000; --各分频用的计数SIGNAL COUNT2:INTEGER RANGE 0 TO 50000;SIGNAL COUNT3:INTEGER RANGE 0 TO 50000;SIGNAL COUNT:INTEGER RANGE 0 TO 50000000;SIGNAL COUNT1:INTEGER RANGE 0 TO 10000;SIGNAL COUNT_100hz:INTEGER RANGE 0 TO 500000;SIGNAL tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7,tmp8:std_logic;--消抖时用的临时信号SIGNAL CNT,CNT1:INTEGER RANGE 0 TO 1000;SIGNAL FAIL,SUCCESS,TIME_UP:STD_LOGIC;--FAILS赛车碰到车道的失败信号,SUCCESS赛车到终点的成功信号--TIME_UP 60s时间到的失败信号SIGNAL START :INTEGER RANGE 0 TO 6; --START=1 54321计时到的开启信号SIGNAL TIMES :INTEGER RANGE 0 TO 7; --点阵显示状态判别信号SIGNAL SEL:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL RST,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP: STD_LOGIC;-- 由四个按键经过消抖处理后,产生的四个控制信号TYPE DIAN IS ARRAY(INTEGER RANGE <>) OF INTEGER RANGE 0 TO 7;SIGNAL SX,SY ,SX1,SY1:INTEGER RANGE 0 TO 7;--SX,SY赛车坐标,SX1,SY1障碍坐标CONSTANT WY:DIAN(0 TO 18):=(0,0,0,1,2,3,3,3,4,4,4,5,6,7,7,7,4,5,6);--0号赛道红绿色车道纵坐标,后三个是绿色车道纵坐标CONSTANT WX:DIAN(0 TO 18):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,7,7);--0号赛道红绿色车道的横坐标,后三个是绿色车道横坐标CONSTANT WY1:DIAN(0 TO 17):=(1,0,1,0,1,2,1,2,4,5,6,7,7,6,5,5,3,4);--1号赛道红绿色车道纵坐标,后两个是绿色车道纵坐标CONSTANT WX1:DIAN(0 TO 17):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,7);--1号赛道红绿色车道的横坐标,后两个是绿色车道横坐标CONSTANT WY2:DIAN(0 TO 16):=(1,2,1,1,2,3,4,5,4,5,6,6,5,6,7,7,6);--2号赛道红绿色车道纵坐标,后一个是绿色车道纵坐标CONSTANT WX2:DIAN(0 TO 16):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7);--2号赛道红绿色车道的横坐标,后一个是绿色车道横坐标CONSTANT WY3:DIAN(0 TO 20):=(1,1,1,1,0,0,0,0,6,6,6,6,6,6,6,6,1,2,3,4,5); --3号赛道红绿色车道的横坐标,后五个是绿色车道横坐标CONSTANT WX3:DIAN(0 TO 20):=(0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,7,7,7,7,7); --0号赛道红绿色车道的横坐标,后五个是绿色车道横坐标SIGNAL STATE:INTEGER RANGE 0 TO 1;TYPE FIGURE IS ARRAY(INTEGER RANGE <>) OF INTEGER RANGE 0 TO 9;SIGNAL SHOW:FIGURE(9 DOWNTO 0); --数码显示BEGINp1:PROCESS(CLOCK) --分频部分BEGINIF CLOCK'EVENT AND CLOCK='1' THENCOUNT<=COUNT+1;COUNT1<=COUNT1+1;COUNT_100hz<=COUNT_100hz+1;COUNT200<=COUNT200+1;COUNT2<=COUNT2+1;COUNT3<=COUNT3+1;IF COUNT<=24999999 THEN --1HZ分频CLK1hz<='1';ELSIF COUNT>24999999 AND COUNT<=49999999 THENCLK1hz<='0';ELSIF COUNT=50000000 THENCOUNT<=0;END IF;IF COUNT2<=9998 THENCLK_1K<='1';ELSIF COUNT2>9998 AND COUNT2<=19997 THENCLK_1K<='0';ELSIF COUNT2=19998 THENCOUNT2<=0;END IF;IF COUNT3<=24999 THEN --1KHZ分频CLK_2K<='1';ELSIF COUNT3>24999 AND COUNT3<=49999 THENCLK_2K<='0';ELSIF COUNT3=50000 THENCOUNT3<=0;END IF;IF COUNT1<=4999 THEN --5KHZ分频CLK_5K<='1';ELSIF COUNT1>4999 AND COUNT1<=9999 THENCLK_5K<='0';ELSIF COUNT1=10000 THENCOUNT1<=0;END IF;IF COUNT_100hz<=249999 THEN --100HZ分频CLK_100hz<='1';ELSIF COUNT_100hz>249999 AND COUNT_100hz<=499999 THENCLK_100hz<='0';ELSIF COUNT_100hz=500000 THENCOUNT_100hz<=0;END IF;IF COUNT200<=124999 THEN --200HZ分频CLK_200hz<='1';ELSIF COUNT200>124999 AND COUNT200<=249999 THENCLK_200hz<='0';ELSIF COUNT200=250000 THENCOUNT200<=0;END IF;END IF;END PROCESS;P2:PROCESS(CLK_100hz,button0,button1,button2,button3,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7, tmp8) --消抖部分BEGINIF(CLK_100hz'event AND CLK_100hz='0')THENtmp2<=tmp1;tmp1<=button0;tmp4<=tmp3;tmp3<=button1;tmp6<=tmp5;tmp5<=button2;tmp8<=tmp7;tmp7<=button3;END IF;RST <= CLK_100hz AND tmp1 AND (NOT tmp2);DIRECTION_RIGHT <=CLK_100hz AND tmp3 AND (NOT tmp4);DIRECTION_UP <=CLK_100hz AND tmp5 AND (NOT tmp6);DIRECTION_LEFT <=CLK_100hz AND tmp7 AND (NOT tmp8); END PROCESS;p0:PROCESS(CLK_1K) --产生随机数BEGINIF CLK_1K'EVENT AND CLK_1K='1' THENif TIMES=0 THEN N<=N;ELSEIF N=6 THENN<=0;ELSE N<=N+1;END IF;END IF;END IF;END PROCESS;p3: PROCESS(CLK_2K)BEGINIF CLK_2K'event AND CLK_2K='1' THENIF NUM=20 THENNUM<=0;ELSE NUM<=NUM+1;END IF;IF NUM1=19 THENNUM1<=0;ELSE NUM1<=NUM1+1;END IF;IF NUM2=18 THENNUM2<=0;ELSE NUM2<=NUM2+1;END IF;IF NUM3=22 THENNUM3<=0;ELSE NUM3<=NUM3+1;END IF;END IF ;END PROCESS;p4:PROCESS(CLK_5K)BEGINif CLK_5K'EVENT AND CLK_5K='1' thenIF SEL="111" THENSEL<="000";ELSE SEL<=SEL+'1';END IF;END IF;END PROCESS;p5: PROCESS(CLK1hz,START,T_HIGH,T_LOW,SUCCESS,FAIL)--数码管显示判断部分BEGINIF START=5 THEN --54321游戏开始,START为瞬时值T_HIGH<=5;T_LOW<=9; TIME_UP<='0'; CNT1<=0;ELSIF CLK1hz'EVENT AND CLK1hz='1' THENIF SUCCESS='1'THEN --成功的话则显示成功所用时间if CNT1=0 thenT_LOW<=9-T_LOW;T_HIGH<=5-T_HIGH ;CNT1<=CNT1+1;ELSE T_LOW<=T_LOW;T_HIGH<=T_HIGH ;T_LOW<=T_LOW;END IF;ELSIF FAIL='1' THEN -- 失败则显示失败时刻值T_LOW<=T_LOW;T_HIGH<=T_HIGH ;ELSIF SUCCESS='0' AND FAIL='0' THEN -- 正常则倒计时If T_LOW=0 AND T_HIGH=0 THENTIME_UP<='1'; --时间到60S返回TIME_UP信号ELSIF T_LOW=0 AND T_HIGH/=0 THENT_LOW<=9;T_HIGH<=T_HIGH-1;ELSET_LOW<=T_LOW-1;END IF;END IF;END IF;END PROCESS;P6:PROCESS(CLK_5K,T_HIGH,T_LOW,START) -- 数码管显示部分BEGINIF START/=5 AND START/=6 THENLIGHT<="0000000";ELSIF CLK_5K'EVENT AND CLK_5K='1' THENIF(STATE=1)THENSTATE<=0;ELSE STATE<=STATE+1;END IF;CASE STATE IS --数码管分次扫描WHEN 1=>LIGHT_EN<="110111";WHEN 0=>LIGHT_EN<="111011";WHEN OTHERS=>LIGHT_EN<="111111";END CASE;SHOW(0)<=T_LOW;SHOW(1)<=T_HIGH;CASE SHOW(STATE) IS --数码管数字显示设置WHEN 9=>LIGHT<="1111011";WHEN 8=>LIGHT<="1111111";WHEN 7=>LIGHT<="1110000";WHEN 6=>LIGHT<="1011111";WHEN 5=>LIGHT<="1011011";WHEN 4=>LIGHT<="0110011";WHEN 3=>LIGHT<="1111001";WHEN 2=>LIGHT<="1101101";WHEN 1=>LIGHT<="0110000";WHEN 0=>LIGHT<="1111110";WHEN OTHERS=>LIGHT<="0000000";END CASE;END IF;END PROCESS;p7:PROCESS(RST,CLK_200hz,START,DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP,SX,SY ) --控制赛车部分BEGINIF RST='1' THEN SX<=0;SY<=2;ELSIF CLK_200hz'event AND CLK_200hz='1' THEN--DIRECTION_LEFT,DIRECTION_RIGHT,DIRECTION_UP脉宽5ms--所以用CLK_200hz时钟检测,避免过多检测到信号或没有检测到方向信号SX1<=2;SY1<=3;IF TIMES=0 THENIF DIRECTION_LEFT='1' then --赛车向左移一格SY<=SY-1;ELSIF (DIRECTION_RIGHT='1') then --赛车向右移一格SY<=SY+1;ELSIF (DIRECTION_UP='1') then --赛车向上移一格SX<=SX+1;END IF;END IF;end if;END PROCESS;p8: PROCESS (SX,SY,TIMES,CLK_5K,N) --成功失败判断部分BEGINIF TIMES=0 THENIF CLK_5K'event AND CLK_5K='1' THENCASE N ISWHEN 0=> --0号赛道判断部分IF((SY=0 and SX=0)or(SY=0 and SX=1)or(SY=0 and SX=2)or(SY=1 and SX=3)or(SY=3 and SX=3)or(SY=2 and SX=4)or(SY=3 and SX=5)or(SY=3 and SX=6)or(SY=3 and SX=7)or(SY=4 and SX=0)or(SY=4 and SX=1)or(SY=4 and SX=2)or(SY=6 and SX=4)or(SY=7 and SX=5)or(SY=7 and SX=6)or(SY=7 and SX=7)) thenFAIL<='1';ELSIF (SY=4 and SX=7)or (SY=5 and SX=7)or (SY=6 and SX=7) then SUCCESS<='1';ELSE SUCCESS<='0';FAIL<='0';END IF;WHEN 1|4=> --1号赛道判断部分IF((SY=1 and SX=0)or(SY=0 and SX=1)or(SY=1 and SX=2)or(SY=0 and SX=3)or(SY=1 and SX=4)or(SY=2 and SX=5)or(SY=1 and SX=6)or(SY=3 and SX=3)or(SY=2 and SX=7)or(SY=4 and SX=0)or(SY=5 and SX=1)or(SY=6 and SX=2)or(SY=7 and SX=3)or(SY=7 and SX=4)or(SY=6 and SX=5)or(SY=5 and SX=6)or(SY=5 and SX=7)) thenFAIL<='1';ELSIF (SY=3 and SX=7)or (SY=4 and SX=7) thenSUCCESS<='1';ELSE SUCCESS<='0';FAIL<='0';END IF;WHEN 2|5=> --2号赛道判断部分IF((SY=1 and SX=0)or(SY=2 and SX=1)or(SY=1 and SX=2)or(SY=1 and SX=3)or(SY=2 and SX=4)or(SY=4 and SX=6)or(SY=3 and SX=3)or(SY=5 and SX=7)or(SY=4 and SX=0)or(SY=5 and SX=1)or(SY=6 and SX=2)or(SY=6 and SX=3)or(SY=5 and SX=4)or(SY=6 and SX=5)or(SY=7 and SX=6)or(SY=7 and SX=7)) thenFAIL<='1';ELSIF (SY=6 and SX=7) thenSUCCESS<='1';ELSE SUCCESS<='0';FAIL<='0';END IF;WHEN 3|6=> --3号赛道判断部分IF((SY=1 and SX=0)or(SY=1 and SX=1)or(SY=1 and SX=2)or(SY=1 and SX=3)or(SY=0 and SX=4)or(SY=0 and SX=5)or(SY=0 and SX=6)or(SY=0 and SX=7)or(SY=6 and SX=0)or(SY=6 and SX=1)or(SY=6 and SX=2)or(SY=6 and SX=3)or(SY=3 and SX=3)or(SY=6 and SX=4)or(SY=6 and SX=5)or(SY=6 and SX=6)or(SY=6 and SX=7)) thenFAIL<='1';ELSIF (SY=4 and SX=7)or (SY=5 and SX=7)or (SY=1 and SX=7)or (SY=2 and SX=7)or(SY=3 and SX=7)thenSUCCESS<='1';ELSE SUCCESS<='0';FAIL<='0';END IF;WHEN OTHERS => SUCCESS<='0';FAIL<='0';END CASE;END IF ;END IF;end process;PROCESS(SEL,RST,SUCCESS,FAIL,N,NUM,NUM1,NUM2,NUM3,SX,SY,SX1,SY1,CLK1hz,START,TIMES,T IME_UP)BEGINIF RST='1' THENTIMES<=5;START<=0;ELSIF START=6 THENIF SUCCESS='1' THEN TIMES<=7;ELSIF TIME_UP='1' OR FAIL='1' THEN TIMES<=6;END IF;ELSIF CLK1hz'EVENT AND CLK1hz='1' thenIF TIMES=0 THEN TIMES<=0;ELSETIMES<=TIMES-1;END IF;if START=6 thenSTART<=6;else START<=START+1;end if;END IF;case TIMES isWHEN 7=> case SEL is --显示成功字符“V”When "000"=>ROW<="01111111";COL_RED<="00000000";COL_GREEN<="00000000";When "001"=>ROW<="10111111";COL_RED<="01000100";COL_GREEN<="00000000";When "010"=>ROW<="11011111";COL_RED<="01000100";COL_GREEN<="00000000";When "011"=>ROW<="11101111";COL_RED<="01000100";COL_GREEN<="00000000";When "100"=>ROW<="11110111";COL_RED<="00101000";COL_GREEN<="00000000";When "101"=>ROW<="11111011";COL_RED<="00010000";COL_GREEN<="00000000";When "110"=>ROW<="11111101";COL_RED<="00000000";COL_GREEN<="00000000";When "111"=>ROW<="11111110";COL_RED<="00000000";COL_GREEN<="00000000";When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";End case;WHEN 6=> case SEL is --显示失败字符“X”When "000"=>ROW<="01111111";COL_RED<="10000001";COL_GREEN<="00000000";When "001"=>ROW<="10111111";COL_RED<="01000010";COL_GREEN<="00000000";When "010"=>ROW<="11011111";COL_RED<="00100100";COL_GREEN<="00000000";When "011"=>ROW<="11101111";COL_RED<="00011000";COL_GREEN<="00000000";When "100"=>ROW<="11110111";COL_RED<="00011000";COL_GREEN<="00000000";When "101"=>ROW<="11111011";COL_RED<="00100100";COL_GREEN<="00000000";When "110"=>ROW<="11111101";COL_RED<="01000010";COL_GREEN<="00000000";When "111"=>ROW<="11111110";COL_RED<="10000001";COL_GREEN<="00000000";When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";End case;WHEN 5=> CASE SEL IS --显示字符“5”When "000"=>ROW<="01111111";COL_RED<="00111100";COL_GREEN<="00000000";When "001"=>ROW<="10111111";COL_RED<="00000100";COL_GREEN<="00000000";When "010"=>ROW<="11011111";COL_RED<="00000100";COL_GREEN<="00000000";When "011"=>ROW<="11101111";COL_RED<="00111100";COL_GREEN<="00000000";When "100"=>ROW<="11110111";COL_RED<="00100000";COL_GREEN<="00000000";When "101"=>ROW<="11111011";COL_RED<="00100000";COL_GREEN<="00000000";When "110"=>ROW<="11111101";COL_RED<="00100000";COL_GREEN<="00000000";When "111"=>ROW<="11111110";COL_RED<="00111100";COL_GREEN<="00000000";When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";END CASE;WHEN 4=> CASE SEL IS --4When "000"=>ROW<="01111111";COL_RED<="00100100";COL_GREEN<="00000000";When "001"=>ROW<="10111111";COL_RED<="00100100";COL_GREEN<="00000000";When "010"=>ROW<="11011111";COL_RED<="00100100";COL_GREEN<="00000000";When "011"=>ROW<="11101111";COL_RED<="00111100";COL_GREEN<="00000000";When "100"=>ROW<="11110111";COL_RED<="00100000";COL_GREEN<="00000000";When "101"=>ROW<="11111011";COL_RED<="00100000";COL_GREEN<="00000000";When "110"=>ROW<="11111101";COL_RED<="00100000";COL_GREEN<="00000000";When "111"=>ROW<="11111110";COL_RED<="00000000";COL_GREEN<="00000000";When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";END CASE;WHEN 3=> CASE SEL IS --3When "000"=>ROW<="01111111";COL_RED<="00111100";COL_GREEN<="00000000";When "001"=>ROW<="10111111";COL_RED<="00100000";COL_GREEN<="00000000";When "010"=>ROW<="11011111";COL_RED<="00100000";COL_GREEN<="00000000";When "011"=>ROW<="11101111";COL_RED<="00111100";COL_GREEN<="00000000";When "100"=>ROW<="11110111";COL_RED<="00100000";COL_GREEN<="00000000";When "101"=>ROW<="11111011";COL_RED<="00100000";COL_GREEN<="00000000";When "110"=>ROW<="11111101";COL_RED<="00111100";COL_GREEN<="00000000";When "111"=>ROW<="11111110";COL_RED<="00000000";COL_GREEN<="00000000";When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";END CASE;WHEN 2=> CASE SEL IS --2When "000"=>ROW<="01111111";COL_RED<="00111100";COL_GREEN<="00000000";When "001"=>ROW<="10111111";COL_RED<="00100000";COL_GREEN<="00000000";When "010"=>ROW<="11011111";COL_RED<="00100000";COL_GREEN<="00000000";When "011"=>ROW<="11101111";COL_RED<="00111100";COL_GREEN<="00000000";When "100"=>ROW<="11110111";COL_RED<="00000100";COL_GREEN<="00000000";When "101"=>ROW<="11111011";COL_RED<="00000100";COL_GREEN<="00000000";When "110"=>ROW<="11111101";COL_RED<="00111100";COL_GREEN<="00000000";When "111"=>ROW<="11111110";COL_RED<="00000000";COL_GREEN<="00000000";When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";END CASE;WHEN 1=> case SEL is --显示字符“1”When "000"=>-ROW<="01111111";COL_RED<="00001000";COL_GREEN<="00000000";When "001"=>ROW<="10111111";COL_RED<="00001000";COL_GREEN<="00000000";When "010"=>ROW<="11011111";COL_RED<="00001000";COL_GREEN<="00000000";When "011"=>ROW<="11101111";COL_RED<="00001000";COL_GREEN<="00000000";When "100"=>ROW<="11110111";COL_RED<="00001000";COL_GREEN<="00000000";When "101"=>ROW<="11111011";COL_RED<="00001000";COL_GREEN<="00000000";When "110"=>ROW<="11111101";COL_RED<="00001000";COL_GREEN<="00000000";When "111"=>ROW<="11111110";COL_RED<="00000000";COL_GREEN<="00000000";When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";End case;WHEN 0=> --扫描赛车和赛道COL_RED<="00000000"; COL_GREEN<="00000000";ROW<="11111111";CASE N ISWHEN 0 =>CASE NUM ISWHEN 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15=> --扫描0号红色赛道--COL_RED(WY(NUM-1))<='0';ROW(WX(NUM-1))<='1';COL_RED(WY(NUM))<='1';ROW(WX(NUM))<='0';WHEN 16|17|18=> --扫描0号绿色赛道COL_GREEN(WY(NUM))<='1';ROW(WX(NUM))<='0';WHEN 19=> --扫描赛车坐标COL_RED(SY)<='1';COL_GREEN(SY)<='1';ROW(SX)<='0';WHEN 20=> -扫描障碍坐标COL_RED(SY1)<='1';ROW(SX1)<='0';WHEN OTHERS=>COL_RED<="00000000";COL_GREEN<="00000000";ROW<="11111111";END CASE;WHEN 1|4=>CASE NUM1 ISWHEN 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15=> --扫描1号红色赛道COL_RED(WY1(NUM1))<='1';ROW(WX1(NUM1))<='0';WHEN 16|17=> --1号绿色赛道COL_GREEN(WY1(NUM1))<='1';ROW(WX1(NUM1))<='0';WHEN 18=> --扫描赛车坐标COL_RED(SY)<='1';COL_GREEN(SY)<='1';ROW(SX)<='0';WHEN 19=> --扫描赛车坐标COL_RED(SY1)<='1';ROW(SX1)<='0';WHEN OTHERS=>COL_RED<="00000000";COL_GREEN<="00000000";ROW<="11111111";END CASE;WHEN 2|5=>CASE NUM2 IS--WHEN 0=>WHEN 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15=>--COL_RED(WY(NUM-1))<='0';ROW(WX(NUM-1))<='1';COL_RED(WY2(NUM2))<='1';ROW(WX2(NUM2))<='0';WHEN 16=>COL_GREEN(WY2(NUM2))<='1';ROW(WX2(NUM2))<='0';WHEN 17=>COL_RED(SY)<='1';COL_GREEN(SY)<='1';ROW(SX)<='0';WHEN 18=>COL_RED(SY1)<='1';ROW(SX1)<='0';WHEN OTHERS=>COL_RED<="00000000";COL_GREEN<="00000000";ROW<="11111111";END CASE;WHEN 3|6 =>CASE NUM3 ISWHEN 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15=>COL_RED(WY3(NUM3))<='1';ROW(WX3(NUM3))<='0';WHEN 16|17|18|19|20=>COL_GREEN(WY3(NUM3))<='1';ROW(WX3(NUM3))<='0'; -WHEN 21=>COL_RED(SY)<='1';COL_GREEN(SY)<='1';ROW(SX)<='0';WHEN 22=>COL_RED(SY1)<='1';ROW(SX1)<='0';WHEN OTHERS=>COL_RED<="00000000";COL_GREEN<="00000000";ROW<="11111111";END CASE;When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";END CASE;When others =>ROW<="11111111";COL_RED<="00000000";COL_GREEN<="00000000";END CASE;END PROCESS;END MLD;五、功能说明用BTN1~BTN3三个按键分别控制赛车的左移、前进、右移,最终使赛车在不碰撞赛道的情况下走完全程(即图2中的绿色位置),游戏结束,点阵显示“V”图案,数码管显示走完全程所耗费的时间。

相关文档
最新文档