档案数字化工程的总体设计和实现的功能说明

时间:2019-05-14 11:52:25下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《档案数字化工程的总体设计和实现的功能说明》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《档案数字化工程的总体设计和实现的功能说明》。

第一篇:档案数字化工程的总体设计和实现的功能说明

档案数字化总体设计和实现功能的说明

1、档案数字化的含义

档案数字化是指利用计算机技术、扫描技术、数字成像技术、数据库技术、多媒体技术、存储技术等高新技术把各种载体的档案资源转化为数字化的档案信息,以数字化的形式存储、网络化的形式互相联结,利用计算机系统进行管理,形成一个有序结构的档案信息库,及时提供利用,实现资源共享,是档案信息化建设的重要内容。目前,大多数档案馆保存的档案信息形态主要以纸质、缩微胶片和底片等载体形式存在,只适应于传统的管理与传播方式,即实施手工管理和以点到点的传播,即便是经过编研等初步加工,编辑印发档案资料,实现以点到面的传播,其覆盖面也还是太小,很难达到社会化程度。档案信息资源的经济价值和社会价值也难以充分实现,更难适应当代“数字化生存”的形势。档案原件数字化,对档案信息的现代化管理、使用和传播等都具有很重要的作用。

2、档案数字化的主要内容

①利用我司先进的计算机研发能力和核心技术人员对档案目录的数字化,建立档案目录数据库。目录数据库一旦建成,可不分地区,不分时区,在任何情况下被授权人员可进行方便,快捷的操作。

②各型载体档案的数字化,如纸质档案、照片档案及录音录像档案等的数字化,建立档案影像数据库或多媒体数据库。影像数据库等流煤体不再象传统纸质档案,占用大量资源,可轻松实现存储,传送,从而提高档案检索,查阅,打印,下载等效率。

3、档案数字化总体设计

需求分析与设备考察阶段:调查馆局档藏情况和存放情况,包括档案的类型、载体形态与状态、馆藏数量等基本情况。根据馆藏情况制订档案数字化的科学规划,确定项目要求,根据需求考察当前各种高速扫描系统的集成解决方案。在需求分析阶段我们特别注意这么几个问题: a、档案数字化设备配置计划的成套性。b、档案数字化设备的配套性,也就是文档扫描仪和数字照相机优缺点对比,通过不断的实践,我们觉得数字照相机更加适应我们的工作。c、档案数字化项目硬件与软件的集成性。d、档案数字化方案与业主需求的适应性。总之,考虑到档案信息数字化要经过一个较长的过程,因此我们从实际需要和长远打算出发,力求确保电脑、照相机、操作人员等设施人员数量的成龙配套,使其具有较强的支撑能力和扩展能力。

系统实验阶段:2015年初,项目方开始招标。我司按要求进行政府投标,中标后我方领导核心与技术人员立即与项目方管理团队进行业务沟通,确定业主方实际的需求组织业务、然后成立睢宁县国土资源局档案数字化项目部,以我院领导为核心、技术骨干为具体实施人员,正式开始实验阶段的工作,新购进了12台电脑微机,5台高性能A3平板激光扫描仪,一台工作站服务器,设备安装调试完毕。技术部研发人员在与睢宁县国土资源局领导沟通后,确定在档案前期整理拆卷、档案扫描、质量检查、扫描文件管理、后期装订挂接等全过程的协调配合问题,并探讨在高速系统下如何解决某些技术问题。有效测试后,对整体系统流程和配套软件、数据库的性能有更进一步的了解,在项目的运作模式和系统管理等方面积累了更深的经验,同时,也锻炼了一支技术过硬的队伍,为系统的正式运行打下了基础。

项目实施阶段:本项目是一个长期、流程化运作的系统,从建立开始就必须确保能长期高速、稳定运行。在系统的开发与研究方面有一个时间周期,现把工作计划分为以下几个阶段: ①、系统总体方案框架设计:

2014年12月—2015年01月,完成系统总体框架,生成详细可行性分析报告,及相关配套业务标准、各类管理制度。②、系统建立:

2014年12月—2015年01月,系统建立,包括:硬件配置及软件的开发。③、系统试运行:

2015年1月—2015年1月。④、系统正式运行:

2015年2月起,系统正式运行。

4、档案数字化实现的功能

①档案数字化是档案信息化建设重要内容。档案信息化建设的核心是资源建设。资源建设包括两大方面任务:一是现有馆藏档案的目录数据库建设和馆藏重要纸质档案和照片、录音、录像档案的数字化;二是现行电子文件归档与电子档案管理。

②档案数字化能有效地保护档案原件。⑴、代替原件使用,保护档案原件。⑵、数字化副本异地保存,输出磁盘、磁带供永久保存。这样可使这些档案资料在出现天灾人祸的情况下不致于遭到毁灭性的破坏。⑶、恢复档案材料模糊褪变的字迹及对污损残缺照片档案的修复。

③档案数字化能改善档案的利用方式。⑴不再受“孤本”的限制,一份文件可以同时提供给所有需要它的人共享。⑵数字影像文件可以通过计算机局域网或者广域网进行异地传输,使异地调阅利用成为可能。扩大了档案的利用空间,让更多的人们来了解档案,利用档案。⑶“时间”不再受限制,利用者可以随时使用自己需要的文件。档案数字化以后,将已开放的档案上网,这样所有利用者就可以在任何时间上网利用档案信息资源。

