俄罗斯方块程序设计与系统分析.docx

上传人:b****1 文档编号:1760314 上传时间:2022-10-23 格式:DOCX 页数:33 大小:326.32KB
下载 相关 举报
俄罗斯方块程序设计与系统分析.docx_第1页
第1页 / 共33页
俄罗斯方块程序设计与系统分析.docx_第2页
第2页 / 共33页
俄罗斯方块程序设计与系统分析.docx_第3页
第3页 / 共33页
俄罗斯方块程序设计与系统分析.docx_第4页
第4页 / 共33页
俄罗斯方块程序设计与系统分析.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

俄罗斯方块程序设计与系统分析.docx

《俄罗斯方块程序设计与系统分析.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块程序设计与系统分析.docx(33页珍藏版)》请在冰豆网上搜索。

俄罗斯方块程序设计与系统分析.docx

俄罗斯方块程序设计与系统分析

《嵌入式项目作业》

 

俄罗斯方块程序设计与系统分析

 

作者姓名:

洛天依

专业、班级:

软件工程2班

学号:

1402140219

指导教师:

完成日期:

2017年06月05日

 

大连大学

DalianUniversity

 

一、系统分析与总体设计

1.1开发背景及其开发意义

在现代信息高速发展的时代,电子游戏已经成为人们生活中不可缺少的一部分,也是老少皆宜的娱乐方式。

在电子科技还不是很发达的中国,游戏的发展还是受到技术的限制,随着游戏行业的迅速发展,游戏研发称为国家科技和经济上重大的突破方向。

掌上游戏机和电视游戏机在80年代和90年代风靡一时,此时由苏联人阿列克谢·帕基特诺夫制作的俄罗斯方块在掌上游戏机和电视游戏机上流行,其造成的轰动和经济价值成为游戏史上的大事。

俄罗斯方块是一个老少皆宜的小游戏,它实现由四个正方形的色块组成,然后存储于一个数组的四个元素中,计算机随机产生七种不同类型的方块,根据计算机时钟控制他在一定的时间不停地产生,用户根据键盘的四个方向近些年向左、向右、向上、向下,翻转操作。

然后程序根据这七种方块折叠成各种不同的类型。

基于Windows的游戏设计方式很多,如基于Java的跨平台设计,基于.net平台的设计,基于JAVA的设计由于运行在虚拟机上运行,效率比较低;而.net的设计通用性不是很好,为了避免这些缺点,本文采用EVC在ARM平台上进行设计来完成俄罗斯方块游戏。

1.2需求分析

俄罗斯方块是一个比较简单的游戏。

它游戏过程仅需要玩家将不断下落的各种形状的方块移动、翻转,如果某一行被方块充满了,那就将些行消掉;而当窗口中无法再容纳下落的方块时,就宣告游戏的结束。

游戏的需求分析如下:

界面设计需求:

(1)实验功能需求虽需要的按钮

(2)显示积分和等级的文本

(3)下一个方块下落提示界面,需要用不同的颜色表示

(4)游戏运行界面

功能需求:

(1)实现各种方块的生产,包括形状和颜色等信息;

(2)实现各个方块的上下左右移动和旋转的功能(鼠标操作和键盘操作)。

(3)实现消行的功能;

(4)实现得分的统计功能;

(5)实现开始,暂停,结束等功能;

1.3总体设计

1.3.1开发环境描述

俄罗斯方块游戏软件基于ARM的wince5.0平台,利用PXA270RP实验箱模拟仿真器,利用evc编程来具体实现,在实验箱的触摸屏上进行游戏。

嵌入式系统作为芯片和软件的集成体,在科学研究、工业控制、军事技术、医疗卫生、消费电子等方面有着普遍的应用,此软件基于ARM处理器和windowsCE的研究平台,windowsCE是由优先级的多任务操作系统它允许多重功能、进程,在相同的时间系统中运行WindownsCE支持最大的32位同步进程,微软WindownsCE被设计成针对小型设备的通用操作系统,它可以通过设计一层位于内核和硬件之间代码来设定硬件平台。

嵌入式工具包包括设备驱动器(DDK)和软件开发包(SDK),DDK提供了关于写驱动器的附加文本,SDK提供库、头文件、样本代码、文本以允许,开发者对基于WindownsCE的平台进行写操作,WindownsCE提供了相同的程序界面,以用来为其他的视窗操作系统开发功能。

1.3.2系统总体功能设计

首先需要对俄罗斯方块的设计和功能需求进行详细的了解和分析,一个具有功能完全满足基本需要的系统需要包括以下几个功能模块。

如图1-1所示是俄罗斯方块总体设计功能图。

图1-1俄罗斯方块总体设计功能图

1.3.3游戏界面设计

游戏界面设计包括:

游戏界面的布局,分伟5大板块,分别是游戏显示界面,下一个方块下落是界面,积分和等级记录界面,开始结束暂停按钮,方块形态位置变化操作按钮。

如图1-2所示,游戏界面设计图:

图1-2游戏界面设计图

1.3.4操作设计

操作设计包括:

①游戏开始结束暂停操作设计:

在游戏界面上有开始、结束、暂停按钮,用鼠标操作,选择是否要进入游戏。

②方块形状转换操作:

良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。

如表1-1所示俄罗斯方块定位点设置表

俄罗斯方块定位点设置,以黑色点为(0,0)坐标

状态类型

1

2

3

4

1

2

3

4

5

6

7

表1-1俄罗斯方块方块形状图

键盘处理事件:

方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。

③消行操作:

当方块落到游戏界面最底部并且铺满最后一行,就能消去所在这一行,积分增加100分,而积分增加到一定数值时,玩家等级增加。

