欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      檔案數(shù)字化工程的總體設(shè)計(jì)和實(shí)現(xiàn)的功能說(shuō)明

      時(shí)間:2019-05-14 11:52:25下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《檔案數(shù)字化工程的總體設(shè)計(jì)和實(shí)現(xiàn)的功能說(shuō)明》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《檔案數(shù)字化工程的總體設(shè)計(jì)和實(shí)現(xiàn)的功能說(shuō)明》。

      第一篇:檔案數(shù)字化工程的總體設(shè)計(jì)和實(shí)現(xiàn)的功能說(shuō)明

      檔案數(shù)字化總體設(shè)計(jì)和實(shí)現(xiàn)功能的說(shuō)明

      1、檔案數(shù)字化的含義

      檔案數(shù)字化是指利用計(jì)算機(jī)技術(shù)、掃描技術(shù)、數(shù)字成像技術(shù)、數(shù)據(jù)庫(kù)技術(shù)、多媒體技術(shù)、存儲(chǔ)技術(shù)等高新技術(shù)把各種載體的檔案資源轉(zhuǎn)化為數(shù)字化的檔案信息,以數(shù)字化的形式存儲(chǔ)、網(wǎng)絡(luò)化的形式互相聯(lián)結(jié),利用計(jì)算機(jī)系統(tǒng)進(jìn)行管理,形成一個(gè)有序結(jié)構(gòu)的檔案信息庫(kù),及時(shí)提供利用,實(shí)現(xiàn)資源共享,是檔案信息化建設(shè)的重要內(nèi)容。目前,大多數(shù)檔案館保存的檔案信息形態(tài)主要以紙質(zhì)、縮微膠片和底片等載體形式存在,只適應(yīng)于傳統(tǒng)的管理與傳播方式,即實(shí)施手工管理和以點(diǎn)到點(diǎn)的傳播,即便是經(jīng)過(guò)編研等初步加工,編輯印發(fā)檔案資料,實(shí)現(xiàn)以點(diǎn)到面的傳播,其覆蓋面也還是太小,很難達(dá)到社會(huì)化程度。檔案信息資源的經(jīng)濟(jì)價(jià)值和社會(huì)價(jià)值也難以充分實(shí)現(xiàn),更難適應(yīng)當(dāng)代“數(shù)字化生存”的形勢(shì)。檔案原件數(shù)字化,對(duì)檔案信息的現(xiàn)代化管理、使用和傳播等都具有很重要的作用。

      2、檔案數(shù)字化的主要內(nèi)容

      ①利用我司先進(jìn)的計(jì)算機(jī)研發(fā)能力和核心技術(shù)人員對(duì)檔案目錄的數(shù)字化,建立檔案目錄數(shù)據(jù)庫(kù)。目錄數(shù)據(jù)庫(kù)一旦建成,可不分地區(qū),不分時(shí)區(qū),在任何情況下被授權(quán)人員可進(jìn)行方便,快捷的操作。

      ②各型載體檔案的數(shù)字化,如紙質(zhì)檔案、照片檔案及錄音錄像檔案等的數(shù)字化,建立檔案影像數(shù)據(jù)庫(kù)或多媒體數(shù)據(jù)庫(kù)。影像數(shù)據(jù)庫(kù)等流煤體不再象傳統(tǒng)紙質(zhì)檔案,占用大量資源,可輕松實(shí)現(xiàn)存儲(chǔ),傳送,從而提高檔案檢索,查閱,打印,下載等效率。

      3、檔案數(shù)字化總體設(shè)計(jì)

      需求分析與設(shè)備考察階段:調(diào)查館局檔藏情況和存放情況,包括檔案的類型、載體形態(tài)與狀態(tài)、館藏?cái)?shù)量等基本情況。根據(jù)館藏情況制訂檔案數(shù)字化的科學(xué)規(guī)劃,確定項(xiàng)目要求,根據(jù)需求考察當(dāng)前各種高速掃描系統(tǒng)的集成解決方案。在需求分析階段我們特別注意這么幾個(gè)問(wèn)題: a、檔案數(shù)字化設(shè)備配置計(jì)劃的成套性。b、檔案數(shù)字化設(shè)備的配套性,也就是文檔掃描儀和數(shù)字照相機(jī)優(yōu)缺點(diǎn)對(duì)比,通過(guò)不斷的實(shí)踐,我們覺(jué)得數(shù)字照相機(jī)更加適應(yīng)我們的工作。c、檔案數(shù)字化項(xiàng)目硬件與軟件的集成性。d、檔案數(shù)字化方案與業(yè)主需求的適應(yīng)性??傊?,考慮到檔案信息數(shù)字化要經(jīng)過(guò)一個(gè)較長(zhǎng)的過(guò)程,因此我們從實(shí)際需要和長(zhǎng)遠(yuǎn)打算出發(fā),力求確保電腦、照相機(jī)、操作人員等設(shè)施人員數(shù)量的成龍配套,使其具有較強(qiáng)的支撐能力和擴(kuò)展能力。

      系統(tǒng)實(shí)驗(yàn)階段:2015年初,項(xiàng)目方開(kāi)始招標(biāo)。我司按要求進(jìn)行政府投標(biāo),中標(biāo)后我方領(lǐng)導(dǎo)核心與技術(shù)人員立即與項(xiàng)目方管理團(tuán)隊(duì)進(jìn)行業(yè)務(wù)溝通,確定業(yè)主方實(shí)際的需求組織業(yè)務(wù)、然后成立睢寧縣國(guó)土資源局檔案數(shù)字化項(xiàng)目部,以我院領(lǐng)導(dǎo)為核心、技術(shù)骨干為具體實(shí)施人員,正式開(kāi)始實(shí)驗(yàn)階段的工作,新購(gòu)進(jìn)了12臺(tái)電腦微機(jī),5臺(tái)高性能A3平板激光掃描儀,一臺(tái)工作站服務(wù)器,設(shè)備安裝調(diào)試完畢。技術(shù)部研發(fā)人員在與睢寧縣國(guó)土資源局領(lǐng)導(dǎo)溝通后,確定在檔案前期整理拆卷、檔案掃描、質(zhì)量檢查、掃描文件管理、后期裝訂掛接等全過(guò)程的協(xié)調(diào)配合問(wèn)題,并探討在高速系統(tǒng)下如何解決某些技術(shù)問(wèn)題。有效測(cè)試后,對(duì)整體系統(tǒng)流程和配套軟件、數(shù)據(jù)庫(kù)的性能有更進(jìn)一步的了解,在項(xiàng)目的運(yùn)作模式和系統(tǒng)管理等方面積累了更深的經(jīng)驗(yàn),同時(shí),也鍛煉了一支技術(shù)過(guò)硬的隊(duì)伍,為系統(tǒng)的正式運(yùn)行打下了基礎(chǔ)。

      項(xiàng)目實(shí)施階段:本項(xiàng)目是一個(gè)長(zhǎng)期、流程化運(yùn)作的系統(tǒng),從建立開(kāi)始就必須確保能長(zhǎng)期高速、穩(wěn)定運(yùn)行。在系統(tǒng)的開(kāi)發(fā)與研究方面有一個(gè)時(shí)間周期,現(xiàn)把工作計(jì)劃分為以下幾個(gè)階段: ①、系統(tǒng)總體方案框架設(shè)計(jì):

      2014年12月—2015年01月,完成系統(tǒng)總體框架,生成詳細(xì)可行性分析報(bào)告,及相關(guān)配套業(yè)務(wù)標(biāo)準(zhǔn)、各類管理制度。②、系統(tǒng)建立:

      2014年12月—2015年01月,系統(tǒng)建立,包括:硬件配置及軟件的開(kāi)發(fā)。③、系統(tǒng)試運(yùn)行:

      2015年1月—2015年1月。④、系統(tǒng)正式運(yùn)行:

      2015年2月起,系統(tǒng)正式運(yùn)行。

      4、檔案數(shù)字化實(shí)現(xiàn)的功能

      ①檔案數(shù)字化是檔案信息化建設(shè)重要內(nèi)容。檔案信息化建設(shè)的核心是資源建設(shè)。資源建設(shè)包括兩大方面任務(wù):一是現(xiàn)有館藏檔案的目錄數(shù)據(jù)庫(kù)建設(shè)和館藏重要紙質(zhì)檔案和照片、錄音、錄像檔案的數(shù)字化;二是現(xiàn)行電子文件歸檔與電子檔案管理。

      ②檔案數(shù)字化能有效地保護(hù)檔案原件。⑴、代替原件使用,保護(hù)檔案原件。⑵、數(shù)字化副本異地保存,輸出磁盤(pán)、磁帶供永久保存。這樣可使這些檔案資料在出現(xiàn)天災(zāi)人禍的情況下不致于遭到毀滅性的破壞。⑶、恢復(fù)檔案材料模糊褪變的字跡及對(duì)污損殘缺照片檔案的修復(fù)。

      ③檔案數(shù)字化能改善檔案的利用方式。⑴不再受“孤本”的限制,一份文件可以同時(shí)提供給所有需要它的人共享。⑵數(shù)字影像文件可以通過(guò)計(jì)算機(jī)局域網(wǎng)或者廣域網(wǎng)進(jìn)行異地傳輸,使異地調(diào)閱利用成為可能。擴(kuò)大了檔案的利用空間,讓更多的人們來(lái)了解檔案,利用檔案。⑶“時(shí)間”不再受限制,利用者可以隨時(shí)使用自己需要的文件。檔案數(shù)字化以后,將已開(kāi)放的檔案上網(wǎng),這樣所有利用者就可以在任何時(shí)間上網(wǎng)利用檔案信息資源。

      ④檔案數(shù)字化是傳統(tǒng)檔案館走向數(shù)字檔案館的必經(jīng)之路。數(shù)字檔案館無(wú)疑是21世紀(jì)各級(jí)各類檔案館的發(fā)展方向。盡管當(dāng)前它的具體組成結(jié)構(gòu)、組織管理模式還處于探索之中,可其“館藏”的數(shù)字化特征是肯定的,傳統(tǒng)檔案的數(shù)字化將是其“館藏”的重要組成部分。

      第二篇:五子棋游戲總體設(shè)計(jì)與實(shí)現(xiàn)

      4.系統(tǒng)總體設(shè)計(jì)與實(shí)現(xiàn)

      4.1 總體設(shè)計(jì)分析

      總體設(shè)計(jì)是軟件開(kāi)發(fā)過(guò)程中的另一個(gè)重要階段,在這一階段中將根據(jù)需求分析中提出的邏輯模型,科學(xué)合理地進(jìn)行物理模型的設(shè)計(jì)。這個(gè)階段的主要目標(biāo)是將反映用戶信息需求的邏輯方案轉(zhuǎn)換成物理方案,并為下一階段提供必要的技術(shù)資料。

      4.1.1 總體設(shè)計(jì)原則

      (1)整體性:軟件是作為統(tǒng)一整體而存在的。因此,在總體設(shè)計(jì)中要從整個(gè)軟件的角度進(jìn)行考慮。

      (2)靈活性:為保持軟件長(zhǎng)久的生命力,要求該手機(jī)游戲軟件具有很強(qiáng)的環(huán)境適應(yīng)性。為此,游戲軟件應(yīng)具有較好的開(kāi)放性和結(jié)構(gòu)的可變性。

      (3)可靠性:可靠性是指軟件抵御外界干擾的能力及受外界干擾時(shí)的恢復(fù)能力。

      (4)經(jīng)濟(jì)性:經(jīng)濟(jì)性是指在滿足游戲軟件需求的前提下,盡可能地減小游戲軟件的開(kāi)銷。

      4.1.2 軟件模塊總體設(shè)計(jì)

      軟件中各模塊之間的關(guān)系通常利用層次圖來(lái)表示。它是一種一系列多層次的用樹(shù)形結(jié)構(gòu)的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)框圖。一個(gè)單獨(dú)的矩形框作為樹(shù)形結(jié)構(gòu)的頂層,各個(gè)數(shù)據(jù)的子集由下面的各層矩形框代表,最底層的各個(gè)矩形框代表組成這個(gè)數(shù)據(jù)的實(shí)際數(shù)據(jù)元素(不能再分割的元素),它代表完整的數(shù)據(jù)結(jié)構(gòu)。這模式非常適合于需求分析階段的需要,層次方框圖對(duì)數(shù)據(jù)結(jié)構(gòu)描繪隨著結(jié)構(gòu)精細(xì)化也越來(lái)越詳細(xì)。反復(fù)細(xì)化沿著圖中每條路徑,從對(duì)頂層信息的分類開(kāi)始,直到確定了數(shù)據(jù)結(jié)構(gòu)的全部細(xì)節(jié)為止。

      開(kāi)始游戲重新游戲游戲選項(xiàng)悔棋認(rèn)輸五子棋游戲背景音樂(lè)退出游戲先后手設(shè)置游戲設(shè)置棋盤(pán)底紋設(shè)置棋盤(pán)大小設(shè)置游戲幫助幫助關(guān)于 圖4-1 游戲功能結(jié)構(gòu)

      本研究中將游戲軟件分為三大模塊,如圖4-1所示,包括:游戲選項(xiàng)、游戲設(shè)置和幫助。按照在調(diào)研中搜集的資料對(duì)每個(gè)模塊的功能進(jìn)行編排制作。依據(jù)上述功能的分析,本研究中,將游戲軟件在三大模塊的基礎(chǔ)上又對(duì)每一大模塊又分為幾個(gè)子模塊:

      游戲選項(xiàng)包括六個(gè)模塊:開(kāi)始游戲、重新游戲、悔棋、認(rèn)輸、背景音樂(lè)和退出游戲。

      游戲設(shè)置包括三個(gè)模塊:先后手設(shè)置、棋盤(pán)底紋顏色設(shè)置和棋盤(pán)大小設(shè)置。

      幫助包括兩個(gè)模塊:游戲幫助和關(guān)于。

      4.2 游戲設(shè)計(jì)

      4.2.1 游戲前的準(zhǔn)備

      本游戲在開(kāi)發(fā)之前需要做一些前期準(zhǔn)備工作,尤其是對(duì)于精通五子棋游戲的Java 游戲開(kāi)發(fā)者來(lái)說(shuō)。通常情況下,一款運(yùn)用起來(lái)比較熟練地 J2ME 開(kāi)發(fā)工具

      是必不可少的。本游戲使用的是J2ME的簡(jiǎn)化開(kāi)發(fā)工具 Sun Java(TM)Wireless Toolkit 2.5.2 for CLDC,他需先將Java虛擬機(jī)安裝調(diào)試好之后才能使用。WTK 2.5.2 不帶有文本編輯功能,所以需要另尋搭配使用。本游戲采用 Ultra Edit 進(jìn)行編輯。本游戲需要幾張后綴名為.png格式的卡通圖,除了一張用作五子棋游戲的 Logo 外,其余的都將在游戲中使用。4.2.2 游戲界面和事件驅(qū)動(dòng)設(shè)計(jì)

      游戲的界面設(shè)計(jì)采取傳統(tǒng)游戲界面風(fēng)格,如圖4-2所示。游戲設(shè)計(jì)中采用傳統(tǒng)界面游戲風(fēng)格,首先啟動(dòng)游戲,然后進(jìn)入游戲開(kāi)始界面,界面中放置“設(shè)置”、“開(kāi)局”、“幫助”、“關(guān)于”四個(gè)選項(xiàng)供玩家選擇。其中“設(shè)置”選項(xiàng)主要是對(duì)游戲的相關(guān)功能進(jìn)行設(shè)置,如游戲難度設(shè)置。另外還有“悔棋”、“重玩”等項(xiàng)目的設(shè)置。除此之外還包括查看游戲幫助、游戲介紹等。

      圖4-2 游戲界面設(shè)計(jì)

      所謂事件驅(qū)動(dòng),簡(jiǎn)單地說(shuō)就是你點(diǎn)什么按鈕(即產(chǎn)生什么事件),電腦執(zhí)行什么操作(即調(diào)用什么函數(shù))。當(dāng)然事件不僅限于用戶的操作。我們知道,事件是事件驅(qū)動(dòng)的核心自然是。從事件角度說(shuō),一個(gè)事件收集器、一個(gè)事件發(fā)送器和一個(gè)事

      件處理器組成了事件驅(qū)動(dòng)程序的基本結(jié)構(gòu)。事件收集器專門(mén)負(fù)責(zé)收集包括來(lái)自硬件的(如時(shí)鐘事件等)、來(lái)自用戶的(如鍵盤(pán)、鼠標(biāo)事件等)及來(lái)自軟件的(如應(yīng)用程序本身、操作系統(tǒng)等)的所有事件。將收集器收集到的事件分發(fā)到目標(biāo)對(duì)象中則由事件發(fā)送器負(fù)責(zé)完成。具體的事件響應(yīng)工作則由事件處理器完成,它需要運(yùn)用虛函數(shù)機(jī)制(函數(shù)名取為類似于 Handle Msg 的一個(gè)名字),它往往要到實(shí)現(xiàn)階段才完全確定。事件處理器對(duì)于框架的使用者來(lái)說(shuō)是他們唯一能夠看到的。棋類游戲通常具備兩個(gè)重要特性,首先是對(duì)戰(zhàn)雙方輪流落子,其次是落子間隔通常是不確定的,尤其是對(duì)戰(zhàn)后期,可能每一步棋都要經(jīng)過(guò)深思熟慮,無(wú)論是人還是計(jì)算機(jī),都無(wú)法對(duì)時(shí)間間隔有事先的預(yù)期。基于以上兩個(gè)特性,本游戲摒棄了大多數(shù)游戲采用的線程或定時(shí)器驅(qū)動(dòng)游戲的方法,而采用了事件驅(qū)動(dòng)的方法,即玩家的鍵盤(pán)或觸摸筆觸發(fā)游戲的下一個(gè)動(dòng)作。事件驅(qū)動(dòng)大大減少了不必要的工作量,只有玩家發(fā)出消息時(shí),計(jì)算機(jī)才啟動(dòng)運(yùn)算,而在玩家思考期間,計(jì)算機(jī)不做任何運(yùn)算和重繪操作。4.2.3 游戲的類設(shè)計(jì)

      五子棋游戲?qū)儆诙S棋類游戲,因此可以定義一個(gè) Chesses 類來(lái)表示棋子,用一個(gè) Chess 類型的二維數(shù)組來(lái)包含棋盤(pán)上的所有棋子,對(duì)于該棋子玩家的區(qū)分使用Chesses 的 boolean 型的變量 is Player1 來(lái)區(qū)分。可以考慮直接生成數(shù)組的每一個(gè)對(duì)象而不是在數(shù)組建立后,而是把每一個(gè)棋子對(duì)象(Chesses)放在游戲的進(jìn)行中生成,這主要是考慮到移動(dòng)設(shè)備的資源有限,盡可能減少系統(tǒng)資源占用。這樣在游戲進(jìn)行時(shí),可以避免還沒(méi)有下的棋子在一開(kāi)始就占用了系統(tǒng)內(nèi)存,玩家每下一步棋,在數(shù)組相應(yīng)位置生成該棋子的對(duì)象。

      對(duì)于游戲中的每一類的設(shè)計(jì),首先就是一個(gè) MIDlet 類,Gobang 類繼承自MIDlet 類,通過(guò)方法 start App,pause App,destroy App 來(lái)通知游戲的開(kāi)始,暫停和銷毀結(jié)束,用于連接設(shè)備的應(yīng)用程序管理器(Application Manager)。

      本游戲共由7個(gè)類組成,它們各自的功能如下:

      (1)Gobang MIDlet類

      負(fù)責(zé)程序的啟動(dòng)和屏幕之間的切換;

      (2)Gobang Canvas 類

      玩家的對(duì)戰(zhàn)平臺(tái),他繼承于 Canvas 類;(3)Setting 類

      用于創(chuàng)建游戲的各項(xiàng)設(shè)置參數(shù)表單;

      (4)Gobang Logic 類

      游戲的邏輯類,負(fù)責(zé)勝負(fù)判斷和計(jì)算機(jī)落子;

      (5)Dot 類

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

      游戲的幫助類,包含五子棋的一些常識(shí)信息和五子棋教學(xué)內(nèi)容;(7)About類

      游戲的關(guān)于類,包含游戲的版本、版權(quán)等信息。各個(gè)類之間的關(guān)系如圖4-3所示:

      圖4-3游戲類設(shè)計(jì)

      4.2.4 游戲的流程設(shè)計(jì)

      對(duì)于棋盤(pán)界面的更新,游戲進(jìn)行繪制棋子時(shí)是按照棋子的二維數(shù)組來(lái)完成的,玩家下棋后,設(shè)置is Player1 值,程序修改數(shù)組相應(yīng)位置,然后重新繪制(repaint)。為了使游戲的操作盡可能的簡(jiǎn)便,本文設(shè)計(jì)上不在游戲進(jìn)入時(shí)設(shè)計(jì)菜

      單,玩家可以直接開(kāi)始對(duì)戰(zhàn),而是在開(kāi)始游戲的過(guò)程中設(shè)置重新開(kāi)始和退出的按鈕。即一鍵開(kāi)始,運(yùn)行即玩,重來(lái)或退出都使用一鍵操作。游戲流程的設(shè)計(jì)依據(jù)主要是游戲的界面設(shè)計(jì)和游戲的類的設(shè)計(jì)。游戲啟動(dòng)時(shí),Gobang MIDlet 對(duì)象先顯示游戲的主屏幕,在屏幕下方一側(cè)是出軟鍵(軟鍵指描述抽象客戶端設(shè)備如何顯示),另一側(cè)是用軟件構(gòu)成的菜單,菜單元素主要有“開(kāi)局”、“游戲設(shè)置”、“游戲幫助”、“關(guān)于”選項(xiàng)。當(dāng)玩家選擇“游戲設(shè)置”軟鍵時(shí),則顯示游戲參數(shù)設(shè)置表單;當(dāng)玩家選擇“開(kāi)局”軟鍵時(shí),則顯示游戲?qū)?zhàn)主界面;當(dāng)玩家選擇“游戲幫助”軟鍵時(shí),則顯示游戲幫助表單;當(dāng)玩家選擇“關(guān)于”軟鍵時(shí),則顯示游戲關(guān)于表單。玩家進(jìn)入游戲參數(shù)設(shè)置表單,當(dāng)玩家按下“確定”軟鍵時(shí),則確認(rèn)當(dāng)前游戲參數(shù),返回游戲主屏幕;當(dāng)玩家按下“取消”軟鍵時(shí),則放棄此次對(duì)游戲的修改,直接返回游戲主屏幕。玩家進(jìn)入游戲?qū)?zhàn)畫(huà)布,對(duì)戰(zhàn)中畫(huà)布有兩個(gè)軟鍵,當(dāng)玩家按下“返回主菜單”軟鍵時(shí),則退出游戲到達(dá)游戲主菜單;當(dāng)玩家按下“悔棋”軟鍵時(shí),則進(jìn)行悔棋操作;當(dāng)游戲結(jié)束時(shí),“悔棋”軟鍵被換成了“重玩”軟鍵。玩家進(jìn)入游戲介紹表單,當(dāng)玩家按下“確定”軟鍵時(shí),返回游戲主屏幕。4.2.5 游戲算法的設(shè)計(jì)

      1、五子棋的獲勝組合

      有哪些獲勝組合是在一場(chǎng)五子棋的游戲中計(jì)算機(jī)必須要知道的,因此,獲勝組合的總數(shù)必須要求得。在本文中我們假定當(dāng)前的棋盤(pán)為15*15:

      (1)每一列的獲勝組合是11,共15列,計(jì)算水平方向的獲勝組合數(shù),所以水平方向的獲勝組合數(shù)為:11*15=165。

      (2)每一行的獲勝組合是11,共15列,則可計(jì)算垂直方向的獲勝組合總數(shù),垂直方向的獲勝組合數(shù)為:11*15=165。

      (3)同理,可計(jì)算正對(duì)角線方向的獲勝組合總數(shù),正對(duì)角線上的獲勝組合總數(shù)為11+(10+9+8+7+6+5+4+3+2+1)*2=121。

      (4)計(jì)算反對(duì)角線上的獲勝組合總數(shù)。計(jì)算反對(duì)角線方向的獲勝組合總數(shù)可計(jì)算為11+(10+9+8+7+6+5+4+3+2+1)*2=121。這樣可計(jì)算得所有的獲勝組合數(shù)為:165+165+121+121=572。

      2、設(shè)計(jì)獲勝棋型

      通過(guò)上面的計(jì)算,一個(gè)15*15的屋子棋盤(pán)在此已經(jīng)計(jì)算出了會(huì)有572中獲勝方式,因此,我們就可以利用數(shù)組建立一些常規(guī)棋型,棋型的主要作用是:

      (1)判斷是否有任何一方獲勝;

      (2)根據(jù)當(dāng)前格局判斷最可能的落子方式。

      然而在現(xiàn)實(shí)中,高手留給我們的經(jīng)驗(yàn)就是把握前奏,如“沖四”、“活三”,除了“連五”以外,這些也是同向勝利的捷徑。

      3、攻擊與防守

      獲勝棋型的算法是中性的,不區(qū)分計(jì)算機(jī)和玩家,這就涉及到攻擊和防守何者優(yōu)先的問(wèn)題。而許多高手都認(rèn)為五子棋的根本是“防守”,“攻擊”是靈魂。進(jìn)攻是取勝的手段,是防守的延續(xù)和發(fā)展。許多經(jīng)驗(yàn)和研究表明,一個(gè)棋手只要掌握了全面的、基本的防守原理和技巧,就能和比自己棋力高一個(gè)等級(jí)的進(jìn)攻型選手對(duì)抗,起碼能立于不敗之地。對(duì)手進(jìn)過(guò)越偏激,則防守的效果越好。沒(méi)有進(jìn)攻的防守就像只開(kāi)花不結(jié)果,沒(méi)有實(shí)際意義,頑強(qiáng)的防守是反攻的前奏,沒(méi)有進(jìn)攻的延續(xù),防守也失去了價(jià)值。而這缺一不可。根據(jù)以上原理,計(jì)算機(jī)在接受最佳的攻擊位置之前,還要計(jì)算當(dāng)前玩家的最佳攻擊位置。如果玩家存在最佳攻擊位置,那么計(jì)算機(jī)就將下一步的棋子擺在玩家的最佳攻擊位置上以阻止玩家的進(jìn)攻,否則計(jì)算機(jī)便將棋子下在自己的最佳攻擊位置上進(jìn)行攻擊。

      4、用到的典型算法(1)坐標(biāo)變換算法

      游戲的實(shí)質(zhì)其實(shí)是對(duì)所下棋子的位置進(jìn)行操作和判斷,因此將己方、對(duì)方以及棋盤(pán)上空點(diǎn)的位置坐標(biāo)存儲(chǔ)在相應(yīng)的List中。我對(duì)所下棋子的坐標(biāo)進(jìn)行了處理,因?yàn)槲宜捎玫钠灞P(pán)為15*15,所以棋子橫坐標(biāo)為0到14的整數(shù),縱坐標(biāo)也為0到14的整數(shù)。因此,每次在棋盤(pán)上下子之后,計(jì)算機(jī)在存儲(chǔ)該點(diǎn)的坐標(biāo)時(shí),便要對(duì)坐標(biāo)進(jìn)行加工。假設(shè)左上角點(diǎn)為firstPoint,它的實(shí)際坐標(biāo)為(x1,y1),而我是將它作為(0,0)存儲(chǔ)的,其它的坐標(biāo),其它點(diǎn)都是以該點(diǎn)為標(biāo)準(zhǔn)進(jìn)行變換的,假設(shè)棋盤(pán)上每個(gè)格子的寬度為w,某實(shí)際點(diǎn)為(x2,y2),變換后的坐標(biāo)為(x,y),x=(x2-x1)/w,y=(y2-y1)/w。

      (2)勝負(fù)判斷算法

      勝負(fù)判斷的規(guī)則很簡(jiǎn)單,就是判斷游戲雙方的棋子在同一條水平線、同一條豎線或是同一條斜線上誰(shuí)先出現(xiàn)5個(gè)連續(xù)的棋子,誰(shuí)先達(dá)到這樣的目標(biāo),誰(shuí)就獲得勝利。在本設(shè)計(jì)中,是在每次下完一個(gè)子后進(jìn)行判斷,看己方是否達(dá)到了勝利的標(biāo)準(zhǔn),若勝利游戲便結(jié)束;否則,游戲繼續(xù)。

      (3)人工智能算法

      人工智能算法的主體思想分為以下三個(gè)步驟:

      第一步:根據(jù)雙方的當(dāng)前的形勢(shì)循環(huán)地假設(shè)性的分別給自己和對(duì)方下一子(在某個(gè)范圍內(nèi)下子),并判斷此棋子能帶來(lái)的形勢(shì)上的變化,如能不能沖4,能不能形成我方或敵方雙3等。

      第二步:根據(jù)上一步結(jié)果,組合每一步棋子所帶來(lái)的所有結(jié)果(如某一步棋子可能形成我方1個(gè)活3,1個(gè)沖4(我叫它半活4)等),包括敵方和我方的。

      第三步:根據(jù)用戶給的規(guī)則對(duì)上一步結(jié)果進(jìn)行排序,并選子(有進(jìn)攻形、防守形規(guī)則)。

      5、典型類的具體設(shè)計(jì)(1)應(yīng)用程序類

      Gobang 類用于連接設(shè)備的應(yīng)用程序管理器(Application Manager),Gobang類繼承自 MIDlet 類,通過(guò) Gobang 類的方法 start App,pause App,destroy App 來(lái)通知游戲的開(kāi)始,暫停和銷毀結(jié)束。源代碼如下:

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

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

      //定義游戲界面的 Canvas 類 Gobang Canvas 的對(duì)象 Gobang public { Gobang Canvas gobang;Gobang(){

      super();

      gobang=new Gobang Canvas(this);//生成 Gobang Canvas 類的對(duì)象 gobang

      } protected void start App(){

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

      } protected void pause App(){

      } protected void destroy App(boolean arg0){

      }} //在屏幕上繪出游戲見(jiàn)面 gobang(2)游戲界面類

      Gobang Canvas 類繼承自 Canvas,游戲的核心類是 Gobang Canvas 類,此類將完成游戲的繪圖、互動(dòng)、控制、邏輯、等所有功能,此類的框架代碼如下:

      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)棋子類

      整個(gè)棋盤(pán)是一個(gè) Chesses 類型的二維數(shù)組,棋盤(pán)上的每一個(gè)棋子都對(duì)應(yīng)著一個(gè)Chesses 的對(duì)象,此類定義了一個(gè)棋子,源代碼如下:

      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 游戲?qū)崿F(xiàn)

      4.3.1 主類的實(shí)現(xiàn)

      YpkWuZiQiActivity類是五子棋游戲的主類,同時(shí)也是五子棋游戲的入口,它繼承自Activity類。進(jìn)入程序后,首先調(diào)用init()方法,init()方法通過(guò)調(diào)用setContentView(R.layout.welcomeview)顯示登錄該游戲的第一個(gè)界面。welcomeview.xml是一個(gè)布局文件,里面存儲(chǔ)了界面信息。該界面中有四個(gè)Button,分別為welButton1、welButton12、welButton3、welButton4,點(diǎn)擊每個(gè)Button都會(huì)觸發(fā)一個(gè)事件,其中點(diǎn)擊welButton1和welButton2還會(huì)給它的成員變量FIGHTINGMODE賦值,因?yàn)樵谌巳藢?duì)戰(zhàn)和人機(jī)對(duì)戰(zhàn)是寫(xiě)在同一個(gè)ChessBoard類中的,所以需要通過(guò)FIGHTINGMODE的值來(lái)區(qū)分是人人對(duì)戰(zhàn)還是人機(jī)對(duì)戰(zhàn)。

      點(diǎn)擊welButton1時(shí),F(xiàn)IGHTINGMODE=1,然后會(huì)調(diào)用initTwo()方法,該方法通過(guò)調(diào)用setContentView(R.layout.chess)方法,來(lái)顯示對(duì)戰(zhàn)的界面。chess.xml文件存儲(chǔ)了對(duì)戰(zhàn)界面的信息。在chess.xml文件中調(diào)用了ChessBoard類,該類中主要定義了棋盤(pán)的信息,下文會(huì)對(duì)該類做具體的介紹的。在對(duì)戰(zhàn)界面中也有四個(gè)Button,分別是b1、b2、b3、b4。

      首先來(lái)介紹一下b2,該Button的功能是返回主頁(yè),調(diào)用init()方法就可以實(shí)現(xiàn)。b3的功能是重新開(kāi)始,這個(gè)也只需要調(diào)用initTwo()方法。b3的功能是退出,調(diào)用了系統(tǒng)方法:System.exit(1)。下面重點(diǎn)介紹一下b1,該Button的功能是悔棋。該Button設(shè)定的點(diǎn)擊事件詳細(xì)內(nèi)容如下:

      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對(duì)象,該對(duì)象繼承自View,詳細(xì)的定義了棋盤(pán)信息,主要負(fù)責(zé)顯示棋盤(pán)的內(nèi)容。接下來(lái)判斷一下觸發(fā)悔棋事件的是哪一個(gè)玩家,再判斷是否符合悔棋的條件,這個(gè)條件很簡(jiǎn)單,就是棋盤(pán)上至少要有兩個(gè)棋子。之后便進(jìn)行悔棋操作,分別將兩個(gè)玩家最后下的棋子取出,程序?qū)崿F(xiàn)就是將兩個(gè)ArrayList的最后一個(gè)元素remove出來(lái),再分別放到記錄棋盤(pán)中沒(méi)有棋子的點(diǎn)的}

      }

      集合中,最后更新一下畫(huà)布,主要是調(diào)用ChessBoard的invalidate()方法。通過(guò)以上步驟之后,呈現(xiàn)在我們面前的便是悔完棋的畫(huà)面了。

      點(diǎn)擊welButton2時(shí),F(xiàn)IGHTINGMODE=2,之后的步驟便會(huì)點(diǎn)擊welButton1是相同的了,不同的是,由于對(duì)戰(zhàn)模式的改變,從人人對(duì)戰(zhàn)變成了人機(jī)對(duì)戰(zhàn)。

      點(diǎn)擊welButton

      3時(shí),通

      過(guò)

      initThree()

      調(diào)

      用setContentView(R.layout.netchess)方法實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)戰(zhàn)。詳細(xì)的對(duì)戰(zhàn)實(shí)現(xiàn)細(xì)節(jié)將會(huì)在下文一一介紹。在這個(gè)界面中只保留了兩個(gè)Button:b2和b4。這兩個(gè)Button所實(shí)現(xiàn)的功能和上面的b2和b4是相同的。

      最后,welButton4比較簡(jiǎn)單。它所實(shí)現(xiàn)的功能為退出應(yīng)用程序,調(diào)用System.exit(1)方法。4.3.2 游戲設(shè)置類的實(shí)現(xiàn)

      游戲設(shè)置表單用來(lái)對(duì)游戲參數(shù)進(jìn)行設(shè)置,包括棋盤(pán)大小、先手選擇、智能級(jí)別。表單中使用了 Gauge 和 Choice Group 兩種高級(jí)用戶界面組件。

      1、棋盤(pán)尺寸選擇

      標(biāo)準(zhǔn)的五子棋棋盤(pán)為 15*15,但為了滿足不同玩家的需求,這里提供了大小為10*10 到 20*20 的棋盤(pán),用戶可以通過(guò) Gauge 組件改變。棋盤(pán)的最小值為 10,而Gauge 組件的最小值為 0,所以當(dāng)前的 Gauge 值需要角上 10 才是當(dāng)前棋盤(pán)大小。創(chuàng)建 Gauge 組件的代碼如下:

      form = new Form(“ 游戲設(shè)置”);// 創(chuàng)建參數(shù)設(shè)置表單并添加標(biāo)簽 gauge Size = new Gauge(“棋盤(pán)規(guī)格: ” + board Size + “ X ” + board Size, true, 10, board Size-10);//棋盤(pán)規(guī)格

      form.append(gauge Size);

      圖4-4 棋盤(pán)尺寸的設(shè)計(jì)

      在Gauge交互模式下可以為Gauge對(duì)象所在的表單對(duì)象綁定一個(gè)Item State Listener 事件監(jiān)聽(tīng)器,并在監(jiān)聽(tīng)器上捕捉 Gauge 對(duì)象的事件,當(dāng) Gauge 的值發(fā)生變化時(shí)就會(huì)觸發(fā)事件。這里將根據(jù) Gauge 的當(dāng)前值改變標(biāo)簽,顯示當(dāng)前的棋盤(pán)大小。其代碼如下:

      public void item State Changed(Item item){

      if(item == gauge Size)//當(dāng) Gauge 組件發(fā)生變化時(shí)

      {

      int bs = gauge Size.get Value()+ 10;//獲取當(dāng)前的 Gauge 值并計(jì)算棋盤(pán)大?。?0)

      gauge Size.set Label(“棋盤(pán)規(guī)格: ” + bs + “ X ” + bs);//改變 Gauge 組件的標(biāo)簽

      }

      }

      2、難度選擇

      游戲的難易程度根據(jù)計(jì)算機(jī)的智能級(jí)別來(lái)控制,創(chuàng)建及添加選項(xiàng)的方法和復(fù)選框一樣,所不同的是在創(chuàng)建 Choice Group 對(duì)象時(shí),類型設(shè)置為 1(單選)。對(duì)于單選框,set Selected Index 只能用來(lái)指定某個(gè)選項(xiàng)被選中,因此,布爾值 selected 的值必然為 true,否則便沒(méi)有意義。

      游戲共有 3 個(gè)難度級(jí)別,分別是:拜師學(xué)藝、棋行天下、誰(shuí)與爭(zhēng)鋒(此游戲中并未作出區(qū)分),初始情況下為拜師學(xué)藝,該選項(xiàng)的索引值為 0。創(chuàng)建難度選擇單選框的代碼如下:

      level = 1;//默認(rèn)情況下的難度級(jí)別

      choicelevel = new Choice Group(“電腦智能級(jí)別:”, 1);//創(chuàng)建難度級(jí)別選項(xiàng)組 choicelevel.append(“拜師學(xué)藝”, null);//難度 1 choicelevel.append(“棋行天下”, null);//難度 2 choicelevel.append(“誰(shuí)與爭(zhēng)鋒”, null);//難度 3

      choicelevel.set Selected Index(level-1 , true);//設(shè)置默認(rèn)情況為難度 1,索引值為0

      form.append(choicelevel);//將選項(xiàng)組添加到主表單中

      游戲設(shè)置選項(xiàng)表單還有兩個(gè) Command 對(duì)象,分別用于玩家卻熱和取消,所以表單需要監(jiān)聽(tīng)軟鍵事件和組件事件:

      public class Setting implements Command Listener, Item State Listener

      3、棋手選擇

      選擇先手和難度等級(jí)用 Choice Group 組件來(lái)實(shí)現(xiàn)。Choice Group 組件用來(lái)構(gòu)造選擇框,其構(gòu)造函數(shù)如下:

      Choice Group(String label, int choice Type)選擇先手的選項(xiàng)框?yàn)檫x擇組件,屬性為復(fù)選框,標(biāo)簽名為空。創(chuàng)建好選擇組件后,逐條添加選項(xiàng)元素。添加選項(xiàng)的方法如下:

      int append(String string Part, Image image Part)該方法追加一個(gè)選項(xiàng)元素到選擇組中,追加的選項(xiàng)為選擇組中的最后一個(gè)元素,選擇組的大小加 1。

      對(duì)于多選類型的 Choice Group,還可以設(shè)置個(gè)別選項(xiàng)的選擇狀態(tài)。設(shè)置初始選擇狀態(tài)的方法如下:

      void set Selected Index(int element Num, Boolean selected)這里創(chuàng)建一個(gè)只有一個(gè)選項(xiàng)元素的多選框用于玩家設(shè)置是否計(jì)算機(jī)先行,在默認(rèn)情況下為true,創(chuàng)建完成多選框后將其添加到主表單中,代碼如下:

      Computer First = true;//在默認(rèn)情況下為計(jì)算機(jī)先行 choice First = new Choice Group(null, 2);//創(chuàng)建復(fù)選框 choice First.append(“電腦先手”, null);//添加選項(xiàng)元素

      choice First.set Selected Index(0, Computer First);//設(shè)置多選框的默認(rèn)狀態(tài) form.append(choice First);//將多選框添加到主表單中 4.3.3 棋子類的實(shí)現(xiàn)

      1、棋子的行列位置

      此五子棋游戲是一個(gè)二維棋類游戲,所以定了了一個(gè) Dot 類來(lái)表示棋子。由于移動(dòng)設(shè)備的局限性,所以程序不在下每一步棋時(shí)生成一個(gè)對(duì)象,而是在游戲進(jìn)行時(shí),玩家或者計(jì)算機(jī)沒(méi)下一步棋,在數(shù)組相應(yīng)位置生成該棋子的對(duì)象,而將已經(jīng)下過(guò)的棋子保存到數(shù)組中隨時(shí)檢索,這樣可以避免過(guò)多棋子對(duì)象占用系統(tǒng)內(nèi)存。Dot 類的 UML 圖如圖 4-5 所示:

      圖4-5棋子行列設(shè)計(jì)

      Dot 類主要有兩個(gè)變量 row 和 col,分別表示行和列:

      public int row;//行

      public int col;//列

      2、檢查越位

      棋子的位置并非是任意的,玩家和計(jì)算機(jī)每走一步棋之前都要線檢查該位置的合法性,即棋子是否在棋盤(pán)上,否則判為無(wú)效落子。檢查是否越界的代碼如下:

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

      3、修改棋子位置

      在創(chuàng)建好 Dot 對(duì)象后,Dot 類提供了兩種方法更改棋子位置,包括設(shè)置行列位置和從已有棋子中復(fù)制參數(shù)。

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

      {

      row = r;col = c;

      }

      public void copy From(Dot d)//復(fù)制已有的棋子

      {

      row = d.row;

      col = d.col;

      } 4.3.4 對(duì)戰(zhàn)邏輯類的實(shí)現(xiàn)

      1、建立數(shù)據(jù)結(jié)構(gòu)

      本程序以數(shù)組保存當(dāng)前盤(pán)面的情況,每個(gè)位置可能有三種狀態(tài):空、玩家的落子、計(jì)算機(jī)的落子,分別用 0、1、2 來(lái)表示。代碼如下:

      public static int PLAYER_NONE = 0;//該位置為空

      public static int PLAYER_COMPUTER = 1;//該位置有電腦的落子

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

      棋盤(pán)在初始情況下為空,即棋子上沒(méi)有任何棋子,在Gobang Logic類的構(gòu)造函數(shù)中對(duì)棋盤(pán)進(jìn)行初始化:

      table = new int[board Size][board Size];//創(chuàng)建棋盤(pán)數(shù)組 for(int r = 0;r < board Size;r++){

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

      table[r][c] = 0;//初始化盤(pán)面為空 }

      除了記錄棋盤(pán)上每個(gè)位置的落子狀態(tài)外,程序還將對(duì)每種狀態(tài)的位置個(gè)數(shù)進(jìn)行統(tǒng)計(jì),以對(duì)算法進(jìn)行簡(jiǎn)化。對(duì)三種狀態(tài)的統(tǒng)計(jì)存儲(chǔ)在整型數(shù)組中,該數(shù)組為全局變量。

      private int player Counter[];

      在 Gobang Logic 類的構(gòu)造函數(shù)中對(duì)三種狀態(tài)的計(jì)數(shù)進(jìn)行初始化,即棋盤(pán)上都是空、計(jì)算機(jī)的落子或玩家的落子狀態(tài)的個(gè)數(shù)為 0,在數(shù)據(jù)結(jié)構(gòu)上,把空也當(dāng)做某一特殊玩家。

      初始化代碼如下:

      player Counter = new int[3];//落子狀態(tài)計(jì)數(shù)器

      player Counter[0] = board Size * board Size;//整個(gè)棋盤(pán)都是空的狀態(tài) player Counter[1] = 0;//電腦落子0 player Counter[2] = 0;//玩家落子0

      2、落子和悔棋

      這里使用了一個(gè) Dot 類棋子對(duì)象來(lái)記錄最后一步棋的位置,當(dāng)玩家下了一步棋后需要將上一步重新繪制,以消除旗子上的引導(dǎo)框。另外,還是用了堆棧來(lái)存儲(chǔ)最近的幾步落子,以便玩家悔棋。

      private Dot last Dot;//棋子對(duì)象,存儲(chǔ)最后一步落子 private Stack steps;//棋子對(duì)象的堆棧

      最后一步棋子和棋子堆棧在 Gobang Logic 類的構(gòu)造函數(shù)中進(jìn)行初始化;

      last Dot = new Dot(board Size);//創(chuàng)建棋子對(duì)象用來(lái)存儲(chǔ)最后一步棋,初始化

      位置為棋盤(pán)中央steps = new Stack();//堆棧對(duì)象,用來(lái)存儲(chǔ)最近的幾部棋在棋盤(pán)上落子的代碼如下:

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

      {

      int last Row = last Dot.row;//記錄上一步的行坐標(biāo)

      int last Col = last Dot.col;//記錄上一步的列坐標(biāo)

      table[row][col] = player;//當(dāng)前位置填充玩家代碼

      last Dot.set Row Col(row, col);//將這一部設(shè)置為“最后一步”

      game Canvas.repaint At(last Row, last Col);//重新繪制上一步(將引導(dǎo)框去掉)

      game Canvas.repaint At(row, col);//繪制當(dāng)前這步

      switch(player)//統(tǒng)計(jì)雙方落子數(shù)量

      {

      case 1:

      player Counter[1]++;//電腦的步數(shù)

      break;

      case 2:

      player Counter[2]++;//玩家的步數(shù)

      break;

      }

      player Counter[0]--;//空白的個(gè)數(shù)

      if(steps.size()> 10)//堆棧數(shù)量超過(guò)上限(10)

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

      steps.push(new Dot(row, col));//將當(dāng)前這步棋子壓入堆棧

      }

      Stack(堆棧類)從 Vector 集成而來(lái),它使用 push()方法進(jìn)入堆棧,需要時(shí)使用 pop()方法從堆棧的頂部將其取出?;谄鍎?dòng)作由玩家做出,從數(shù)據(jù)結(jié)構(gòu)來(lái)看,是同時(shí)后退兩步(將最后兩步棋位置的落子狀態(tài)設(shè)置為空)。

      Stack 類的 peek()方法將獲取棧頂對(duì)象,但不移?;谄宕a如下: :

      public boolean undo()//悔棋

      {

      if(steps.size()>= 3)

      {

      Dot d = new Dot();//創(chuàng)建棋子對(duì)象

      d.copy From((Dot)steps.pop());//從堆棧彈出的棋子中復(fù)制行列位置坐標(biāo)

      table[d.row][d.col] = 0;//將該位置設(shè)置為空

      game Canvas.repaint At(d.row, d.col);//在棋盤(pán)上重新繪制該位置

      d.copy From((Dot)steps.pop());//從堆棧彈出的棋子中復(fù)制行列位置坐標(biāo)

      table[d.row][d.col] = 0;//將該位置設(shè)置為空

      game Canvas.repaint At(d.row, d.col);//在棋盤(pán)上重新繪制該位置

      d.copy From((Dot)steps.peek());//獲取棧頂對(duì)象,作為最后一步棋存儲(chǔ) last Dot.copy From(d);

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

      }

      else

      {

      return false;

      //悔棋失敗

      }

      } 4.4 本章小結(jié)

      本章主要內(nèi)容是游戲的實(shí)現(xiàn),包括主類的實(shí)現(xiàn),如構(gòu)造函數(shù)、事件處理等,游戲幫助和介紹表單類的實(shí)現(xiàn),游戲設(shè)置類的實(shí)現(xiàn),如棋盤(pán)、選手、難度等,旗子類的實(shí)現(xiàn),如棋子行列位置、檢查越界等,對(duì)戰(zhàn)邏輯類的實(shí)現(xiàn),如落子和悔棋、邏輯運(yùn)算等的實(shí)現(xiàn)。

      第三篇:總體設(shè)計(jì)理念的說(shuō)明

      總體設(shè)計(jì)理念的說(shuō)明

      ——文化廣場(chǎng)設(shè)計(jì)

      1、項(xiàng)目背景

      該市是我國(guó)對(duì)俄羅斯貿(mào)易第二大口岸,該市被自然地形和鐵路、公路劃分為四個(gè)等組團(tuán)。該區(qū)目前是城鄉(xiāng)接合部,有大量農(nóng)民住宅,總歸對(duì)其的定位是城市新區(qū),承擔(dān)文體中心的職能。該小區(qū)及其所位于新區(qū)臨河地帶,西側(cè)、南側(cè)邊界為城市規(guī)劃次干道,是臨河坡度較為平緩的區(qū)域,所處地塊總用地93.57公頃。

      2、方案定位

      有利于促進(jìn)城市發(fā)展,提升城市形象,有利于展示和傳承歷史文化,有利于生態(tài)環(huán)境和生存條件,在這三個(gè)有于的條件下著力打造具有綜合性功能的文化廣場(chǎng)。本方案將廣場(chǎng)定位為具 有時(shí)代特色和地域特色,反映城市歷史,滿足集會(huì)、市民休息、娛樂(lè)等綜合性城市開(kāi)放空間。

      3、規(guī)劃原則

      (1.)文化原則:廣場(chǎng)設(shè)計(jì)應(yīng)力求挖掘本地深厚的文化底蘊(yùn)和歷史背景,并體現(xiàn)新時(shí)代城市的形象。

      (2.)以人為本:設(shè)計(jì)應(yīng)體現(xiàn)以人為本的原則。營(yíng)造良好的環(huán)境效果,為人們提供舒適、多樣性的活動(dòng)空間。廣場(chǎng)空間應(yīng)能滿足人的多維感受,并進(jìn)行無(wú)障礙設(shè)計(jì)。

      (3.)生態(tài)原則:充分考慮當(dāng)?shù)貧夂蛱卣?,并評(píng)估周邊地區(qū)環(huán)境特征,實(shí)現(xiàn)人與自然,廣場(chǎng)和區(qū)域的和皆共生。

      (4.)可持續(xù)性發(fā)展原則:廣場(chǎng)設(shè)計(jì)為將來(lái)預(yù)留發(fā)展空間,并能與全局協(xié)調(diào)。

      (5.)經(jīng)濟(jì)原則:生態(tài)方法就是最經(jīng)濟(jì)的方法,運(yùn)用生態(tài)方法指導(dǎo)設(shè)計(jì)和實(shí)施,不但可以增加環(huán)境的多樣性,也能增加建筑物的節(jié)能性及可行性,利用最少的資源和能源,得環(huán)境上、經(jīng)濟(jì)上和社會(huì)上最大的利益。

      4、設(shè)計(jì)分析

      設(shè)計(jì)構(gòu)思依托地域特點(diǎn),注重文化特質(zhì),豐富景觀內(nèi)涵,強(qiáng)調(diào)環(huán)境的融合和肌理的延續(xù),確立城市形象設(shè)計(jì)概念,現(xiàn)代化城鎮(zhèn)風(fēng)貌。增強(qiáng)城市的識(shí)別性和標(biāo)志性景觀,設(shè)計(jì)的理念為和諧社會(huì),通過(guò)對(duì) 道路,水景,小品等景觀元素的重點(diǎn)處理,使景觀設(shè)計(jì)與總體規(guī)劃布局取得整合。而在設(shè)計(jì)手法上則體現(xiàn)出比較強(qiáng)烈的文化氣息。

      (1.)整個(gè)廣場(chǎng)的設(shè)計(jì)以景觀綠化為主導(dǎo)思想,構(gòu)成開(kāi)放的空間布局,又加以淵源流長(zhǎng)的水系,使得整個(gè)廣場(chǎng)既靈活,充滿了現(xiàn)代氣息,又蘊(yùn)涵有豐富的歷史文化;寓意開(kāi)放、和諧的文化氣息。

      (2.)局部的設(shè)計(jì)是廣場(chǎng)的點(diǎn)睛之筆。廣場(chǎng)主入口處,以古典的鋪裝,給人以"家"的感覺(jué).廣場(chǎng)中心以雕塑為核心托歷史文化,加以旱地噴泉,體現(xiàn)了既寧?kù)o又莊嚴(yán)的環(huán)境,在廣場(chǎng)的里一個(gè)入口設(shè)計(jì)文化景墻,以緬懷歷名人為主線與博物館相呼應(yīng)。各細(xì)部相結(jié)合整各廣場(chǎng)給人們一個(gè)回味歷史,展望未來(lái)的思索空間。

      (3.)植物配置上,結(jié)合當(dāng)?shù)剜l(xiāng)土樹(shù)種并具代表性的樹(shù)種,與周圍建筑相結(jié)合,選取四季不同色調(diào)變化和光影效果的植物,合理布局:規(guī)則式的場(chǎng)景布局采用了規(guī)則式的綠地形式,并在規(guī)則式的綠地形式內(nèi)協(xié)調(diào)布有小型自由種植,使整個(gè)廣場(chǎng)統(tǒng)一,協(xié)調(diào)。通過(guò)對(duì)軟環(huán)境(樹(shù)木、水體、草皮)及硬環(huán)境(建筑物)的生態(tài)設(shè)計(jì)、創(chuàng)造出綠色開(kāi)放空間,使自然與人工有機(jī)聯(lián)系,將自然引入都市。

      第四篇:總體設(shè)計(jì)文件修改說(shuō)明及承諾書(shū)

      總體設(shè)計(jì)文件修改說(shuō)明及承諾書(shū)

      我公司現(xiàn)申報(bào)“總體設(shè)計(jì)文件審查”,與已批準(zhǔn)的設(shè)計(jì)方案相比,此次申報(bào)的設(shè)計(jì)文件審查有以下內(nèi)容的修改,特此說(shuō)明:

      1、無(wú)修改,與設(shè)計(jì)方案一致。

      2、修改內(nèi)容如下(提供修改前后圖紙對(duì)比):

      為提高總體設(shè)計(jì)文件規(guī)劃審核效率,本單位鄭重作出以下承諾:

      1、本單位已明確知曉本總體設(shè)計(jì)文件規(guī)劃審核意見(jiàn),并承諾在申請(qǐng)規(guī)劃許可證前完成修改。若由于本單位在申請(qǐng)規(guī)劃許可證前變更審核通過(guò)后的總體設(shè)計(jì)文件或未按審核意見(jiàn)要求進(jìn)行修改,由此而引起的重新審圖及審批時(shí)間延長(zhǎng)等問(wèn)題將由本單位負(fù)責(zé)。

      2、本單位承諾提供的總體設(shè)計(jì)文件修改說(shuō)明(較批準(zhǔn)的設(shè)計(jì)方案)準(zhǔn)確無(wú)誤,沒(méi)有遺漏。若由于規(guī)土部門(mén)按此審查通過(guò)總體設(shè)計(jì)文件規(guī)劃審核后在規(guī)劃許可證階段又發(fā)現(xiàn)修改說(shuō)明以外的新問(wèn)題的,由此造成的圖紙修改、重新審圖及審批時(shí)間延長(zhǎng)的,相關(guān)責(zé)任由本單位負(fù)責(zé)。

      承諾單位(名稱)

      建設(shè)單位:(章)設(shè)計(jì)單位:(章)

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

      第五篇:關(guān)于數(shù)字化城管系統(tǒng)功能要求的說(shuō)明

      關(guān)于數(shù)字化城管系統(tǒng)功能要求的說(shuō)明

      一、城管通的功能

      1、語(yǔ)音通話。要求在集團(tuán)內(nèi)部通話,限制外網(wǎng)電話的呼出和呼入。

      2、實(shí)時(shí)對(duì)講功能。要求實(shí)現(xiàn)集團(tuán)內(nèi)部的實(shí)時(shí)對(duì)講功能。

      3、GPS定位功能。要求在全市行政區(qū)范圍內(nèi)實(shí)現(xiàn)對(duì)城管通終端的實(shí)時(shí)定位、軌跡管理等功能,精確度達(dá)到5米以內(nèi)。

      4、數(shù)據(jù)、案件采集功能。在全市行政區(qū)域范圍內(nèi)實(shí)現(xiàn)數(shù)據(jù)采集功能,包括圖片、文字等數(shù)據(jù)的雙向傳輸。

      二、系統(tǒng)平臺(tái)的功能

      1、GPS定位平臺(tái)。要求對(duì)所有外勤人員的終端可以進(jìn)行實(shí)時(shí)定位和軌跡管理,并實(shí)現(xiàn)自動(dòng)報(bào)警功能;能夠?qū)Χㄎ粩?shù)據(jù)進(jìn)行分析和整理;設(shè)置考勤系統(tǒng)的查看和修改權(quán)限;可以定位案件發(fā)生地點(diǎn)。

      2、數(shù)據(jù)采集和處理平臺(tái)。要求實(shí)現(xiàn)與城管通終端圖片和文字的雙向傳輸功能;可以分析和整理采集到的所有數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行分類管理;可以對(duì)平臺(tái)的其它終端進(jìn)行任務(wù)派遣;可以處理其它終端反饋的處理結(jié)果。

      3、綜合評(píng)價(jià)平臺(tái)。要求可以對(duì)平臺(tái)的所有數(shù)據(jù)進(jìn)行分析處理,形成綜合評(píng)價(jià)體系。該體系包括案件處理評(píng)價(jià)、人員考勤的評(píng)價(jià)等。

      4、監(jiān)督指揮平臺(tái)。要求對(duì)城管通終端實(shí)現(xiàn)文件、通知的發(fā)送;通過(guò)語(yǔ)音傳送方式實(shí)現(xiàn)對(duì)所有外勤人員的調(diào)度和指揮;對(duì)案件的處理情況進(jìn)行監(jiān)督、審核并設(shè)置審查權(quán)限。

      三、外部設(shè)備的功能要求

      1、車載攝像頭。要求可以實(shí)現(xiàn)圖像本地存儲(chǔ)、實(shí)時(shí)回傳的功能;數(shù)據(jù)更新時(shí)間為15日—30日;可以調(diào)節(jié)攝像頭的拍攝高度和角度。

      2、車輛定位。要求對(duì)所有車輛能夠?qū)崟r(shí)定位,并實(shí)現(xiàn)軌跡管理;設(shè)置動(dòng)態(tài)的行動(dòng)范圍,并對(duì)超范圍進(jìn)行自動(dòng)報(bào)警。

      下載檔案數(shù)字化工程的總體設(shè)計(jì)和實(shí)現(xiàn)的功能說(shuō)明word格式文檔
      下載檔案數(shù)字化工程的總體設(shè)計(jì)和實(shí)現(xiàn)的功能說(shuō)明.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)字化城市的實(shí)現(xiàn)

        物聯(lián)網(wǎng)使數(shù)字城市具有更豐富的內(nèi)涵,實(shí)現(xiàn)城市信息的全面性、智能控制和處理。北京市東城區(qū)東花市街道以數(shù)字化城市為基礎(chǔ),引入物聯(lián)網(wǎng)概念、技術(shù)、設(shè)備,為貫徹落實(shí)中央和北京市......

        日照:工程審批“一表通”實(shí)現(xiàn)數(shù)字化流轉(zhuǎn)

        日照:工程審批“一表通”實(shí)現(xiàn)數(shù)字化流轉(zhuǎn)“只要提交過(guò)的材料,都有備份,后面的環(huán)節(jié)他們就直接拿來(lái)用?!闭诖翱谏暾?qǐng)辦理項(xiàng)目的某公司人員興奮地向記者介紹日照市建設(shè)工程審批“......

        檔案情況說(shuō)明范文大全

        檔案情況說(shuō)明 致:本人 ,身份證號(hào)碼: ,檔案現(xiàn)存放在(存檔機(jī)構(gòu)全稱) 人才服務(wù)中心 。 請(qǐng)選擇填寫(xiě)以下內(nèi)容: □ 我已于 年 月 日領(lǐng)到 公司開(kāi)具的調(diào)檔函,承諾 年 月 日前將檔案調(diào)入 公......

        檔案整理說(shuō)明

        必須準(zhǔn)備三次以上道德講堂 每次必須有通知、活動(dòng)方案(流程、內(nèi)容等)、主持詞這三項(xiàng)活動(dòng)方案就是 六個(gè)環(huán)節(jié) 唱一首歌、看一部短片、講一個(gè)故事、誦一段經(jīng)典、做一番點(diǎn)評(píng)、發(fā)一......

        檔案說(shuō)明

        《村黨支部工作手冊(cè)》填寫(xiě)注意事項(xiàng)1、手冊(cè)中所有重復(fù)信息不得用··替代,需手寫(xiě)且不得復(fù)印2、有后備干部的村需填寫(xiě)后備干部詳細(xì)信息,并填寫(xiě)村級(jí)干部“三薦兩考”表原件。3、......

        數(shù)字化檔案共享服務(wù)(大全)

        數(shù)字化檔案共享服務(wù)工作探析 1、引言:近年來(lái),隨著計(jì)算機(jī)和網(wǎng)絡(luò)的高速發(fā)展,人類社會(huì)已經(jīng)進(jìn)入數(shù)字化信息時(shí)代。越來(lái)越多的城建檔案館開(kāi)展了檔案數(shù)字化工作,將大量館藏紙質(zhì)檔案加......

        審計(jì)檔案的數(shù)字化

        審計(jì)檔案的數(shù)字化 審計(jì)業(yè)務(wù)電子檔案(以下簡(jiǎn)稱電子檔案)是審計(jì)檔案的數(shù)字化形態(tài)。其制作過(guò)程大抵可以分為以下四個(gè)階段:即資料收集整理階段、資料數(shù)字化階段、資料整理編輯階段......

        檔案數(shù)字化方案研究

        檔案數(shù)字化方案研究 課題組 《檔案數(shù)字化方案研究》項(xiàng)目對(duì)檔案數(shù)字化優(yōu)化策略與原則、技術(shù)路線與支持、流程重組與再造、操作方法與步驟進(jìn)行了全面的研究,達(dá)到了檔案數(shù)字化全......