④档案数字化是传统档案馆走向数字档案馆的必经之路。数字档案馆无疑是21世纪各级各类档案馆的发展方向。尽管当前它的具体组成结构、组织管理模式还处于探索之中,可其“馆藏”的数字化特征是肯定的,传统档案的数字化将是其“馆藏”的重要组成部分。

第二篇:五子棋游戏总体设计与实现

4.系统总体设计与实现

4.1 总体设计分析

总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,科学合理地进行物理模型的设计。这个阶段的主要目标是将反映用户信息需求的逻辑方案转换成物理方案,并为下一阶段提供必要的技术资料。

4.1.1 总体设计原则

(1)整体性:软件是作为统一整体而存在的。因此,在总体设计中要从整个软件的角度进行考虑。

(2)灵活性:为保持软件长久的生命力,要求该手机游戏软件具有很强的环境适应性。为此,游戏软件应具有较好的开放性和结构的可变性。

(3)可靠性:可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复能力。

(4)经济性:经济性是指在满足游戏软件需求的前提下,尽可能地减小游戏软件的开销。

4.1.2 软件模块总体设计

软件中各模块之间的关系通常利用层次图来表示。它是一种一系列多层次的用树形结构的矩形框描绘数据的层次结构框图。一个单独的矩形框作为树形结构的顶层,各个数据的子集由下面的各层矩形框代表,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素),它代表完整的数据结构。这模式非常适合于需求分析阶段的需要,层次方框图对数据结构描绘随着结构精细化也越来越详细。反复细化沿着图中每条路径,从对顶层信息的分类开始,直到确定了数据结构的全部细节为止。

开始游戏重新游戏游戏选项悔棋认输五子棋游戏背景音乐退出游戏先后手设置游戏设置棋盘底纹设置棋盘大小设置游戏帮助帮助关于 图4-1 游戏功能结构

本研究中将游戏软件分为三大模块,如图4-1所示,包括:游戏选项、游戏设置和帮助。按照在调研中搜集的资料对每个模块的功能进行编排制作。依据上述功能的分析,本研究中,将游戏软件在三大模块的基础上又对每一大模块又分为几个子模块:

游戏选项包括六个模块:开始游戏、重新游戏、悔棋、认输、背景音乐和退出游戏。

游戏设置包括三个模块:先后手设置、棋盘底纹颜色设置和棋盘大小设置。

帮助包括两个模块:游戏帮助和关于。

4.2 游戏设计

4.2.1 游戏前的准备

本游戏在开发之前需要做一些前期准备工作,尤其是对于精通五子棋游戏的Java 游戏开发者来说。通常情况下,一款运用起来比较熟练地 J2ME 开发工具

是必不可少的。本游戏使用的是J2ME的简化开发工具 Sun Java(TM)Wireless Toolkit 2.5.2 for CLDC,他需先将Java虚拟机安装调试好之后才能使用。WTK 2.5.2 不带有文本编辑功能,所以需要另寻搭配使用。本游戏采用 Ultra Edit 进行编辑。本游戏需要几张后缀名为.png格式的卡通图,除了一张用作五子棋游戏的 Logo 外,其余的都将在游戏中使用。4.2.2 游戏界面和事件驱动设计

游戏的界面设计采取传统游戏界面风格,如图4-2所示。游戏设计中采用传统界面游戏风格,首先启动游戏,然后进入游戏开始界面,界面中放置“设置”、“开局”、“帮助”、“关于”四个选项供玩家选择。其中“设置”选项主要是对游戏的相关功能进行设置,如游戏难度设置。另外还有“悔棋”、“重玩”等项目的设置。除此之外还包括查看游戏帮助、游戏介绍等。

图4-2 游戏界面设计

所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数)。当然事件不仅限于用户的操作。我们知道,事件是事件驱动的核心自然是。从事件角度说,一个事件收集器、一个事件发送器和一个事

件处理器组成了事件驱动程序的基本结构。事件收集器专门负责收集包括来自硬件的(如时钟事件等)、来自用户的(如键盘、鼠标事件等)及来自软件的(如应用程序本身、操作系统等)的所有事件。将收集器收集到的事件分发到目标对象中则由事件发送器负责完成。具体的事件响应工作则由事件处理器完成,它需要运用虚函数机制(函数名取为类似于 Handle Msg 的一个名字),它往往要到实现阶段才完全确定。事件处理器对于框架的使用者来说是他们唯一能够看到的。棋类游戏通常具备两个重要特性,首先是对战双方轮流落子,其次是落子间隔通常是不确定的,尤其是对战后期,可能每一步棋都要经过深思熟虑,无论是人还是计算机,都无法对时间间隔有事先的预期。基于以上两个特性,本游戏摒弃了大多数游戏采用的线程或定时器驱动游戏的方法,而采用了事件驱动的方法,即玩家的键盘或触摸笔触发游戏的下一个动作。事件驱动大大减少了不必要的工作量,只有玩家发出消息时,计算机才启动运算,而在玩家思考期间,计算机不做任何运算和重绘操作。4.2.3 游戏的类设计