④积分等级记录设计:

随着玩家对游戏的熟悉程度,对游戏的掌握程度,当玩家进行操作所消的行数越多,积分增加得越多,玩家等级也随之增加。

1.3.5系统说明(帮助)功能

在此功能中需要完成的功能有:

提供给用户系统使用的的详细说明和玩家如何玩游戏的详细说明,以便玩家熟练的操作此游戏。

使用说明:

俄罗斯方块的基本规则是移动(向左、向右、下移),旋转和摆放游戏自动的输出的各种方块,使之排列成完整的一行或者多行并且消除得分,由于上手简单,老少皆宜,从而家喻户晓,风靡世界。

游戏帮助:

打开游戏时,点击“开始”按钮就可以开始游戏了,游戏过程中可以点击“左”“右”“下”“转换”按钮对随机出现的方块进行操作,使之排列成整行从而得分;得分越高,等级越高,方块下降的速度也会随着等级的增加而加快。

1.3.6模块实现的功能

(1)绘图刷新模块:

在此模块中可以绘制新的方块模型

voidCBrickDlg:

:

RefreshBricks(void)

{

inti;

for(i=0;i<4;i++)

{

MatrixOfBricks[CurrentBrick[i].x][CurrentBrick[i].y]=0;//消去原先的方块

LastPositionOfBrick[i].x=CurrentBrick[i].x;//记录原先位置

LastPositionOfBrick[i].y=CurrentBrick[i].y;

}

}

(2)开始结束暂停按钮的操作功能:

实现对游戏的控制

voidCBrickDlg:

:

OnGameStart()

{

Start();

Number[0]=rand()%7;

Number[1]=rand()%7;

return;

}

voidCBrickDlg:

:

OnGameOver()

{

TCHARm_strValue[200];

if(GameState==STOP)

Exit();

else

Stop();

_itow(0,m_strValue,10);

SetDlgItemText(IDC_STATIC_NUM,m_strValue);

SetDlgItemText(IDC_LEVEL,m_strValue);

CDC*dc=GetDC();

dc->FillSolidRect(180,50,100,60,RGB(0,0,255));

return;

}

voidCBrickDlg:

:

OnPause()

{

if(GameState==RUNNING)

{

GameState=PAUSED;

myDraw();

}

elseif(GameState==PAUSED)

GameState=RUNNING;

}

(3)方块的旋转操作:

按向上的键就会使方块的旋转

voidCBrickDlg:

:

OnUp()

{

if(GameState==RUNNING)

{

nChar=VK_NUMPAD9;

OnKey(nChar);

}

}

二、系统的详细设计与实现

2.1算法分析

2.2.1定义方块的数据结构

对于方块在某一瞬间的位置的标识,我们采用了4*2的小数组标识出来,即用4个存储单位空间存储当前下坠物的每一个字块的位置,也就是说,用4个存储空间存储当前下坠唔的每一个字块的位置进行标识,而每一个存储空间的大小就是一个点的坐标值(x,y),二每个方块按照从左到右的方式进行编号,并且在编号的过程中对于同一列的方块实行从上带下进行编号,如图所示2-1:

图2-1示例

方块的表示方法:

即四个小方块的坐标设定,其中一个方块是原点,坐标为(0,0);右侧方块坐标(1,0);下面的方块坐标(0,1),以此类推。

2.2程序流程图

如下图2-2所示,为程序流程图:

图2-2程序流程图

三、系统实现与调试

3.1调试过程:

错误信息和解决方法

开发俄罗斯方块程序中,要解决的技术难题如下:

1错误信息:

C:

\Users\qingxue\Desktop\brick\brick.rc(10):

fatalerrorRC1015:

cannotopenincludefile'afxres.h'.

解决方法:

C:

\WINCE500\OTHERS\MFC\INCLUDE路径添加到MicrosofteMbeddedVisualC++4.0中Tools→Options→Directories→includefiles下即可。

2错误信息:

LINK:

fatalerrorLNK1104:

cannotopenfile'mfcs42d.lib'

解决方法:

C:

\WINCE500\OTHERS\MFC\LIB\X86路径添加到MicrosofteMbeddedVisualC++4.0中Tools→Options→Directories→Libraryfiles下即可。

3下落时,如果确定方块是否可以下落,即是否已经落到“地”if(GameState==RUNNING)

{if(Isbottom())//如果未到底

{RefreshBricks();//刷新

for(inti=0;i<4;i++)

CurrentBrick[i].x++;//方块下降X增加

}

else//如果到底了

{IsGameOver();

CanEraseALine();//消去一行

DrawNextBrick();//绘制下一个方块以提示

GenerateABrick();//生成新的方块

Number[0]=Number[1];

CreateNumber();//获取随机的数据

}

myDraw();

}

3.2系统运行的结果

(1)游戏开始:

点击游戏界面上的开始按钮,玩家就可以进行游戏的一系列操作。

如图3-1所示

图3-1游戏开始运行界面

(2)方块转换及下一个方块提示:

点击界面上转换按钮或者按键盘上向上的按钮,都会使当前方块变换形式。

如图3-2和3-3所示为方块形状转变前后的情形。

图3-2方块变换前视图

图3-3方块变后前视图

(3)消行及积分累加等级变化操作:

当当方块落到游戏界面最底部并且铺满最后一行,就能消去所在这一行,积分增加100分,而积分每增加500时,玩家等级增加1。

如下图所示为消行前后游戏运行图以及积分等级变化图:

图3-4消行前游戏运行图

图3-5消行后游戏运行图

图3-6积分变化前游戏运行图

图3-7积分变化后游戏运行图

(4)游

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1