1、 基于 VC 的俄罗斯方块创业创新 知识管理Ahead Institute of software and Technology编 号: 090619 审定成绩: 先锋软件学院 2012 届毕业设计(论文)题目: 基于 VC 的俄罗斯方块 分 院: 软 件 分 院 学生姓名: 吕志亚 专 业: 电 脑 游 戏 班 级: 0906 学 号: 200900008920 指导教师: 易 刚 填表时间:2012 年 03 月基于 VC 的俄罗斯方块创业创新 知识管理Ahead Institute of software and Technology学生毕业设计(论文)工作自查表(2011 年 11 月
2、- 2012 年 4 月检查)学生姓名 吕志亚 专业 电脑游戏 学号 200900008920导师姓名 易 刚 职称 讲师 导师每周指导次数 5 次 每次: 1 小时题目名称 基于 VC 的俄罗斯方块作息时间 上午 8:3012:00 下午 2:004:30 晚间 7:008:30个人精力实际投入日均工作小时 7 小时周均工作小时 35 小时缺席天数 无 出勤率% 100%已完成主要内容 100% 待完成主要内容 0%毕业设计(论文)工作进度完成 封面摘要引言第一章 绪论第二章 可行性研究第三章 需求分析第四章 设计基本的游戏功能第五章 程序主要功能设计及按键事件的控制第六章 程序设计思想与流
3、程图致谢参考文献本毕业设计基本完成。存在问题工作措施存在问题:在开发设计中存在诸多问题工作措施:在网上进行了查阅以及学习以及询问导师指导教师(签字): 日期: 年 月 日 基于 VC 的俄罗斯方块创业创新 知识管理Ahead Institute of software and Technology先锋软件学院毕业论文(设计)评阅表(指导教师、评阅人用)论文(设计)名称学生姓名 学号 指导教师或评阅人)姓名序号 评审项目 指标 满分 评分1 论文(设计)完成量 论文(设计)内容完成量,难易程度符合教学基本要求 202 调查与综合根据论文(设计)任务,能独立查阅文献资料和从事其它有关调研。有收集、
4、综合和正确利用各种信息的能力。203 论文(设计)质量文章切合选题,材料丰富、内容充实,观点明确、论据充分、论证严格,构思完整、层次分明、段落、论题间的衔接自然、舒展。文笔流畅、语言通顺、使用专业术语准确,图表清楚,符合要求。504 创新 有独特的见解,或有一定应用价值 10总分评语:(明确指出论文(设计)的调研论证材料收集是否适合论点要求、创新点、论文(设计)论证能力、写作水平,同时要明确指出论文(设计)的不足之处及改进方向。 ) 评阅人: 年 月 1创业创新 知识管理Ahead Institute of software and Technology摘 要俄罗斯方块是有史以来最伟大的游戏之
5、一。它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。俄罗斯方块举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似俄罗斯方块触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。俄罗斯方块是一款风靡全球的掌上游戏机和 PC 机游戏,它造成的轰动与创造的经济价值可以说是游戏史上的一件大事。它由俄罗斯人阿列克谢 帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排
6、列成完整的一行或多行并且消除得分。它看似简单却变化无穷,俄罗斯方块上手极其简单,但是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。相信大多数人都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机定时器控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作, (用信号和槽函数的关联来实现对按键事件的控制) 。然后程序根据这七种方块堆叠成各种不同的模型。
7、Qt 是诺基亚开发的一个跨平台的 C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。论文描述了游戏的历史,开发此游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,整个开发过程贯穿软件工程的知识体系。此次设计在 Linux 系统下,以 QT+Creator 为开发语言,使用 C+和 QT 库来进行游戏的设计与实现。关键词:游戏设计;算法;数组;事件2创业创新 知识管理Ahead Institute of software and Technology目 录摘 要1目 录2引 言 31 绪
8、 论 41.1电子 游戏 及其分 类 31.2 电子游戏发展现状 41.2.1 电子游戏在国外的发展现状42.可行性研究 .52.1 设计目的62.2 软件问题定义 62.3 可行性分析 63.概要设计.73.1 游戏设计方案的确定73.2 系统流程结构设计83.3 各个功能模块图设计 83.3.1 模型层功能模块图设计.83 3 2 试图层功能模块图设计 93.3.3 控制层功能模块设计 94.详细设计代码.10总 结 25致 谢 26参 考 文 献 273创业创新 知识管理Ahead Institute of software and Technology引 言游戏是人们活动中一项非常重要
9、的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般
10、用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在“联众俄罗斯方块“中,更有一些联众网络游戏所独有的魅力有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱。这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。谈到游戏软件, 大多数人都认为其神妙莫测, 高不可及。而一般游戏软件也确实具有很高的技术难度, 随着开发工具及软件开发方法学的不断发展
11、, 动手开发游戏也不是十分困难的。俄罗斯方块游戏是一种古老而又有趣的游戏, 游戏软件不计其数, 网上就有好多关于实现的复杂算法和设计, 其难度让一般初学者望而却步。本文利用数组作为方块的数据结构,提出一种用pascal语言实现的简易方法, 对初学者可仿此开发类似游戏, 并了解游戏软件的设计与开发过程。4创业创新 知识管理Ahead Institute of software and Technology1. 绪 论1.1 电子游戏及其分类电子游戏,也就是运行在家用电脑、家用电子游戏机或是掌中宝游戏机及街机上的电子游戏程序。电子游戏是一种结合剧情故事、美术、音乐、动画、程序等技术于一身的互动型娱
12、乐软件,涉及到多个行业。 从电子游戏的分类来看,有着多种分类方式。传统的游戏分类是按照游戏类型,将其分为即时战略游戏、第一人称射击游戏、角色扮演游戏、策略型游戏等类别。根据游戏运行平台的不同,可将电子游戏分为游戏机游戏、单机版 PC 游戏、互动电视游戏、在线游戏和手机游戏。此外,韩国政府将电子游戏业分为家用游戏机游戏、单机版 PC 游戏、网络游戏和街机游戏四大类。考虑到中韩游戏业比较接近,论文采用韩国的分类标准。 “网络游戏”也就是人们一般所指的“在线游戏” ,是指通过互联网进行的电脑游戏,通过人与人之间的互动达到交流、娱乐和休闲的目的。在互联网(局域网)技术出现之前,电子游戏都可以归于单机版
13、游戏,即“人机对战”游戏,或最多是双人对战游戏。而随着互联网技术的出现,通过连接游戏服务器,上百、上千、乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。从网络游戏的分类来看,目前业界还没有一个比较统一规范的分类。随着计算机设备和网络技术的发展,电子游戏在全球得到了迅猛的发展,取得了巨大的成功,已成为当今世界上不可缺少的精神粮食。1.2 电子游戏发展现状1.2.1 电子游戏在国外的发展现状电子游戏是最初产生于美国,1971 年,一个还在 MIT 就读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间 。可以说时至今日,电子游戏仍
14、然是外国的天下。美国至今仍是世界第一大游戏市场,它遵循的是以发行商为主的产业开发链模式,根据美国市场调查公司 NPD Group 调查统计,美国 2004 年游戏总销售金额(包括家用、掌上型主机及软件)为 99 亿5创业创新 知识管理Ahead Institute of software and Technology美元,占了全球游戏市场的 45%。其中游戏软件销售的具体数字是:视频游戏软件的销售额达 52 亿美元(1.6 亿套),PC 游戏软件销售额达 11 亿美元(4500 万套 ),掌机游戏销售额达 10 亿美元(4230 万套)。2004 年一共大约有 2.48 亿套游戏售出。据估计,
15、美国每个家庭平均购买过 2 部游戏 3。日本近 20 年来疯狂赚电子游戏的钱。从上世纪 60 年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过 30 多年的耕耘,终于把电子游戏这棵“摇钱树” ,培育成第一时尚娱乐产业,垄断全球业界长达 10 余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在 GDP 中占有 1/5 的举足轻重地位。日本游戏业在最辉煌的 1998 年,曾经占领全球电子游戏市场硬件 90%以上,软件 50以上。韩国号称世界上网络游戏产业最发达国家之一。迄今为止,国内网络游戏市场有超过 60%的产品来自韩国游戏软件开发商,韩国网络游戏使国内很多
16、游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的成功。 韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多市场培育方面的工作。韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是将、娱乐产业视为新的经济增长点,开始大力扶持。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了“富国兴邦”的重担。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏
17、产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。 在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。2可行性研究2.1 设计目的通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发俄罗斯方块游戏,使自己熟悉应6创业创新 知识管理Ahead Institute of software an
18、d Technology用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,初步掌握 MVC 这种设计模式,进一步巩固和加强自身对 j2se 基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。2.2 软件问题定义基本要求:本游戏开发的总体任务是实现游戏的可操作性,以及界面的美观性。整个开发过程遵循软件工程规范,采用 PASCAL 编程来实现界面以及事件的控制,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,通过菜单栏中的相应菜单选项实现游戏的开始、结束、变换方块、积分以及等级的功能。目标:通过本游戏的开发,主要实现游戏的可操作性以及
19、美观性,同时使自己对 PASCAL 语言的了解更进一层,为将来的实际工作打下坚实的基础。条件、假定和限制:由于知识以及能力的限制,本游戏所实现的功能不够强大,可对本游戏进行改善,从而增强游戏的功能。可行性研究的方法:通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。评价尺度:由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。2.3 可行性分析技术可行性:开发本游戏的编程语言有多种,考虑到自身对语言的掌握程度,选择 PASCAL语言进行游戏的开发,采用 PA
20、SCAL 编程来实现界面以及事件的控制。经济可行性:本游戏的开发旨在完成毕业设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行相应 JAVA 程序的手机便可,所以不用考虑到经济问题。社会可行性:本游戏的开发主要为了完成毕业设计,开发的主体是个人,不存在法律上的侵权行为,也不会为社会造成影响,这方面是完全可行的。7创业创新 知识管理Ahead Institute of software and Technology3 概要设计31 游戏设计方案的确定本游戏的设计采用 MVC 模式(Model -View -Controller) ,
21、即把本游戏的输入、处理、输出流程按照 Model、View、Controller 的方式进行分离,这样本游戏的设计被分成三个层模型层、视图层、控制层。MVC 模型图如下所示:8创业创新 知识管理Ahead Institute of software and Technology3 2 系统流程结构设计图形工厂类图形类障碍物类中央控制器处理按键事件处理逻辑显示面板显示生产3 3 各个功能模块图设计3.3.1 模型层(Model)功能模块图设计图形工厂图形障碍物生产图形下落产生障碍物触发按键事件9创业创新 知识管理Ahead Institute of software and Technology
22、3.3.2 视图层(View)功能模块设计游戏面板GamePanel方块的显示 障碍物的显示3.3.3 控制层(Controller)功能模块设计中央控制器Controller 类图形工厂生产图形显示面板显示图形和障碍物处理按键和鼠标事件10创业创新 知识管理Ahead Institute of software and Technology4 详细设计代码Tetris - a MIDletPascal implementation of a classic game.You are allowed to use this code free, change it on yourown wil
23、l, use it, distribute it etc., as long as you makeno profit out of it.program Tetris;const fieldWidth = 10;fieldHeight = 15;var gameField: array1fieldWidth, 1fieldHeight of integer;block: array14, 14 of integer;blockX, blockY: integer;blockSize: integer;screenWidth, screenHeight: integer;screenX, sc
24、reenY: integer;score: integer;time: integer;gameRunning: boolean;gameSpeedDelay: integer;pauseCommand, quitCommand, clickedCommand: command;gamePaused: boolean;procedure rotateRight; forward;function blockPositionValid: boolean; forward;11创业创新 知识管理Ahead Institute of software and TechnologywelcomeScr
25、een - display the wellcome screenprocedure welcomeScreen;vartextToDisplay : string;textXPos : integer;textYPos : integer;keyCode : integer;beginsetColor(255, 0, 255);fillRect(0, 0, screenWidth, screenHeight);setColor(0, 0, 255);setFont(FONT_FACE_PROPORTIONAL, FONT_STYLE_BOLD, FONT_SIZE_LARGE);textTo
26、Display := Tetris;textXPos := (screenWidth - getStringWidth(textToDisplay) div 2; textYPos := (screenHeight - getStringHeight(textToDisplay) / 2;drawText(textToDisplay, textXPos, textYPos);textYPos := textYPos + getStringHeight(textToDisplay);setColor(0, 0, 0);setFont(FONT_FACE_PROPORTIONAL, FONT_ST
27、YLE_PLAIN, FONT_SIZE_SMALL); textToDisplay := Created with MIDletPascal;textXPos := (screenWidth - getStringWidth(textToDisplay) div 2;drawText(textToDisplay, textXPos, textYPos);textYPos := textYPos + getStringHeight(textToDisplay);textToDisplay := Press any key;textXPos := (screenWidth - getString
28、Width(textToDisplay) div 2;drawText(textToDisplay, textXPos, textYPos);repaint; wait until user presses any key repeatkeyCode := getKeyClicked; 12创业创新 知识管理Ahead Institute of software and Technologyuntil keyCode emptyCommand);if clickedCommand = quit thengameOver := true;elsegameOver := false;removeC
29、ommand(newGame);removeCommand(quit);end;setSizes - calculates the size of a single blockand the position of the game fieldprocedure setSizes;var blockWidth, blockHeight: integer;beginscreenWidth := getWidth;screenHeight := getHeight;blockWidth := screenWidth / fieldWidth;blockHeight := screenHeight
30、/ fieldHeight;if blockHeight blockWidth then blockSize := blockWidth;elseblockSize := blockHeight;screenX := (screenWidth - blockSize*fieldWidth) / 2;screenY := (screenHeight - blockSize*fieldHeight) / 2;end;14创业创新 知识管理Ahead Institute of software and TechnologyinitializeGameField - makes the game fi
31、eld emptyprocedure initializeGameField;var i, j:integer;beginfor i:=1 to fieldWidth dofor j:=1 to fieldHeight dogameFieldi, j := 0;end;drawScore - writes the score on the screen in blackprocedure drawScore;var stringWidth, stringHeight: integer;outputText: string;beginoutputText := Lines: + score;st
32、ringWidth := getStringWidth(outputText);stringHeight := getStringHeight(outputText);setFont(FONT_FACE_PROPORTIONAL, FONT_STYLE_PLAIN, FONT_SIZE_SMALL);setColor(0, 0, 0);drawText(outputText, (screenWidth - stringWidth) / 2,(screenHeight - stringHeight) / 2);end;drawBlock - draws a single game blockpr
33、ocedure drawBlock(col, row, color: integer);var red, green, blue: integer;begin set the color 15创业创新 知识管理Ahead Institute of software and Technologyif color = 1 then red := 255;if color = 2 then green := 255;if color = 3 then blue := 255;if color = 4 then begin red := 255; green := 255; end;if color
34、= 5 then begin red := 255; blue := 255; end;if color = 6 then begin green := 255; blue := 255; end;if (color 0) and (row 0) and (col 0 thengameFieldi + blockX, j + blockY := blocki, j;end; check if any lines can be removed removeFullLines;blockX := (fieldWidth - 4) / 2;blockY := fieldHeight - 4; cre
35、ate the new block createNewBlock; check if the block can be placed on the screen if not blockPositionValid thengameRunning := false;end;blockPositionValid - returns true if theblocks current position is OK. If the blocks current position is not OK because20创业创新 知识管理Ahead Institute of software and Te
36、chnologythe block overlaps with other elements orbecause it is out of the game are, return false;function blockPositionValid: boolean;var i, j: integer;x, y: integer;beginblockPositionValid := true;for i:=1 to 4 dofor j:=1 to 4 dobeginif blocki, j 0 then blockPositionValid := false;end;end;end;rotat
37、eLeft - rotates a block to the leftprocedure rotateLeft;var i, j, t: integer;begin transpose the block for i:=1 to 4 dofor j:=i to 4 dobegint := blocki, j;blocki, j := blockj, i;blockj, i := t;21创业创新 知识管理Ahead Institute of software and Technologyend; do the vertical mirror transformation for i:=1 to
38、 4 dobegint := blocki, 1;blocki, 1 := blocki, 4;blocki, 4 := t;t := blocki, 2;blocki, 2 := blocki, 3;blocki, 3 := t;end;if not blockPositionValid then rotateRight;elseredrawGameScreen;end;rotateRight - rotates a block to the rightprocedure rotateRight;var i, j, t: integer;begin transpose the block f
39、or i:=1 to 4 dofor j:=i to 4 dobegint := blocki, j;blocki, j := blockj, i;blockj, i := t;end; do the horizontal mirror transformation for i:=1 to 4 dobegint := block1, i;block1, i := block4, i;22创业创新 知识管理Ahead Institute of software and Technologyblock4, i := t;t := block2, i;block2, i := block3, i;b
40、lock3, i := t;end;if not blockPositionValid then rotateLeft;elseredrawGameScreen;end;moveBlock - moves the block and checks if the blockcan be moved to the given positionprocedure moveBlock(deltaX, deltaY: integer);beginblockX := blockX + deltaX;blockY := blockY + deltaY;if not blockPositionValid th
41、enbeginblockX := blockX - deltaX;blockY := blockY - deltaY;if (deltaY gameSpeedDelay)or (currentTime - time) 0) then beginmoveBlock(0, -1);time := currentTime;end;end; main program - initialize the game, read the keyboard inputsand measure timings beginsetSizes;welcomeScreen;setDefaultFont;repeatini
42、tializeGameField;24创业创新 知识管理Ahead Institute of software and TechnologygameSpeedDelay := 500; 500 ms = 0.5 s score := 0;createNewBlock;blockX := (fieldWidth - 4) div 2;blockY := fieldHeight - 4;time := getRelativeTimeMs;gameRunning := true;redrawGameScreen;gamePaused := false;pauseCommand := createCo
43、mmand(Pause, CM_SCREEN, 1);quitCommand := createCommand(Quit, CM_EXIT, 1);addCommand(pauseCommand);addCommand(quitCommand);while gameRunning dobeginif (not isMidletPaused) and (not gamePaused) thenbeginprocessKeyActions;checkTime;end;clickedCommand := getClickedCommand;if clickedCommand = quitComman
44、d thenbegingameRunning := false;halt;end;if clickedCommand = pauseCommand thengamePaused := not gamePaused;end;removeCommand(pauseCommand);removeCommand(quitCommand);until gameOver;25创业创新 知识管理Ahead Institute of software and Technologyend评价尺度:由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。总 结游戏设计与实践是一项复杂而
45、且庞大的工作,在选题之后,我才意识到过程的艰难,因为以前从来26创业创新 知识管理Ahead Institute of software and Technology没有接触过游戏设计,刚开始时有点迷茫和彷徨。后来通过看书和在网上查找资料,逐渐找到了一些感觉,也依照资料自己动手编写了几个简单经典的游戏。本文仅以俄罗斯方块为例予以说明。本次设计让我初步懂得了电子游戏所涉及到的有关技术、方法,包括电子游戏分类、选题、构思等。并实现几个可演示的游戏软件,其中有很多应用了学习的相关技术,并且做到了图、文、声并茂,能实际演示。此次设计过程中印象最深的收获有:1、学到了很多新知识,并且对老知识进行了回顾。
46、经过长时间的学习,更进一步熟悉了 C+语言。2、通过不断上机实验,调试程序,总结经验,从对课题的不理解到能够开始动手去做,提出问题并自己想办法解决问题,自己多实践,所以增强了动手能力。3、提高了中、英文资料的检索能力。这次毕业设计过程中我查阅了很多资料,不但有图书馆的期刊、杂志、馆藏图书,还有网络中的电子文档、电子书籍、网页及下载的视频教学课程;不但有中文资料还有英文资料。这些资料,使我的眼界更开阔,对课题的认识更加深刻,编写程序的时候思路更加清楚,少走了很多弯路。但如果真的要从事游戏设计的工作,需要走的路还很长,即便是对于国际知名的大公司,也是在不断的探索和实践中前进。但这并不表明前途就是渺
47、茫的,通过这次实践,进行了一次从底而上和自上而下的归纳和演绎的过程,在变化多端的游戏面前,总算领悟了一点它的奥妙。内容繁复、采用的表现手段多姿多彩的游戏世界,即便是再复杂,也可以通过一定程度的归纳演绎得出适应其规则和表现的契合点。回顾这个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,使我受益非浅,同时也体验到了搞软件开发的困难度。在这次设计的同时,我又从中学到了许多东西。但由于我对这样的软件开发还只是一个开始,了解的不多,这其中或许还有很多的不足,有些模块做得不是很好,有些功能还不能够完全的实现,如不能把要装载的方块提前显示出来。因此做得不是很好,界面的设计及整体的布局还比较简单,没有突出特色出来,这也可能是我这个系统的不足之处。27