五子棋游戏属于二维棋类游戏,因此可以定义一个 Chesses 类来表示棋子,用一个 Chess 类型的二维数组来包含棋盘上的所有棋子,对于该棋子玩家的区分使用Chesses 的 boolean 型的变量 is Player1 来区分。可以考虑直接生成数组的每一个对象而不是在数组建立后,而是把每一个棋子对象(Chesses)放在游戏的进行中生成,这主要是考虑到移动设备的资源有限,尽可能减少系统资源占用。这样在游戏进行时,可以避免还没有下的棋子在一开始就占用了系统内存,玩家每下一步棋,在数组相应位置生成该棋子的对象。

对于游戏中的每一类的设计,首先就是一个 MIDlet 类,Gobang 类继承自MIDlet 类,通过方法 start App,pause App,destroy App 来通知游戏的开始,暂停和销毁结束,用于连接设备的应用程序管理器(Application Manager)。

本游戏共由7个类组成,它们各自的功能如下:

(1)Gobang MIDlet类

负责程序的启动和屏幕之间的切换;

(2)Gobang Canvas 类

玩家的对战平台,他继承于 Canvas 类;(3)Setting 类

用于创建游戏的各项设置参数表单;

(4)Gobang Logic 类

游戏的逻辑类,负责胜负判断和计算机落子;

(5)Dot 类

棋子类,包含了棋子的位置信息;(6)Help 类

游戏的帮助类,包含五子棋的一些常识信息和五子棋教学内容;(7)About类

游戏的关于类,包含游戏的版本、版权等信息。各个类之间的关系如图4-3所示:

图4-3游戏类设计

4.2.4 游戏的流程设计

对于棋盘界面的更新,游戏进行绘制棋子时是按照棋子的二维数组来完成的,玩家下棋后,设置is Player1 值,程序修改数组相应位置,然后重新绘制(repaint)。为了使游戏的操作尽可能的简便,本文设计上不在游戏进入时设计菜

单,玩家可以直接开始对战,而是在开始游戏的过程中设置重新开始和退出的按钮。即一键开始,运行即玩,重来或退出都使用一键操作。游戏流程的设计依据主要是游戏的界面设计和游戏的类的设计。游戏启动时,Gobang MIDlet 对象先显示游戏的主屏幕,在屏幕下方一侧是出软键(软键指描述抽象客户端设备如何显示),另一侧是用软件构成的菜单,菜单元素主要有“开局”、“游戏设置”、“游戏帮助”、“关于”选项。当玩家选择“游戏设置”软键时,则显示游戏参数设置表单;当玩家选择“开局”软键时,则显示游戏对战主界面;当玩家选择“游戏帮助”软键时,则显示游戏帮助表单;当玩家选择“关于”软键时,则显示游戏关于表单。玩家进入游戏参数设置表单,当玩家按下“确定”软键时,则确认当前游戏参数,返回游戏主屏幕;当玩家按下“取消”软键时,则放弃此次对游戏的修改,直接返回游戏主屏幕。玩家进入游戏对战画布,对战中画布有两个软键,当玩家按下“返回主菜单”软键时,则退出游戏到达游戏主菜单;当玩家按下“悔棋”软键时,则进行悔棋操作;当游戏结束时,“悔棋”软键被换成了“重玩”软键。玩家进入游戏介绍表单,当玩家按下“确定”软键时,返回游戏主屏幕。4.2.5 游戏算法的设计

1、五子棋的获胜组合

有哪些获胜组合是在一场五子棋的游戏中计算机必须要知道的,因此,获胜组合的总数必须要求得。在本文中我们假定当前的棋盘为15*15:

(1)每一列的获胜组合是11,共15列,计算水平方向的获胜组合数,所以水平方向的获胜组合数为:11*15=165。

(2)每一行的获胜组合是11,共15列,则可计算垂直方向的获胜组合总数,垂直方向的获胜组合数为:11*15=165。

(3)同理,可计算正对角线方向的获胜组合总数,正对角线上的获胜组合总数为11+(10+9+8+7+6+5+4+3+2+1)*2=121。

(4)计算反对角线上的获胜组合总数。计算反对角线方向的获胜组合总数可计算为11+(10+9+8+7+6+5+4+3+2+1)*2=121。这样可计算得所有的获胜组合数为:165+165+121+121=572。

2、设计获胜棋型

通过上面的计算,一个15*15的屋子棋盘在此已经计算出了会有572中获胜方式,因此,我们就可以利用数组建立一些常规棋型,棋型的主要作用是:

(1)判断是否有任何一方获胜;

(2)根据当前格局判断最可能的落子方式。

然而在现实中,高手留给我们的经验就是把握前奏,如“冲四”、“活三”,除了“连五”以外,这些也是同向胜利的捷径。

3、攻击与防守

