俄罗斯方块设计
- 格式:doc
- 大小:411.30 KB
- 文档页数:14
俄罗斯方块游戏的设计和实现摘要俄罗斯方块是一款有益大脑开发,老少皆宜的游戏。
传统的俄罗斯方块色彩单调,功能单一,略显枯燥。
而该俄罗斯方块是一款基于手机端开发的,可以根据玩家水平选择游戏难度的游戏。
它实现了四个方块随机组成7种形状的功能,这种方块组成功能在弥补传统方块组成功能的缺陷的同时,还大大提高了游戏的趣味性,给玩家带来了更好的游戏体验。
该游戏将编程技术与图形技术相结合,以Eclipse作为开发环境,Java作为编程语言,数据则保存在MYSQL数据库中。
【关键词】Java;MYSQL;图形技术;俄罗斯方块Design and Implementation of Tetris GameAbstractTetris game is suitable for all ages, which can develop the brain. The traditional Tetris game is a drab, single and a bit boring game. But this Tetris is based on a mobile terminal development, and players can choose the level of difficulty of the game to play it. It implements a function that uses four blocks to make up seven kinds of graphic shapes randomly, which not only makes up for the defect of traditional squares function, but also greatly increases the interesting of the game to bring players a better game experience.The game is the combination of programming and graphics, which uses Eclipse as a development environment. Java is used as a programming language and the Data is stored in the MYSQL database.[Keywo rds] Java; MYSQL; Graphic Technology; Tetris目录1 绪论 (1)1.1 课题背景 (1)1.2 课题意义 (1)1.3 课题研究目的 (1)2 开发环境介绍 (1)2.1 硬件开发环境 (1)2.2 技术介绍 (2)2.2.1 Andro id (2)2.2.2 Eclipse (2)2.2.3 Java语言 (2)2.2.4 MYSQL数据库 (2)3 可行性分析 (3)3.1 经济可行性 (3)3.2 技术可行性 (3)3.3 操作可行性 (4)4 系统设计 (4)4.1 功能模块设计 (4)4.1.1 游戏功能分析 (4)4.1.2 游戏功能模块图 (4)4.1.3 UML用例图 (5)4.2 算法的描述和流程图 (6)4.3 数据库的设计 (7)5 设计实现 (9)5.1 游戏设计 (9)5.1.1 方块设计模块 (9)5.1.2 方块旋转功能模块 (10)5.1.3 游戏界面模块 (11)5.2 模式选择 (12)5.2.1 游戏开始功能模块 (12)5.2.2 游戏设置功能模块 (13)5.2.3 游戏积分统计模块 (14)6 系统的调试与测试 (15)6.1 系统的调试 (15)6.2 系统的测试 (15)6.2.1 测试的重要性及目的 (15)6.2.2 测试的主要内容 (16)7 结语 (18)参考文献 (19)致谢 (20)1 绪论1.1 课题背景俄罗斯方块游戏从产生到现在已经有25年历史了。
俄罗斯方块游戏是VHDL 应用于复杂数字系统的一个经典设计,本章将详细介绍该游戏的设计原理和设计方法。
其中包括系统构成、系统设计原理和系统各个模块的实现方法。
8.1 系统结构原理8.1.1 系统端口图8.1给出了系统的顶层设计符号,其端口包括:1)kc :PS/2键盘时钟输入; 2)kd :PS/2键盘数据输入; 3)mclk :系统主时钟输入;4)blue :蓝色信号输出到VGA 显示器接口; 5)grn :绿色信号输出到VGA 显示器接口; 6)red :红色信号输出到VGA 显示器接口; 7)hs :行扫描信号到VGA 显示器接口;8)vs :列扫描信号到VGA 显示器接口要开始一个游戏按F2键,但是当游戏正在运行时,不允许按键F2,如果要开始一个新的游戏必须停止它或者按键F1。
该游戏有5个不同的目标,可以对它进行旋转和左移或右移。
该游戏有4种不同的速度,当分数增加的时候,速度也随之增加,按键S 将增加速度,直到目标到达最底部。
速度和分数的关系是: 1)当分数<100,速度等级为1;2)当分数在(100,200)之间时,速度等级为2; 3)当分数在(200,300)之间时,速度等级为3; 4)当分数在>300时,速度等级为4;如图8.2所示,有两种不同的目标:右边是文本框,左边是俄罗斯方块。
使用两个BRAM 存储数据。
文本框中包含了32x16=512个字符,每个字符包含8比特,所以需要使用BRAM 。
在俄罗斯方块部分也使用了一个BRAM ,但其实这不是必须的,因为这增加了gamecontrol 模块的设计复杂度(只能在一个时钟周期访问一个BRAM )。
俄罗斯方块有10x20个块组成,每个块保存了4位(第1位用于说明是否有其它东西,其它3位保持着颜色)。
在屏幕上画像素需要25MHz 时钟,在设计中使用3线来传送颜色。
这也就是说,只能画出8种颜色(红,绿,蓝,黄,黑,白,浅绿和紫红)。
俄罗斯方块系统设计说明书版本号:V1.0班级:项目组长:小组成员:任课教师:职称:日期:俄罗斯方块系统设计说明书Tetris V1.0更改控制页黑龙江科技大学--俄罗斯方块系统设计说明书Tetris V1.0目录第一章前言 (1)1.1 编写目的 (1)1.2 项目概述 (1)1.3 组织结构与人员职责 (1)1.4 理解面向对象分析与设计 (2)第二章面向对象分析 (3)2.1 需求描述 (3)2.2 建立功能模型 (3)2.3 建立动态模型 (5)2.4 建立对象模型 (7)2.5 界面设计 (8)第三章面向对象设计 (10)3.1 系统架构设计 (10)3.2 模型层设计 (11)3.2.1 方块类(Brick) (12)3.2.2 墙类(Wall) (13)3.2.3 提示信息类(Prompt) (13)3.2.4 业务类及其关系设计 (14)3.3 视图层设计 (15)3.4 控制层设计 (16)第四章面向对象实现 (18)4.1 模型层实现(th.tetris.model) (18)4.2 视图层实现(th.tetris.view) (18)4.3 控制层实现(th.tetris.model) (18)俄罗斯方块系统设计说明书Tetris V1.0第一章前言1.1编写目的详细说明用户需求,并将其作为系统分析、设计和测试的依据。
预期读者:分析人员、设计人员、测试人员。
1.2项目概述该项目使用面向对象软件工程方法设计并实现一个俄罗斯方块游戏。
项目进程包括面向对象软件工程的三个阶段,即:面向对象分析、面向对象设计和面向对象实现。
系统框架易于扩展,可以在此基础上增添各种功能、扩展游戏用户数,并方便集成其它项目中。
该项目用于面向对象软件工程案例教学,达到以下教学目的:(1)如何使用面向对象软件工程方法进行软件开发;(2)如何使用面向对象的思想降低问题的复杂性;(3)如何使用MVC框架的思想进行程序开发;(4)如何使用java语言具体地实现一个俄罗斯方块游戏。
俄罗斯方块游戏JAVA版项目开发设计文档Ver骆华2021年8月一、项目介绍俄罗斯方块是一款盛行全世界的掌上游戏机和PC机游戏,它造成的轰动与制造的经济价值能够说是游戏史上的一件大事。
它由俄罗斯人阿列克谢·帕基特诺夫在1984年6月利用空闲时刻所编写的游戏程序,故得此名。
俄罗斯方块的大体规那么是移动、旋转和摆放游戏自动输出的各类方块,使之排列成完整的一行或多行而且排除得分。
它看似简单却转变无穷,俄罗斯方块上手极为简单,可是要熟练地把握其中的操作与摆放技术,难度却不低。
作为众所周知老少皆宜的公共游戏,其普及程度能够说是史上任何一款游戏都无法相较的。
相信大多数人都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块的时期。
由于俄罗斯方块具有的教学性、动态性与知名度,也常常拿来作为游戏程序设计的练习题材。
二、项目需求(一)功能需求运行游戏后,可选择游戏难度,游戏开始后,由程序随机产生所概念的图形,右上角可看到下一个图形,无操作时,方块竖直缓慢下落,图形在接触障碍物之前,能够由键盘操纵向左右下移动,可通过空格键进行翻转,能够进行暂停、从头开始游戏,当某一行被下落的方块填满后排除并计分,难度越大方块下落速度相对提高,另外可修改游戏窗体风格。
(二)性能需求一、游戏在不同分辨率下应能适应各类分辨率保证不变形。
二、保证游戏性能,在双核512M内存下应能流畅运行。
三、涉及要紧知识点(一)、开发环境搭建与配置1、jdk安装配置2、eclipse安装配置(二)、界面布局一、AWT、Swing二、菜单利用(三)、游戏方块整个游戏中总共7种方块样式,每一个方块有4种变形,通过线程操纵由4 * 4 个方格组成的一个方块的移动、下落和变形。
(四)、游戏画布通过线程动态改变游戏画布的方格颜色,画布通过检查方格颜色来表现方块的移动(五)、事件键盘监听事件(六)、线程整个游戏由线程操纵,一轮游戏进程,实现了Runnable接口,一轮游戏是一个大循环,在那个循环中,每隔100毫秒;检查游戏中的当前块是不是已经到底了,若是没有,就继续等待。
俄罗斯方块设计书1项目开发目的1.1熟练掌握已经学习的C语言基础,利用项目开发巩固已学习的知识;1.2扩展C语言知识:在完成项目的同时学习更高级的C语言知识,仅仅掌握课堂所学内容是远远不够的,需要通过项目扩展自己的C语言知识库;1.3掌握规范编码的基本要求,养成良好的编码习惯;1.4学习一个项目的基本开发过程,练习开发文档的编写;2需求说明本项目主要开发一个功能简单的俄罗斯方块游戏。
开发环境如下:Win-TC开发工具俄罗斯方块需求如下:2.1界面需求分析2.1.1界面分辨率大小测定2.1.2界面设计2.2功能需求分析2.2.1初始化游戏开始时,初始化屏幕、记分牌、级别、速度。
2.2.2设定游戏级别和速度等待玩家设置游戏级别和速度,给出开始按键提示,具体要求如下:a)通过下划线闪烁提示玩家正在修改的是级别还是速度,利用左键和右键在两者之间进行切换;b)通过上下键改变级别和速度:按上键数字变小,按下键数字变大,当数字由0变-1时,修改-1为9,当数字由9变10时,修改10为0;c)打印提示语:press ENTER to play,提示玩家按回车键开始游戏;d)按下回车,下划线不再闪烁,屏幕上显示已设定的级别和速度;e)按其他键无效,保持按键前的状态。
2.2.3根据游戏级别初始化方块布局当回车键按下开始游戏后,需要根据设定的游戏级别初始化游戏池中的方块布局,当级别为0时,池中为空,无预先放置的随机生成的方块,每增加一个级别,在初始的游戏池中就增加一行不完整的方块组,以增加游戏难度,最多有9行。
2.2.4绘制各种俄罗斯方块每个俄罗斯方块由4个小方块组成,总共有直线形、田字形、丁字形、Z字形、7字形五类俄罗斯方块,除了田字形其他各类俄罗斯方块都可以变形,因此可以得出共有19种形状的方块,而且每一种形状经过变形后只能变换到另一种形状的方块。
2.2.5时钟中断处理程序通过时钟中断处理程序控制程序的等待时长、方块移动的速度等。
计算机工程学院课程设计说明书课程名称:______________________________________ 设计项目:______________________________________ 学生姓名:______________________________________ 学号:______________________________________ 专业:______________________________________ 班级:______________________________________ 指导教师:____________________________________________年______月一、任务与具体要求二、设计说明书包括的内容三、应完成的图纸四、评语及成绩指导教师(签字)_____________________年____月____日目录1.系统概述 (2)2.原有程序概况 (3)3.现在系统操作界面 (5)4.现在程序详细设计 (7)5.用户手册 (14)6.测试计划 (15)7.课程设计心得体会 (16)8.参考书籍及资料 (17)系统概述1.1现状分析在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众认可,因此开发此游戏软件可满足人们的一些娱乐需求.此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。
1。
2项目要求俄罗斯方块是一款适合大众的游戏软件,它适合不同年龄的人玩.本软件实现的基本功能如下:●游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况和下一个将要出现方块的提示。
●游戏控制:玩家可以通过游戏控制功能来控制游戏开始,暂停,结束游戏,游戏难度的设置以及音效控制.●玩家游戏信息存储及删除:玩家的得分在前五名时,将会记录在排行榜上,同时可为玩家清空排行榜。
基于EasyX的俄罗斯方块游戏设计与实现一、前言俄罗斯方块是一款经典的益智休闲游戏,深受宽广玩家的喜爱。
在本文中,我们将详尽介绍基于EasyX图形库的俄罗斯方块游戏的设计与实现。
通过编写程序实现俄罗斯方块游戏的功能,旨在援助读者进一步了解计算机图形学及游戏开发的基本原理和方法。
二、游戏设计与实现1. 游戏规则设计俄罗斯方块游戏的基本规则如下:(1)游戏开始时,屏幕上会随机生成一个方块,玩家需要控制方块进行挪动和旋转。
(2)方块在竖直方向上下落,玩家可以通过键盘的左右方向键来控制方块的左右挪动。
(3)玩家还可以通过键盘的上方向键来实现方块的旋转,方块可按顺时针方向进行旋转。
(4)当方块下落到底部或着陆在其他方块上时,方块就会固定在底部或其他方块之上,成为新的底块。
(5)当底块中的某一行被填满时,该行就会被清除,并玩家得分。
清除一行得1分,若果一次清除多行,则分数更高。
(6)方块堆积到超出屏幕顶部时,游戏结束。
2. 游戏界面设计为了更好地展示俄罗斯方块游戏,我们需要设计合适的游戏界面。
通过EasyX图形库中的绘图函数,我们可以绘制游戏界面所需的各个元素。
游戏界面通常由游戏区域、得分区域和下一个方块区域组成。
游戏区域是游戏方块的显示区域,用于显示正在下落的方块和已经固定的底块;得分区域用于显示玩家的得分;下一个方块区域用于显示即将下落的方块。
3. 方块的表示与操作为了表示方块,我们可以使用二维数组来表示方块的外形。
通过矩阵变换的方式来实现方块的挪动和旋转。
在每个挪动或旋转时,我们先通过矩阵变换得到变换后的方块,然后检测变换后的方块是否与已经固定的底块或屏幕边界发生碰撞,若果没有碰撞,则更新当前方块为变换后的方块,完成挪动或旋转操作。
4. 游戏逻辑与事件处理游戏的逻辑主要包括方块的生成、挪动和碰撞检测,以及底块的固定和行的清除等过程。
游戏的事件处理包括键盘事件的抓取和处理,通过监听玩家按下的键盘事件来改变方块的状态,从而实现方块的挪动和旋转。
俄罗斯方块游戏的设计与实现首先,俄罗斯方块的游戏逻辑设计是关键。
游戏逻辑包括方块的生成、下落、旋转和消除等。
方块的生成需要随机生成不同形状的方块,在游戏开始时或者当前方块被消除后生成新的方块。
方块的下落和旋转需要根据玩家的输入进行处理,以及判断方块是否可以继续下落或旋转。
方块的消除是通过判断是否有一整行都被方块占满,如果是,则将该行消除,并向下移动上面的方块。
其次,俄罗斯方块的图形界面设计也需要考虑。
界面需要包括游戏区域、分数显示、下一个方块预览和游戏结束界面等。
游戏区域是方块下落的主要区域,需要有完善的显示和交互逻辑。
分数显示是用来展示玩家的得分情况,可以根据消除的行数计算得分。
下一个方块预览可以帮助玩家提前预知下一个方块的形状,方便策略调整。
游戏结束界面包括显示得分、重新开始游戏和退出游戏等选项。
此外,用户交互也是俄罗斯方块的重要设计与实现。
用户交互包括键盘输入和鼠标输入等方式。
键盘输入主要用来控制方块的移动和旋转,比如方向键用来移动方块的位置,空格键用来控制方块的旋转。
鼠标输入可以用来点击界面上的按钮,比如重新开始、退出游戏等。
最后,俄罗斯方块的实现还需要考虑动画效果。
动画效果可以增加游戏的趣味性和可玩性,比如方块下落时可以添加一个平滑的动画效果,方块消除时可以有特效动画等。
动画效果的实现需要通过定时器、缓动函数等技术手段来控制。
综上所述,俄罗斯方块的设计与实现涉及到游戏逻辑、图形界面、用户交互和动画效果等方面。
在设计过程中需要注意各部分的配合和完善,力求给玩家带来良好的游戏体验。
软件体系结构设计课程设计报告课程设计题目:俄罗斯方块小游戏专业名称:软件工程2017 年6月30日一、简介1.1俄罗斯方块游戏简介《俄罗斯方块》(Tetris,俄文:Тетрис)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的休闲游戏。
由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们在屏幕底部拼出完整的一条或几条。
这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。
没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。
1.2 俄罗斯方块游戏规则1.游戏主画面在一个用于摆放方块的面板上2.(1)一组由4个小型正方形组成的规则图形(即方块)共有7种形状,分别为一字形、田字形、7字形、反7形、Z形、反Z形、T形。
(2)一字形:一次最多消除四层田字形:消除一至二层7字形:最多消除三层,或消除二层反7形:最多消除三层,或消除二层Z形:最多二层,容易造成孔洞反Z形:最多二层,容易造成孔洞T形:最多二层3. 方块从区域上方开始下落,玩者可以按指定按钮左右移动方块、逆时针旋转方块,以及让方块加速落下。
4. 方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。
5. 当区域中某一行横向格子全部由方块填满,则该列会消失,玩家得分。
6. 当固定的方块累积堆到一定层数(设计游戏时设置)时,游戏结束。
7. 游戏会提示下一个要落下的方块形状。
二、需求分析与游戏设计2.2 需求分析2.2.1 游戏界面需求良好的用户界面设计。
本游戏主要有三个界面,一是主游戏区的面板,显示变化和下落的方块;二是用于放置按钮以及显现游戏信息的面板,三是双人对战时用以显示对方游戏信息的面板。
2.2.2 方块控制需求方块下落时,可通过特定按钮对该方块进行翻转、加速,以及向左、向右移动等操作。
2.2.3 图形显示需求随机给出不同的形状(一字形、田字形、7字形、反7形、Z形、反Z形、T形),下落填充给定的区域,填满一行则消掉记分,方块累积到一定层数无法再消去行时游戏结束。
俄罗斯方块游戏程序设计一、游戏界面设计二、方块的表示在俄罗斯方块游戏中,方块由若干个小方块组成。
通常使用一个二维数组来表示方块的形状,其中数组的值表示该位置是否有方块。
在每次方块移动或旋转时,我们可以通过修改该数组的值来改变方块的位置和形状。
三、方块的移动和旋转玩家可以通过按键来控制方块的移动和旋转。
例如,按下向下键可以使得方块在垂直方向上向下移动一格,按下向左键可以使得方块在水平方向上向左移动一格。
为了实现这样的控制,我们需要在游戏程序中监听键盘事件,并在接收到事件后更新方块的位置。
在旋转方面,我们可以通过维护一个旋转矩阵来实现方块的旋转。
该矩阵用于描述将方块顺时针或逆时针旋转90度后的形状。
在每次旋转时,我们可以通过矩阵相乘的方式来改变方块的形状。
四、方块的碰撞检测在俄罗斯方块游戏中,将方块堆叠到一定高度后,会出现方块无法再次下落的情况。
这时,我们需要检测方块是否与已堆叠的方块发生了碰撞。
碰撞检测可以通过比较方块的位置和值来实现。
如果方块的位置超出了游戏界面的边界,或者与已堆叠的方块重叠了,那么就说明发生了碰撞。
五、消行和得分计算当一行方块被填满后,该行会被消除,并获得相应的得分。
消行操作可以通过遍历方块矩阵,检测是否有一行的方块都被填满来实现。
如果有,我们可以将该行删除,并将上方的方块下移一行。
同时,根据消除的行数来计算得分。
通常,消除的一行得一定得分,而连续消除多行得分会有更高的加成。
六、游戏结束条件在俄罗斯方块游戏中,当方块堆叠到达游戏界面的上方时,游戏将结束。
为了实现游戏结束的判断,我们可以在每次方块下落时,检测方块的位置是否超出了游戏界面的边界。
如果发生了越界,就表示游戏结束。
七、游戏逻辑和循环最后,我们需要将游戏逻辑和界面显示整合到一起。
通常,我们使用一个无限循环来控制游戏的进行,每次循环时更新方块的位置,检测碰撞和消行等操作,并在游戏界面上显示最新的方块和得分。
总结:俄罗斯方块游戏的程序设计需要考虑到游戏界面设计、方块的表示、方块的移动和旋转、碰撞检测、消行和得分计算、游戏结束条件以及游戏逻辑和循环等方面。
本科课程设计题目:基于单片机的8*8LED 俄罗斯方块设计姓名孙俊学号2008130346院(系)物理与信息科学学院电子系专业、年级电子信息科学与技术2008级指导教师刘美容二○一一年十月基于单片机的8x8 俄罗斯方块设计一、设计任务《俄罗斯方块》是一款世人皆知,看似简单实则变化无穷的小游戏。
本次设计以51单片机为基础,设计一款功能简单的8*8点阵俄罗斯方块游戏,我们将以汇编语言编程实现以下操作:图形的显示合成,通过按键控制图形的移动和旋转,满格消行,手动复位等。
本次设计俄罗斯方块功能简单,用单片机的最小系统就能得以实现。
而单片机的最小系统设计中实际上最重要的就是对键盘/显示器接口电路的设计,由于系统功能不同所以要求就不同,接口设计也就不同。
对一个键盘/显示器接口设计应从整个系统出发,综合考虑软、硬件特点。
其中,硬件设计包括初始的设计原理和原理图介绍,到最终的电路图实际焊接以及布局,软件设计我们会给出具体的设计方案,比如图形的显示合成,通过按键控制图形的移动和旋转,满格消行等的设计流程图,以及具体的汇编程序。
二、设计方案本次设计初期是在keil和proteus联合仿真中进行,编程语言为51汇编语言,后期是进行实物焊接。
本次我们采用单片机STC89C52控制模块提供电源,以点阵式LED 显示,采用独立按键,直接在I/O口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是旋转键,下键,左键,右键。
这种方案实现可行,既满足系统功能要求,又减少了系统实现的复杂度。
而由于STC89C52是一种带8K 字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,该器件采用ATMEL 搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
89C52内置8位中央处理单元、256字节内部数据存储器RAM 、8k 片内程序存储器(ROM )32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
三、8*8俄罗斯方块硬件电路设计及原理图(1)选用设备AT89C51芯片一片,USB 数据线一根,共阳极的点阵屏一个,驱动三极管八个,开关按键五个,导线,限流电阻若干。
(2)硬件电路系统总框图如图所示图1 硬件系统总框图1)电源(5v 的稳压电源,通过整流,滤波,稳压得到) 电源电路 CPU 控制电路 按键电路 显示电路如图2所示电路为输出电压+5V、输出电流1.5A的稳压电源。
它由电源变压器B,桥式整流电路D1~D4,滤波电容C1、C2,防止自激电容C2、C3和一只固定式三端稳压器(7805)极为简捷方便地搭成的。
220V交流市电通过电源变压器变换成交流低压,再经过桥式整流电路D1~D4和滤波电容C1的整流和滤波,在固定式三端稳压器LM7805的Vin和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。
此直流电压经过LM7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。
本稳压电源可作为TTL电路或单片机电路的电源。
三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。
图2 电源电路图2)复位电路本设计采用手动复位电路,如图4所示,按键后:电容器被短路放电、CREST直接和VCC相连,就是高电平,此时进入“复位状态”。
松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到CREST,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻上的电压也将为0,CREST降为低电平,开始正常工作。
图3 手动复位电路2)晶振电路(提供时钟脉冲)如图4所示,晶振其实是一个频率产生器,他主要把传进去的电压转化为频率信号。
提供给分频率一个基准的14.318MHZ的振荡频率,它是一个多谐振荡器的正回馈环电路,也就是说它把输入作为输出,把输出作为输入的回馈频率,象这样一个永无休止的循环自激过程。
图4 晶振电路3)点阵显示屏及其驱动电路如图5所示,三极管采用PNP型,发光二极管采用共阳型。
单片机的P1口作为数据端,P2口作为片选端。
图5 点阵显示屏及其驱动电路4)独立按键电路如图6、图7所示,按键K1定义为右键,按键K2定义为左键,按键K3定义为下键,按键K4定义为旋转键。
图6 按键电路图图7 按键电路仿真图(5)系统工作原理(整个电路如图8所示)1) 编程设置好游戏规则,通过编程器写入89C52单片机系统。
2) 由89C52单片机通过P1口输送数据,P2口片选。
3) 通过89C52单片机的RESET位来控制系统是工作或设置初值,为0就对系统进行初始化,为1系统就开始工作;通过STC89C52单片机的P3.2,P3.3,P3.4位来控制游戏方块的右移,左移,下移,P3.5位来控制俄罗斯方块的旋转。
图 8 8*8俄罗斯方块游戏整机电路原理图四、8*8俄罗斯方块软件设计系统软件的设置主要包含延迟时间设计、方块显示程序设计、判断按键程序、方块旋转程序、判断在下移,左移,右移,旋转时是否冲突程序、俄罗斯方块消行程序以及游戏结束界面显示程序设计。
(1)主程序流程设计,如图9所示:首先在内存分配八个字节的空间作为显示内存,每行对应一个字节的内容,一共六十四位与六十四个LED灯相对应,图形的显示通过循环的行选中,每次分别将对应行内容送到对应端口,从而达到扫描显示的目的。
图9 主程序流程图(2) 图像的合成,如图10所示:一共七种方块对应于0—6的标识。
将每个方块分成四个LED,分别对四个LED 进行编号(将整个点阵看成0——7行,0——7列),编号=行数*8+列数,将每个方块的四个LED编号列出来,按次序列成表格,通过标识查表得LED灯编号,然后将编号存入对应的LED内存,然后通过一定变换,将此表示此LED的内容与相应的下一行进行逻辑或操作(①将#01H左循环位移列数的次数,②再将显示内存首地址+行数+1,再取内容,③把①②的内容相或)便实现了图像合成的目的。
图10 图像合成子程序(3)消行处理,如图11所示:查询显示内存的各个字节是否有为#0FFH,若有则将其前面的显示内存各字节内容循环下移,最后在显示内存首地址补零。
注意:方块在下落的过程中会自动判断每一行方块是否满行,如果满行时,就会将这一行小方块的隐藏,在将上面的小方块向下移动。
当有多行同时出现这样情况时使用递归调用,实现连续消行。
图11 消行子程序;/////////主程序/////MAIN:JNB SS,$;判断中断是否到来CLR SS ;中断标志清0ACALL HECHENG;调用移动与背景合成程序ACALL DISPLAY;调用动态显示子程序ACALL JIANPAN ;调用键盘扫描程序INC R3 ;等待1秒CJNE R3,#50,MAINMOV R3,#0ACALL MOVINGDOWN ;1秒到了下移ACALL JIESHU ;调用结束jnb sunjun, llllsunjun555:mov r4,#50oooo: call jieshuhoudjnz r4,oooomov r4,#50oooo1: call jieshuhou1djnz r4,oooo1mov r4,#50oooo2: call jieshuhou2djnz r4,oooo2ljmp sunjun555llll: JB CHONGTU,LEE_A ;判断是否冲突 JNB CHONGHE,MAIN ;判断是否需要合成 LEE_A: ACALL BACKHECHENG ;移动合成到背景 ACALL XIAOHANG ;调用消行子程序ACALL QINGCHU ;清除移动区数据ACALL CHUSUIJI ;出随机数ACALL SUIJI ;通过随机数取出积木 ACALL TIHUAN3 ;新积木送旋转区ACALL TIHUAN ;再送移动区MOV SHUCHU,#00H ;关屏幕AJMP MAIN1;/////////////显示子程序///////////////;输入:XIANSHOW0--7;输出:SHUCHU;功能:显示DISPLAY:MOV R0,#XIANSHOW0MOV R2,#7fHNEXT_II: MOV PIANXUAN,R2MOV A,@R0CPL AMOV SHUCHU,AACALL DELAYMOV SHUCHU,#0FFHINC R0MOV A,R2Rr AMOV R2,A ;片选CJNE R0,#40H,NEXT_IIRET;////////////////消行子程序////////////////////;输入: BACKSHOW0--7;输出: BACKSHOW0--7;功能:消掉全亮的行XIAOHANG:XH: MOV R7,#0 ;R7赋予初值,一共判8行MOV R0,#BACKSHOW7 ;从最底行开始判断,但当消了一行后,37H 内的数据即为XH_1: ;上一行的数据,即继续判断上行需要消行否MOV A,@R0 ;首先判断每一行是否为0FFCPL A ;数据取反JZ XIAOCHU ;如果为0(原来就为0FF),则可以去消行。
DEC R0 ;判断下一行需要消行否INC R7CJNE R0,#3FH,XH_1RETXIAOCHU:MOV @R0,#0 ;把需要消行的那一行数据清0X_H: MOV A,R0 ;消行当前行赋予ACC,暂存MOV R1,ADEC R1 ;上一行往下移MOV A,@R1 ;上一行数据移下来,移到消行所在行MOV @R0,ADEC R0 ;整体往下移动一格CJNE R0,#2FH,x_H ;30H为最上行,判断移完没有CJNE R7,#08,XH ;判断到顶行为止RET;////////////////结束子程序////////////////////JIESHU: MOV R0,#BACKSHOW0MOV A,@R0clr liyongzhicjne a,#00h,lyzRETLYZ: setb liyongzhiRetjieshuhou: ;游戏结束后界面一MOV XIANSHOW0,#40HMOV XIANSHOW1,#40HMOV XIANSHOW2,#40HMOV XIANSHOW3,#40HMOV XIANSHOW4,#40HMOV XIANSHOW5,#40HMOV XIANSHOW6,#40HMOV XIANSHOW7,#7fhACALL DISPLAYRet五、8*8俄罗斯方块测试结果、分析1)按键测试当电路连接完毕后,将写好的测试程序刷写到芯片内,K1、K2、K3 、K4以及复位按键分别给端口送高电平和低电平,通电观察即可检测。