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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ if(Isbottom())//如果未到底 { RefreshBricks();//刷新 for(int i=0;i<4;i++)
CurrentBrick[i].x++;//方块下降X增加 } else //如果到底了 { IsGameOver(); CanEraseALine();//消去一行 DrawNextBrick();//绘制下一个方块以提示 GenerateABrick();//生成新的方块 Number[0]=Number[1]; CreateNumber();//获取随机的数据 } myDraw(); }
图3-7 积分变化后游戏运行图
(4) 游戏结束:当方块累计顶到游戏运行界面上方边缘 的时候,就结束游戏。
图3-8游戏结束图
4、 程序代码
void CBrickDlg::OnKey(UINT nChar) { { switch(nChar) { case VK_NUMPAD1://左方向 if(!(IsOutOfRect(1)==2)) { RefreshBricks(); for(int a=0;a<4;a++)//a为循环用变量 CurrentBrick[a].y--;//Y表示的是横向坐标,左起 为0,向左移动Y减小 } break; case VK_NUMPAD3://右方向 if(!(IsOutOfRect(2)==1)) { RefreshBricks(); for(int a=0;a<4;a++) CurrentBrick[a].y++;//右移动Y增加 } break; case VK_NUMPAD7://下落 OnTimer(1);
(3) 方块的旋转操作:按向上的键就会使方块的旋转
2、 系统的详细设计与实现 2.1算法分析 2.2.1定义方块的数据结构
对于方块在某一瞬间的位置的标识,我们采用了4*2的小 数组标识出来,即用4个存储单位空间存储当前下坠物的每一 个字块的位置,也就是说,用4个存储空间存储当前下坠唔的 每一个字块的位置进行标识,而每一个存储空间的大小就是一 个点的坐标值(x,y),二每个方块按照从左到右的方式进行 编号,并且在编号的过程中对于同一列的方块实行从上带下进 行编号,如图所示2-1:
1.3.6模块实现的功能
(1) 绘图刷新模块:在此模块中可以绘制新的方块模型
void CBrickDlg::RefreshBricks(void) { int i; 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; } } void CBrickDlg::OnGameStart() { Start(); Number[0]=rand()%7; Number[1]=rand()%7; return; } void CBrickDlg::OnGameOver() { TCHAR m_strValue[200]; if(GameState==STOP) Exit(); else Stop();
1.3.5 系统说明(帮助)功能
在此功能中需要完成的功能有:提供给用户系统使用的的 详细说明和玩家如何玩游戏的详细说明,以便玩家熟练的操作
此游戏。 使用说明:俄罗斯方块的基本规则是移动(向左、向右、 下移),旋转和摆放游戏自动的输出的各种方块,使之排列成 完整的一行或者多行并且消除得分,由于上手简单,老少皆 宜,从而家喻户晓,风靡世界。 游戏帮助:打开游戏时,点击“开始”按钮就可以开始游 戏了,游戏过程中可以点击“左”“右”“下”“转换”按钮 对随机出现的方块进行操作,使之排列成整行从而得分;得分 越高,等级越高,方块下降的速度也会随着等级的增加而加 快。
1.2需求分析
俄罗斯方块是一个比较简单的游戏。它游戏过程仅需要玩 家将不断下落的各种形状的方块移动、翻转,如果某一行被方 块充满了,那就将些行消掉;而当窗口中无法再容纳下落的方 块时,就宣告游戏的结束。游戏的需求分析如下: 界面设计需求: (1) 实验功能需求虽需要的按钮 (2) 显示积分和等级的文本 (3) 下一个方块下落提示界面,需要用不同的颜色表示 (4) 游戏运行界面 功能需求: (1) 实现各种方块的生产,包括形状和颜色等信息; (2) 实现各个方块的上下左右移动和旋转的功能(鼠标 操作和键盘操作)。
(3) 实现消行的功能; (4) 实现得分的统计功能; (5) 实现开始,暂停,结束等功能;
1.3总体设计 1.3.1开发环境描述
俄罗斯方块游戏软件基于ARM的wince5.0平台,利用 PXA270RP实验箱模拟仿真器,利用evc编程来具体实现,在实 验箱的触摸屏上进行游戏。 嵌入式系统作为芯片和软件的集成体,在科学研究、工业 控制、军事技术、医疗卫生、消费电子等方面有着普遍的应 用,此软件基于ARM处理器和windows CE 的研究平台, windows CE是由优先级的多任务操作系统它允许多重功能、进 程,在相同的时间系统中运行Windowns CE 支持最大的32位同 步进程,微软Windowns CE被设计成针对小型设备的通用操作 系统,它可以通过设计一层位于内核和硬件之间代码来设定硬 件平台。嵌入式工具包包括设备驱动器(DDK)和软件开发包 (SDK),DDK提供了关于写驱动器的附加文本,SDK提供库、 头文件、样本代码、文本以允许,开发者对基于Windowns CE 的平台进行写操作,Windowns CE提供了相同的程序界面,以 用来为其他的视窗操作系统开发功能。
图3-3方块变后前视图
(3) 消行及积分累加等级变化操作:当当方块落到游戏 界面最底部并且铺满最后一行,就能消去所在这一 行,积分增加100分,而积分每增加500时,玩家等 级增加1。如下图所示为消行前后游戏运行图以及 积分等级变化图:
图3-4 消行前游戏运行图
图3-5 消行后游戏运行图
图3-6 积分变化前游戏运行图
3.2系统运行的结果
(1) 游戏开始:点击游戏界面上的开始按钮,玩家就可 以进行游戏的一系列操作。如图3-1所示
图3-1游戏开始运行界面
(2) 方块转换及下一个方块提示:点击界面上转换按钮 或者按键盘上向上的按钮,都会使当前方块变换形 式。如图3-2和3-3所示为方块形状转变前后的情 形。
图3-2方块变换前视图
《嵌入式项目作业》
俄罗斯方块程序设计与系统分析
作 者 姓 名: 专业、班级 : 学 号 : 指 导 教 师: 完 成 日 期: 日
计科103 牛玉军 2013年06月20
大连大学 Dalian University
目录 一、 系统分析与总体设计 1.1开发背景及其开发意义 1.2需求分析 1.3总体设计 1.3.1开发环境描述 1.3.2系统总体功能设计 1.3.3 游戏界面设计 1.3.4操作设计 1.3.5 系统说明(帮助)功能 1.3.6模块实现的功能 二、 系统的详细设计与实现 2.1算法分析 2.2.1定义方块的数据结构 2.2程序流程图 三、 系统实现与调试 3.1调试过程:错误信息和解决方法 3.2系统运行的结果 四、 程序代码 五、 总结 六、 参考文献 1、 系统分析与总体设计 1.1开发背景及其开发意义
俄罗斯方块定位点设置,以黑色点为(0,0)坐标
状态 类型 1 2 3 4 5 6 7 表1-1 俄罗斯方块方块形状图 1 2 3 4
键盘处理事件:方块下落时,可通过键盘方向键(上、 下、左、右键)对该方块进行向上(变形),向下(加速)、向 左、向右移动。 ③消行操作: 当方块落到游戏界面最底部并且铺满最后一行,就能消去 所在这一行,积分增加100分,而积分增加到一定数值时,玩 家等级增加。 ④积分等级记录设计: 随着玩家对游戏的熟悉程度,对游戏的掌握程度,当玩家 进行操作所消的行数越多,积分增加得越多,玩家等级也随之 增加。
1.3.2系统总体功能设计
首先需要对俄罗斯方块的设计和功能需求进行详细的了解 和分析,一个具有功能完全满足基本需要的系统需要包括以下 几个功能模块。如图1-1所示是俄罗斯方块总体设计功能图。
图1-1 俄罗斯方块总体设计功能图
1.3.3 游戏界面设计
游戏界面设计包括:游戏界面的布局,分伟5大板块,分 别是游戏显示界面,下一个方块下落是界面,积分和等级记录 界面,开始结束暂停按钮,方块形态位置变化操作按钮。如图 1-2所示,游戏界面设计图:
在现代信息高速发展的时代,电子游戏已经成为人们生活 中不可缺少的一部分,也是老少皆宜的娱乐方式。在电子科技 还不是很发达的中国,游戏的发展还是受到技术的限制,随着 游戏行业的迅速发展,游戏研发称为国家科技和经济上重大的 突破方向。 掌上游戏机和电视游戏机在80年代和90年代风靡一时,此 时由苏联人阿列克谢·帕基特诺夫制作的俄罗斯方块在掌上游 戏机和电视游戏机上流行,其造成的轰动和经济价值成为游戏 史上的大事。俄罗斯方块是一个老少皆宜的小游戏,它实现由 四个正方形的色块组成,然后存储于一个数组的四个元素中, 计算机随机产生七种不同类型的方块,根据计算机时钟控制他 在一定的时间不停地产生,用户根据键盘的四个方向近些年向 左、向右、向上、向下,翻转操作。然后程序根据这七种方块 折叠成各种不同的类型。基于Windows的游戏设计方式很多, 如基于Java的跨平台设计,基于.net平台的设计,基于JAVA的 设计由于运行在虚拟机上运行,效率比较低;而.net的设计通 用性不是很好,为了避免这些缺点,本文采用EVC在ARM平台上 进行设计来完成俄罗斯方块游戏。
图2-1示例
方块的表示方法:即四个小方块的坐标设定,其中一个方 块是原点,坐标为(0,0);右侧方块坐标(1,0);下面的方 块坐标(0,1),以此类推。
2.2程序流程图
如下图2-2所示,为程序流程图:
图2-2 程序流程图
3、 系统实现与调试 3.1调试过程:错误信息和解决方法
开发俄罗斯方块程序中,要解决的技术难题如下: 1 错误信息:C:\Users\qingxue\Desktop \briБайду номын сангаасk\brick.rc(10) : fatal error RC1015: cannot open include file 'afxres.h'. 解决方法:C:\WINCE500\OTHERS\MFC\INCLUDE路径添 加到Microsoft eMbedded Visual C++ 4.0中 ToolsOptionsDirectoriesinclude files下即可。 2 错误信息:LINK : fatal error LNK1104: cannot open file 'mfcs42d.lib' 解决方法:C:\WINCE500\OTHERS\MFC\LIB\X86路径添 加到Microsoft eMbedded Visual C++ 4.0中 ToolsOptionsDirectoriesLibrary files下即可。 3 下落时,如果确定方块是否可以下落,即是否已经落 到“地”if(GameState==RUNNING)
(2) 开始结束暂停按钮的操作功能:实现对游戏的控制
_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; } void CBrickDlg::OnPause() { if(GameState==RUNNING) { GameState=PAUSED; myDraw(); } else if(GameState==PAUSED) GameState=RUNNING; } void CBrickDlg::OnUp() { if(GameState==RUNNING) { nChar=VK_NUMPAD9; OnKey( nChar) ; } }
图1-2游戏界面设计图
1.3.4操作设计
操作设计包括: ①游戏开始结束暂停操作设计:在游戏界面上有开始、结 束、暂停按钮,用鼠标操作,选择是否要进入游戏。 ②方块形状转换操作: 良好的方块形状设计,绘制七种常见的基本图形(长条 形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个 方块要能实现它的变形,可设为顺时针或逆时针变形,一般为 逆时针。如表1-1所示俄罗斯方块定位点设置表
相关文档
最新文档