获胜棋型的算法是中性的,不区分计算机和玩家,这就涉及到攻击和防守何者优先的问题。而许多高手都认为五子棋的根本是“防守”,“攻击”是灵魂。进攻是取胜的手段,是防守的延续和发展。许多经验和研究表明,一个棋手只要掌握了全面的、基本的防守原理和技巧,就能和比自己棋力高一个等级的进攻型选手对抗,起码能立于不败之地。对手进过越偏激,则防守的效果越好。没有进攻的防守就像只开花不结果,没有实际意义,顽强的防守是反攻的前奏,没有进攻的延续,防守也失去了价值。而这缺一不可。根据以上原理,计算机在接受最佳的攻击位置之前,还要计算当前玩家的最佳攻击位置。如果玩家存在最佳攻击位置,那么计算机就将下一步的棋子摆在玩家的最佳攻击位置上以阻止玩家的进攻,否则计算机便将棋子下在自己的最佳攻击位置上进行攻击。

4、用到的典型算法(1)坐标变换算法

游戏的实质其实是对所下棋子的位置进行操作和判断,因此将己方、对方以及棋盘上空点的位置坐标存储在相应的List中。我对所下棋子的坐标进行了处理,因为我所采用的棋盘为15*15,所以棋子横坐标为0到14的整数,纵坐标也为0到14的整数。因此,每次在棋盘上下子之后,计算机在存储该点的坐标时,便要对坐标进行加工。假设左上角点为firstPoint,它的实际坐标为(x1,y1),而我是将它作为(0,0)存储的,其它的坐标,其它点都是以该点为标准进行变换的,假设棋盘上每个格子的宽度为w,某实际点为(x2,y2),变换后的坐标为(x,y),x=(x2-x1)/w,y=(y2-y1)/w。

(2)胜负判断算法

胜负判断的规则很简单,就是判断游戏双方的棋子在同一条水平线、同一条竖线或是同一条斜线上谁先出现5个连续的棋子,谁先达到这样的目标,谁就获得胜利。在本设计中,是在每次下完一个子后进行判断,看己方是否达到了胜利的标准,若胜利游戏便结束;否则,游戏继续。

(3)人工智能算法

人工智能算法的主体思想分为以下三个步骤:

第一步:根据双方的当前的形势循环地假设性的分别给自己和对方下一子(在某个范围内下子),并判断此棋子能带来的形势上的变化,如能不能冲4,能不能形成我方或敌方双3等。

第二步:根据上一步结果,组合每一步棋子所带来的所有结果(如某一步棋子可能形成我方1个活3,1个冲4(我叫它半活4)等),包括敌方和我方的。

第三步:根据用户给的规则对上一步结果进行排序,并选子(有进攻形、防守形规则)。

5、典型类的具体设计(1)应用程序类

Gobang 类用于连接设备的应用程序管理器(Application Manager),Gobang类继承自 MIDlet 类,通过 Gobang 类的方法 start App,pause App,destroy App 来通知游戏的开始,暂停和销毁结束。源代码如下:

package com.occo.j2me.game.gobang;import javax.microedition.lcdui.Display;

import javax.microedition.midlet.MIDlet;public class Gobang extends MIDlet

//定义游戏界面的 Canvas 类 Gobang Canvas 的对象 Gobang public { Gobang Canvas gobang;Gobang(){

super();

gobang=new Gobang Canvas(this);//生成 Gobang Canvas 类的对象 gobang

} protected void start App(){

Display.get Display(this).set Current(gobang);

} protected void pause App(){

} protected void destroy App(boolean arg0){

}} //在屏幕上绘出游戏见面 gobang(2)游戏界面类

Gobang Canvas 类继承自 Canvas,游戏的核心类是 Gobang Canvas 类,此类将完成游戏的绘图、互动、控制、逻辑、等所有功能,此类的框架代码如下:

Package com.occo.j2me.game.gobang;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.Canvas;

import javax.microedition.lcdui.Command Listener;public Gobang Canvas(Gobang gobang){

this.gobang=gobang;

}

protected void paint(Graphics g){

}

import javax.microedition.lcdui.Graphics;public class Gobang Canvas extends Canvas implements Command Listener{protected Gobang gobang;

public Gobang Canvas(){

}

}(3)棋子类

整个棋盘是一个 Chesses 类型的二维数组,棋盘上的每一个棋子都对应着一个Chesses 的对象,此类定义了一个棋子,源代码如下:

package com.occo.j2me.game.gobang;public Chesses(){

}

public class Chesses {boolean is Player1;

public Chesses(boolean is Player1){

this.is Player1=is Player1;

}}

4.3 游戏实现

4.3.1 主类的实现

YpkWuZiQiActivity类是五子棋游戏的主类,同时也是五子棋游戏的入口,它继承自Activity类。进入程序后,首先调用init()方法,init()方法通过调用setContentView(R.layout.welcomeview)显示登录该游戏的第一个界面。welcomeview.xml是一个布局文件,里面存储了界面信息。该界面中有四个Button,分别为welButton1、welButton12、welButton3、welButton4,点击每个Button都会触发一个事件,其中点击welButton1和welButton2还会给它的成员变量FIGHTINGMODE赋值,因为在人人对战和人机对战是写在同一个ChessBoard类中的,所以需要通过FIGHTINGMODE的值来区分是人人对战还是人机对战。

点击welButton1时,FIGHTINGMODE=1,然后会调用initTwo()方法,该方法通过调用setContentView(R.layout.chess)方法,来显示对战的界面。chess.xml文件存储了对战界面的信息。在chess.xml文件中调用了ChessBoard类,该类中主要定义了棋盘的信息,下文会对该类做具体的介绍的。在对战界面中也有四个Button,分别是b1、b2、b3、b4。

首先来介绍一下b2,该Button的功能是返回主页,调用init()方法就可以实现。b3的功能是重新开始,这个也只需要调用initTwo()方法。b3的功能是退出,调用了系统方法:System.exit(1)。下面重点介绍一下b1,该Button的功能是悔棋。该Button设定的点击事件详细内容如下:

b1.setOnClickListener(new OnClickListener(){ public void onClick(View v){ ChessBoard chess =(ChessBoard)findViewById(R.id.chess);Point temp = null;if(chess.whoRun == 1){

if(chess.firstPlayer.getMyPoints().size()>=1 &&chess.secondPlayer!=null){ temp=chess.secondPlayer.getMyPoints().get(chess.secondPlayer.getMyPoints().size()-1);

chess.secondPlayer.getMyPoints().remove(temp);chess.freePoints.add(temp);temp=chess.firstPlayer.getMyPoints().get(chess.firstPlayer.getMyPoints().size()-1);chess.firstPlayer.getMyPoints().remove(temp);chess.freePoints.add(temp);chess.freshCanvas();

}

} if(chess.whoRun == 2){ if(chess.firstPlayer.getMyPoints().size()>=1 && chess.secondPlayer!=null){ temp=chess.firstPlayer.getMyPoints().get(chess.firstPlayer.getMyPoints().size()-1);chess.firstPlayer.getMyPoints().remove(temp);chess.freePoints.add(temp);temp=chess.secondPlayer.getMyPoints().get(chess.secondPlayer.getMyPoints().size()-1);chess.secondPlayer.getMyPoints().remove(temp);chess.freePoints.add(temp);chess.freshCanvas();

} })首先获取ChessBoard对象,该对象继承自View,详细的定义了棋盘信息,主要负责显示棋盘的内容。接下来判断一下触发悔棋事件的是哪一个玩家,再判断是否符合悔棋的条件,这个条件很简单,就是棋盘上至少要有两个棋子。之后便进行悔棋操作,分别将两个玩家最后下的棋子取出,程序实现就是将两个ArrayList的最后一个元素remove出来,再分别放到记录棋盘中没有棋子的点的}

}

集合中,最后更新一下画布,主要是调用ChessBoard的invalidate()方法。通过以上步骤之后,呈现在我们面前的便是悔完棋的画面了。

点击welButton2时,FIGHTINGMODE=2,之后的步骤便会点击welButton1是相同的了,不同的是,由于对战模式的改变,从人人对战变成了人机对战。

点击welButton

3时,通

initThree()

用setContentView(R.layout.netchess)方法实现网络对战。详细的对战实现细节将会在下文一一介绍。在这个界面中只保留了两个Button:b2和b4。这两个Button所实现的功能和上面的b2和b4是相同的。

最后,welButton4比较简单。它所实现的功能为退出应用程序,调用System.exit(1)方法。4.3.2 游戏设置类的实现

游戏设置表单用来对游戏参数进行设置,包括棋盘大小、先手选择、智能级别。表单中使用了 Gauge 和 Choice Group 两种高级用户界面组件。

1、棋盘尺寸选择

标准的五子棋棋盘为 15*15,但为了满足不同玩家的需求,这里提供了大小为10*10 到 20*20 的棋盘,用户可以通过 Gauge 组件改变。棋盘的最小值为 10,而Gauge 组件的最小值为 0,所以当前的 Gauge 值需要角上 10 才是当前棋盘大小。创建 Gauge 组件的代码如下:

form = new Form(“ 游戏设置”);// 创建参数设置表单并添加标签 gauge Size = new Gauge(“棋盘规格: ” + board Size + “ X ” + board Size, true, 10, board Size-10);//棋盘规格

form.append(gauge Size);

图4-4 棋盘尺寸的设计

在Gauge交互模式下可以为Gauge对象所在的表单对象绑定一个Item State Listener 事件监听器,并在监听器上捕捉 Gauge 对象的事件,当 Gauge 的值发生变化时就会触发事件。这里将根据 Gauge 的当前值改变标签,显示当前的棋盘大小。其代码如下:

public void item State Changed(Item item){

if(item == gauge Size)//当 Gauge 组件发生变化时

{

int bs = gauge Size.get Value()+ 10;//获取当前的 Gauge 值并计算棋盘大小(加10)

gauge Size.set Label(“棋盘规格: ” + bs + “ X ” + bs);//改变 Gauge 组件的标签

}

}

2、难度选择

游戏的难易程度根据计算机的智能级别来控制,创建及添加选项的方法和复选框一样,所不同的是在创建 Choice Group 对象时,类型设置为 1(单选)。对于单选框,set Selected Index 只能用来指定某个选项被选中,因此,布尔值 selected 的值必然为 true,否则便没有意义。

游戏共有 3 个难度级别,分别是:拜师学艺、棋行天下、谁与争锋(此游戏中并未作出区分),初始情况下为拜师学艺,该选项的索引值为 0。创建难度选择单选框的代码如下:

level = 1;//默认情况下的难度级别

choicelevel = new Choice Group(“电脑智能级别:”, 1);//创建难度级别选项组 choicelevel.append(“拜师学艺”, null);//难度 1 choicelevel.append(“棋行天下”, null);//难度 2 choicelevel.append(“谁与争锋”, null);//难度 3

choicelevel.set Selected Index(level-1 , true);//设置默认情况为难度 1,索引值为0

form.append(choicelevel);//将选项组添加到主表单中

游戏设置选项表单还有两个 Command 对象,分别用于玩家却热和取消,所以表单需要监听软键事件和组件事件:

public class Setting implements Command Listener, Item State Listener

3、棋手选择

选择先手和难度等级用 Choice Group 组件来实现。Choice Group 组件用来构造选择框,其构造函数如下:

Choice Group(String label, int choice Type)选择先手的选项框为选择组件,属性为复选框,标签名为空。创建好选择组件后,逐条添加选项元素。添加选项的方法如下:

int append(String string Part, Image image Part)该方法追加一个选项元素到选择组中,追加的选项为选择组中的最后一个元素,选择组的大小加 1。

对于多选类型的 Choice Group,还可以设置个别选项的选择状态。设置初始选择状态的方法如下:

void set Selected Index(int element Num, Boolean selected)这里创建一个只有一个选项元素的多选框用于玩家设置是否计算机先行,在默认情况下为true,创建完成多选框后将其添加到主表单中,代码如下:

Computer First = true;//在默认情况下为计算机先行 choice First = new Choice Group(null, 2);//创建复选框 choice First.append(“电脑先手”, null);//添加选项元素

choice First.set Selected Index(0, Computer First);//设置多选框的默认状态 form.append(choice First);//将多选框添加到主表单中 4.3.3 棋子类的实现

1、棋子的行列位置

此五子棋游戏是一个二维棋类游戏,所以定了了一个 Dot 类来表示棋子。由于移动设备的局限性,所以程序不在下每一步棋时生成一个对象,而是在游戏进行时,玩家或者计算机没下一步棋,在数组相应位置生成该棋子的对象,而将已经下过的棋子保存到数组中随时检索,这样可以避免过多棋子对象占用系统内存。Dot 类的 UML 图如图 4-5 所示:

图4-5棋子行列设计

Dot 类主要有两个变量 row 和 col,分别表示行和列:

public int row;//行

public int col;//列

2、检查越位

棋子的位置并非是任意的,玩家和计算机每走一步棋之前都要线检查该位置的合法性,即棋子是否在棋盘上,否则判为无效落子。检查是否越界的代码如下:

public boolean is In Board(int board Size)//判断棋子是否越界(超出棋盘){ return row >= 0 && row < board Size && col >= 0 && col < board Size;}

3、修改棋子位置

在创建好 Dot 对象后,Dot 类提供了两种方法更改棋子位置,包括设置行列位置和从已有棋子中复制参数。

public void set Row Col(int r, int c)//设置棋子位置

{

row = r;col = c;

}

public void copy From(Dot d)//复制已有的棋子

{

row = d.row;

col = d.col;

} 4.3.4 对战逻辑类的实现

1、建立数据结构

本程序以数组保存当前盘面的情况,每个位置可能有三种状态:空、玩家的落子、计算机的落子,分别用 0、1、2 来表示。代码如下:

public static int PLAYER_NONE = 0;//该位置为空

public static int PLAYER_COMPUTER = 1;//该位置有电脑的落子

public static int PLAYER_HUMAN = 2;//该位置有玩家的落子

棋盘在初始情况下为空,即棋子上没有任何棋子,在Gobang Logic类的构造函数中对棋盘进行初始化:

table = new int[board Size][board Size];//创建棋盘数组 for(int r = 0;r < board Size;r++){

for(int c = 0;c < board Size;c++)

table[r][c] = 0;//初始化盘面为空 }

除了记录棋盘上每个位置的落子状态外,程序还将对每种状态的位置个数进行统计,以对算法进行简化。对三种状态的统计存储在整型数组中,该数组为全局变量。

private int player Counter[];

在 Gobang Logic 类的构造函数中对三种状态的计数进行初始化,即棋盘上都是空、计算机的落子或玩家的落子状态的个数为 0,在数据结构上,把空也当做某一特殊玩家。

初始化代码如下:

player Counter = new int[3];//落子状态计数器

player Counter[0] = board Size * board Size;//整个棋盘都是空的状态 player Counter[1] = 0;//电脑落子0 player Counter[2] = 0;//玩家落子0

2、落子和悔棋

这里使用了一个 Dot 类棋子对象来记录最后一步棋的位置,当玩家下了一步棋后需要将上一步重新绘制,以消除旗子上的引导框。另外,还是用了堆栈来存储最近的几步落子,以便玩家悔棋。

private Dot last Dot;//棋子对象,存储最后一步落子 private Stack steps;//棋子对象的堆栈

最后一步棋子和棋子堆栈在 Gobang Logic 类的构造函数中进行初始化;

last Dot = new Dot(board Size);//创建棋子对象用来存储最后一步棋,初始化

位置为棋盘中央steps = new Stack();//堆栈对象,用来存储最近的几部棋在棋盘上落子的代码如下:

private void go At(int row, int col, int player)//电脑或人在 row、col 位置上走

{

int last Row = last Dot.row;//记录上一步的行坐标

int last Col = last Dot.col;//记录上一步的列坐标

table[row][col] = player;//当前位置填充玩家代码

last Dot.set Row Col(row, col);//将这一部设置为“最后一步”

game Canvas.repaint At(last Row, last Col);//重新绘制上一步(将引导框去掉)

game Canvas.repaint At(row, col);//绘制当前这步

switch(player)//统计双方落子数量

{

case 1:

player Counter[1]++;//电脑的步数

break;

case 2:

player Counter[2]++;//玩家的步数

break;

}

player Counter[0]--;//空白的个数

if(steps.size()> 10)//堆栈数量超过上限(10)

steps.remove Element At(0);//清除栈底

steps.push(new Dot(row, col));//将当前这步棋子压入堆栈

}

Stack(堆栈类)从 Vector 集成而来,它使用 push()方法进入堆栈,需要时使用 pop()方法从堆栈的顶部将其取出。悔棋动作由玩家做出,从数据结构来看,是同时后退两步(将最后两步棋位置的落子状态设置为空)。

Stack 类的 peek()方法将获取栈顶对象,但不移。悔棋代码如下: :

public boolean undo()//悔棋

{

if(steps.size()>= 3)

{

Dot d = new Dot();//创建棋子对象

d.copy From((Dot)steps.pop());//从堆栈弹出的棋子中复制行列位置坐标

table[d.row][d.col] = 0;//将该位置设置为空

game Canvas.repaint At(d.row, d.col);//在棋盘上重新绘制该位置

d.copy From((Dot)steps.pop());//从堆栈弹出的棋子中复制行列位置坐标

table[d.row][d.col] = 0;//将该位置设置为空

game Canvas.repaint At(d.row, d.col);//在棋盘上重新绘制该位置

d.copy From((Dot)steps.peek());//获取栈顶对象,作为最后一步棋存储 last Dot.copy From(d);

game Canvas.repaint At(d.row, d.col);//重新绘制最后一步(添加引导框)return true;//悔棋成功

}

else

{

return false;

//悔棋失败

}

} 4.4 本章小结

本章主要内容是游戏的实现,包括主类的实现,如构造函数、事件处理等,游戏帮助和介绍表单类的实现,游戏设置类的实现,如棋盘、选手、难度等,旗子类的实现,如棋子行列位置、检查越界等,对战逻辑类的实现,如落子和悔棋、逻辑运算等的实现。

第三篇:总体设计理念的说明

总体设计理念的说明

——文化广场设计

1、项目背景

该市是我国对俄罗斯贸易第二大口岸,该市被自然地形和铁路、公路划分为四个等组团。该区目前是城乡接合部,有大量农民住宅,总归对其的定位是城市新区,承担文体中心的职能。该小区及其所位于新区临河地带,西侧、南侧边界为城市规划次干道,是临河坡度较为平缓的区域,所处地块总用地93.57公顷。

2、方案定位

有利于促进城市发展,提升城市形象,有利于展示和传承历史文化,有利于生态环境和生存条件,在这三个有于的条件下着力打造具有综合性功能的文化广场。本方案将广场定位为具 有时代特色和地域特色,反映城市历史,满足集会、市民休息、娱乐等综合性城市开放空间。

3、规划原则

(1.)文化原则:广场设计应力求挖掘本地深厚的文化底蕴和历史背景,并体现新时代城市的形象。

(2.)以人为本:设计应体现以人为本的原则。营造良好的环境效果,为人们提供舒适、多样性的活动空间。广场空间应能满足人的多维感受,并进行无障碍设计。

(3.)生态原则:充分考虑当地气候特征,并评估周边地区环境特征,实现人与自然,广场和区域的和皆共生。

(4.)可持续性发展原则:广场设计为将来预留发展空间,并能与全局协调。

(5.)经济原则:生态方法就是最经济的方法,运用生态方法指导设计和实施,不但可以增加环境的多样性,也能增加建筑物的节能性及可行性,利用最少的资源和能源,得环境上、经济上和社会上最大的利益。

4、设计分析

设计构思依托地域特点,注重文化特质,丰富景观内涵,强调环境的融合和肌理的延续,确立城市形象设计概念,现代化城镇风貌。增强城市的识别性和标志性景观,设计的理念为和谐社会,通过对 道路,水景,小品等景观元素的重点处理,使景观设计与总体规划布局取得整合。而在设计手法上则体现出比较强烈的文化气息。

(1.)整个广场的设计以景观绿化为主导思想,构成开放的空间布局,又加以渊源流长的水系,使得整个广场既灵活,充满了现代气息,又蕴涵有丰富的历史文化;寓意开放、和谐的文化气息。

(2.)局部的设计是广场的点睛之笔。广场主入口处,以古典的铺装,给人以"家"的感觉.广场中心以雕塑为核心托历史文化,加以旱地喷泉,体现了既宁静又庄严的环境,在广场的里一个入口设计文化景墙,以缅怀历名人为主线与博物馆相呼应。各细部相结合整各广场给人们一个回味历史,展望未来的思索空间。

(3.)植物配置上,结合当地乡土树种并具代表性的树种,与周围建筑相结合,选取四季不同色调变化和光影效果的植物,合理布局:规则式的场景布局采用了规则式的绿地形式,并在规则式的绿地形式内协调布有小型自由种植,使整个广场统一,协调。通过对软环境(树木、水体、草皮)及硬环境(建筑物)的生态设计、创造出绿色开放空间,使自然与人工有机联系,将自然引入都市。

第四篇:总体设计文件修改说明及承诺书

总体设计文件修改说明及承诺书

我公司现申报“总体设计文件审查”,与已批准的设计方案相比,此次申报的设计文件审查有以下内容的修改,特此说明:

1、无修改,与设计方案一致。

2、修改内容如下(提供修改前后图纸对比):

为提高总体设计文件规划审核效率,本单位郑重作出以下承诺:

1、本单位已明确知晓本总体设计文件规划审核意见,并承诺在申请规划许可证前完成修改。若由于本单位在申请规划许可证前变更审核通过后的总体设计文件或未按审核意见要求进行修改,由此而引起的重新审图及审批时间延长等问题将由本单位负责。

2、本单位承诺提供的总体设计文件修改说明(较批准的设计方案)准确无误,没有遗漏。若由于规土部门按此审查通过总体设计文件规划审核后在规划许可证阶段又发现修改说明以外的新问题的,由此造成的图纸修改、重新审图及审批时间延长的,相关责任由本单位负责。

承诺单位(名称)

建设单位:(章)设计单位:(章)

日期:年月日日期:年月日

第五篇:关于数字化城管系统功能要求的说明

关于数字化城管系统功能要求的说明

一、城管通的功能

1、语音通话。要求在集团内部通话,限制外网电话的呼出和呼入。

2、实时对讲功能。要求实现集团内部的实时对讲功能。

3、GPS定位功能。要求在全市行政区范围内实现对城管通终端的实时定位、轨迹管理等功能,精确度达到5米以内。

4、数据、案件采集功能。在全市行政区域范围内实现数据采集功能,包括图片、文字等数据的双向传输。

二、系统平台的功能

1、GPS定位平台。要求对所有外勤人员的终端可以进行实时定位和轨迹管理,并实现自动报警功能;能够对定位数据进行分析和整理;设置考勤系统的查看和修改权限;可以定位案件发生地点。

2、数据采集和处理平台。要求实现与城管通终端图片和文字的双向传输功能;可以分析和整理采集到的所有数据,并对数据进行分类管理;可以对平台的其它终端进行任务派遣;可以处理其它终端反馈的处理结果。

3、综合评价平台。要求可以对平台的所有数据进行分析处理,形成综合评价体系。该体系包括案件处理评价、人员考勤的评价等。

4、监督指挥平台。要求对城管通终端实现文件、通知的发送;通过语音传送方式实现对所有外勤人员的调度和指挥;对案件的处理情况进行监督、审核并设置审查权限。

三、外部设备的功能要求

1、车载摄像头。要求可以实现图像本地存储、实时回传的功能;数据更新时间为15日—30日;可以调节摄像头的拍摄高度和角度。

2、车辆定位。要求对所有车辆能够实时定位,并实现轨迹管理;设置动态的行动范围,并对超范围进行自动报警。

下载档案数字化工程的总体设计和实现的功能说明word格式文档
下载档案数字化工程的总体设计和实现的功能说明.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    数字化城市的实现

    物联网使数字城市具有更丰富的内涵,实现城市信息的全面性、智能控制和处理。北京市东城区东花市街道以数字化城市为基础,引入物联网概念、技术、设备,为贯彻落实中央和北京市......

    日照:工程审批“一表通”实现数字化流转

    日照:工程审批“一表通”实现数字化流转“只要提交过的材料,都有备份,后面的环节他们就直接拿来用。”正在窗口申请办理项目的某公司人员兴奋地向记者介绍日照市建设工程审批“......

    档案情况说明范文大全

    档案情况说明 致:本人 ,身份证号码: ,档案现存放在(存档机构全称) 人才服务中心 。 请选择填写以下内容: □ 我已于 年 月 日领到 公司开具的调档函,承诺 年 月 日前将档案调入 公......

    档案整理说明

    必须准备三次以上道德讲堂 每次必须有通知、活动方案(流程、内容等)、主持词这三项活动方案就是 六个环节 唱一首歌、看一部短片、讲一个故事、诵一段经典、做一番点评、发一......

    档案说明

    《村党支部工作手册》填写注意事项1、手册中所有重复信息不得用··替代,需手写且不得复印2、有后备干部的村需填写后备干部详细信息,并填写村级干部“三荐两考”表原件。3、......

    数字化档案共享服务(大全)

    数字化档案共享服务工作探析 1、引言:近年来,随着计算机和网络的高速发展,人类社会已经进入数字化信息时代。越来越多的城建档案馆开展了档案数字化工作,将大量馆藏纸质档案加......

    审计档案的数字化

    审计档案的数字化 审计业务电子档案(以下简称电子档案)是审计档案的数字化形态。其制作过程大抵可以分为以下四个阶段:即资料收集整理阶段、资料数字化阶段、资料整理编辑阶段......

    档案数字化方案研究

    档案数字化方案研究 课题组 《档案数字化方案研究》项目对档案数字化优化策略与原则、技术路线与支持、流程重组与再造、操作方法与步骤进行了全面的研究,达到了档案数字化全......