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

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

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

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

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

      基于Java的俄羅斯方塊的設(shè)計(jì)和實(shí)現(xiàn)(含源文件)(精選五篇)

      時(shí)間:2019-05-12 06:24:06下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《基于Java的俄羅斯方塊的設(shè)計(jì)和實(shí)現(xiàn)(含源文件)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《基于Java的俄羅斯方塊的設(shè)計(jì)和實(shí)現(xiàn)(含源文件)》。

      第一篇:基于Java的俄羅斯方塊的設(shè)計(jì)和實(shí)現(xiàn)(含源文件)

      本科生畢業(yè)論文(設(shè)計(jì))

      基于Java的俄羅斯方塊的設(shè)計(jì)與實(shí)現(xiàn)

      名 學(xué)

      號(hào) 專

      業(yè) 指導(dǎo)教師

      I

      摘 要

      俄羅斯方塊作為一款風(fēng)靡全球的多樣化終端游戲,經(jīng)久不衰。俄羅斯方塊簡(jiǎn)單的基本游戲規(guī)則是旋轉(zhuǎn)、移動(dòng),游戲自動(dòng)隨機(jī)輸出7種形狀的方塊,經(jīng)旋轉(zhuǎn)后可形成28種形狀,方塊堆疊在一起,排列成完整的一行或多行消除得分,積分達(dá)到一定程度會(huì)自動(dòng)提升級(jí)別。該游戲上手簡(jiǎn)單、老少皆宜、家喻戶曉。

      本論文在詳盡分析傳統(tǒng)俄羅斯實(shí)現(xiàn)的基本原理、基本規(guī)則基礎(chǔ)上,更深一步地研究俄羅斯方塊的創(chuàng)新模式,在經(jīng)典模式基礎(chǔ)上開(kāi)發(fā)出等級(jí)可變的模式,以及進(jìn)一步開(kāi)發(fā)出顏色可變的模式,如隨意改變界面的背景色、前景色等,本文對(duì)以上功能給出了實(shí)現(xiàn)流程、詳盡描述、和部分源代碼。

      論文闡述了該游戲的歷史、開(kāi)發(fā)此游戲的意義和環(huán)境并根據(jù)軟件工程的相關(guān)知識(shí),進(jìn)行系統(tǒng)的需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)、調(diào)試運(yùn)行進(jìn)行描述。

      此設(shè)計(jì)是在Microsoft Windows XP系統(tǒng)下,以Java為開(kāi)發(fā)語(yǔ)言,在MyEclipse開(kāi)發(fā)平臺(tái)上進(jìn)行游戲的設(shè)計(jì)與實(shí)現(xiàn)。

      關(guān)鍵詞:游戲;俄羅斯方塊;錯(cuò)誤!未找到引用源。軟件工程;MyEclipse錯(cuò)誤!未找到引用源。

      Abstract Tetris is a popular global diversification of terminal enduring game.Simple basic rules of the game is rotating, moving, automatic random output of 7 kinds of shape square game.It forms 28 kinds of shape, after rotating cube stacked together, forming complete one or more lines to eliminate score.Its level automatically rises with the score.The game is easy for young and old, has become a household name.This paper not only give the detailed analysis of the traditional Tetris which based on the basic principle and simple rules but also develop the color variable model, such as random change the background color and foreground color and so on.Further more, in this paper, the above functions are given the implementation process, the detailed description, and some source code.The paper expounds the history of the game, develops the meaning of the game and the environment of design.According to the relevant knowledge of software engineering, the author reports the demand analysis, outline design, detailed design, planning and execution of the test.This design is under Microsoft Windows XP system, based on Java development language, the MyEclipse development platforms to carry on the design and implementation of the game.Key Words: Game, Tetris, Software engineering, MyEclipse

      III

      目 錄 引 言................................................................1 2 系統(tǒng)的需求分析.......................................................2 2.1 系統(tǒng)需求.........................................................2 2.2 接口控制.........................................................3 3 系統(tǒng)的概要設(shè)計(jì).......................................................4 3.1 軟件運(yùn)行和開(kāi)發(fā)工具...............................................4 3.2 系統(tǒng)功能設(shè)計(jì).....................................................4 3.2.1 手工處理業(yè)務(wù)的基本流程.......................................4 3.2.2 基本流程的功能模塊...........................................5 4 系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn).................................................8 4.1 游戲主界面顯示模塊...............................................8 4.2 畫(huà)布、方塊顯示模塊...............................................9 4.2.1 背景畫(huà)布模塊設(shè)計(jì)............................................10 4.2.2 預(yù)覽方塊模塊設(shè)計(jì)............................................11 4.2.3 方塊移動(dòng)、旋轉(zhuǎn)設(shè)計(jì)..........................................14 4.3 控制面板模塊....................................................18 4.3.1 菜單欄模塊設(shè)計(jì)..............................................18 4.3.2 控制面板按鈕設(shè)計(jì)............................................20 5 系統(tǒng)的調(diào)試運(yùn)行......................................................21 5.1 測(cè)試的意義及注意事項(xiàng)............................................21 5.2 游戲代碼、算法的測(cè)試............................................21 5.3 游戲界面菜單選項(xiàng)的功能測(cè)試......................................22 5.4 按鍵事件的功能測(cè)試..............................................24 5.5 方塊堆砌與消行測(cè)試..............................................25 5.6 測(cè)試結(jié)果分析....................................................26 6 結(jié) 論..............................................................27 參考文獻(xiàn)..............................................................28 致 謝.................................................................29 引 言

      俄羅斯方塊的影響已毋庸置疑, 當(dāng)今世界的電腦、手機(jī)到處都有俄羅斯方塊的蹤跡,同時(shí)它更是每個(gè)游戲平臺(tái)的必備游戲,相關(guān)的復(fù)制品不勝枚舉。這個(gè)最早由莫斯科的數(shù)學(xué)家亞力克西·帕杰諾夫(Alexey Pajituov)所設(shè)計(jì)的作品,被公認(rèn)為有史以來(lái)最暢銷的經(jīng)典游戲,至今魅力不減當(dāng)年。亞力克西·帕杰諾夫曾在俄羅斯科學(xué)研究院電腦中心工作, 當(dāng)時(shí)他在Eletronica 60的舊型俄羅斯主機(jī)上進(jìn)行開(kāi)發(fā)工作, 這種機(jī)器不支持圖形界面, 和PC也不兼容。他嘗試將一種傳統(tǒng)的拼圖游戲Pentomino 改寫(xiě)成電腦游戲。Pentomino 一共有十二種形狀, 各以七個(gè)方塊組合而成。帕杰諾夫試著寫(xiě)了一個(gè)程序, 旋轉(zhuǎn)并移動(dòng)這十二種不同形狀的方塊, 讓它們拼成一大塊。后來(lái)幾經(jīng)修改,發(fā)展成我們現(xiàn)在所熟悉的經(jīng)典模式。俄羅斯方塊曾經(jīng)引起的轟動(dòng)和制造的經(jīng)濟(jì)價(jià)值可以說(shuō)是游戲史上無(wú)可比擬的。它看似簡(jiǎn)單但卻變化無(wú)窮,令人愛(ài)不釋手。

      俄羅斯方塊游戲是隨計(jì)算機(jī)的發(fā)展而發(fā)展,并不斷推陳出各種新演變出的類似游戲, 深受廣大玩家喜愛(ài)。游戲模式有的簡(jiǎn)單、有的復(fù)雜, 但其根本原理是都是對(duì)隨機(jī)出現(xiàn)的方塊進(jìn)行組合, 來(lái)訓(xùn)練玩家的反應(yīng)能力、邏輯思維能力。游戲軟件, 大多數(shù)人都視其為神妙莫測(cè), 高不可及的東西。一般來(lái)說(shuō),游戲軟件也確實(shí)具有很高的技術(shù)難度, 隨著開(kāi)發(fā)工具和軟件開(kāi)發(fā)方法學(xué)的不斷發(fā)展, 自己動(dòng)手開(kāi)發(fā)游戲也并非難事。俄羅斯方塊游戲可以上說(shuō)是一種古老而又有趣的游戲。游戲軟件不計(jì)其數(shù), 網(wǎng)上也有很多關(guān)于游戲?qū)崿F(xiàn)的復(fù)雜算法和設(shè)計(jì), 其難度讓一般初學(xué)者望而卻步。本文利用數(shù)組作為方塊的數(shù)據(jù)結(jié)構(gòu),用顏色變化作為方塊下落和移動(dòng)的標(biāo)識(shí),提出一種用Java語(yǔ)言實(shí)現(xiàn)游戲的簡(jiǎn)易方法,在經(jīng)典模式的基礎(chǔ)上實(shí)現(xiàn)等級(jí)可變,顏色可變等功能,初學(xué)者可仿此開(kāi)發(fā)類似游戲, 并了解游戲軟件的設(shè)計(jì)與開(kāi)發(fā)過(guò)程。

      俄羅斯方塊游戲以其益智、簡(jiǎn)單又不乏挑戰(zhàn)、創(chuàng)意獨(dú)特的游戲模式,吸引了眾多游戲愛(ài)好者,而且老少皆宜。當(dāng)今社會(huì)里,人們的工作壓力隨著生活節(jié)奏的快速提高而逐漸繁重,隨之減少的是可以自由支配的休息時(shí)間,人們迫切地需要一種既簡(jiǎn)單又節(jié)省時(shí)間的快速休閑方式。無(wú)可爭(zhēng)議,它是永恒的娛樂(lè)經(jīng)典,且它的代碼簡(jiǎn)單,界面簡(jiǎn)潔,從最初發(fā)行時(shí)的單個(gè)游戲機(jī)到現(xiàn)在便捷的安裝到電腦、手機(jī)、MP4、電子詞典、商務(wù)通、IPAD、ITOUCH等便攜設(shè)備,俄羅斯方塊風(fēng)靡世界,經(jīng)久不衰。本次課題研究可以說(shuō)是對(duì)游戲開(kāi)發(fā)的一次嘗試,無(wú)論從技術(shù)還是社會(huì)意義上看都是很有價(jià)值的。系統(tǒng)的需求分析

      對(duì)系統(tǒng)的需求分析就是用戶和開(kāi)發(fā)人員在“系統(tǒng)必須做什么”這個(gè)問(wèn)題上實(shí)現(xiàn)相互理解,達(dá)到共識(shí),從而形成雙方認(rèn)可的軟件產(chǎn)品的需求規(guī)格。這樣有利于提高軟件開(kāi)發(fā)過(guò)程中的能見(jiàn)度,便于對(duì)軟件開(kāi)發(fā)過(guò)程的控制與管理,便于采用工程化的模式開(kāi)發(fā)軟件,從而達(dá)到提高軟件的質(zhì)量,為開(kāi)發(fā)人員、維護(hù)人員、管理人員之間的交流、協(xié)作提供便捷。作為工作成果的原始依據(jù),系統(tǒng)的需求分析可以向潛在用戶傳遞軟件功能、性能的需求,使其能夠判斷該軟件是否符合自己的需求。2.1 系統(tǒng)需求

      系統(tǒng)隨機(jī)產(chǎn)生7中不同形狀的方塊,旋轉(zhuǎn)后有28種狀態(tài)。方塊自由下落,玩家通過(guò)鍵盤(pán)控制方塊的移動(dòng)和旋轉(zhuǎn),把方塊擺放在適當(dāng)?shù)奈恢?。如果方塊落下時(shí),有被方塊填滿的整行,則該行可消去。每消去一行,玩家得分增加10分,每滿100分,玩家等級(jí)增加一級(jí)。若由存在空格的方塊填滿整個(gè)窗口,則游戲宣告失敗。游戲功能需求如下:

      游戲界面需求:設(shè)計(jì)良好的游戲界面可以讓玩家充分感受到游戲帶來(lái)的娛樂(lè)性,游戲的默認(rèn)背景色是深綠色,主界面方塊默認(rèn)用橘黃色,預(yù)顯方塊顏色默認(rèn)為淡紫色。背景色、前景色對(duì)比鮮明,以達(dá)到讓玩家眼前一亮的感覺(jué),并能在游戲達(dá)到高等級(jí)狀態(tài),方塊下落速度漸高的情況下使玩家能夠清楚的分辨出下落方塊的形狀,增加游戲的刺激性。

      游戲形狀需求:用數(shù)組作為存儲(chǔ)方塊28種狀態(tài)的數(shù)據(jù)結(jié)構(gòu),即長(zhǎng)條形、Z字形、反Z形、田字形、7字形、反7形、T字型一共7種形狀的向4個(gè)方向的旋轉(zhuǎn)變形,各個(gè)方塊要能實(shí)現(xiàn)它的任意變形,可設(shè)為順時(shí)針變形或逆時(shí)針變形,一般為逆時(shí)針變形。方塊的可否翻轉(zhuǎn)需要加以判斷,以防止其翻轉(zhuǎn)越界。

      鍵盤(pán)處理事件需求:方塊下落時(shí),可通過(guò)鍵盤(pán)方向鍵(上鍵、下鍵、左鍵、右鍵)或字母鍵I、K、J、L對(duì)下落方塊進(jìn)行向上(旋轉(zhuǎn)變形)、向下(加速下落)、向左移動(dòng)、向右移動(dòng)。

      鼠標(biāo)處理事件需求:通過(guò)點(diǎn)擊菜單欄中相應(yīng)的菜單項(xiàng)或控制面板內(nèi)的按鈕,可以實(shí)現(xiàn)游戲的開(kāi)始、結(jié)束、暫停、繼續(xù)、提高等級(jí)、降低等級(jí),預(yù)顯方塊形狀的顯示,分?jǐn)?shù)、等級(jí)的顯示,以及游戲幫助、顏色變換等功能。

      顯示需求:當(dāng)方塊填滿一行時(shí)可以消行,剩余未填滿的行逐次向下移動(dòng)并統(tǒng)計(jì)分?jǐn)?shù)。當(dāng)達(dá)到一定分?jǐn)?shù)的時(shí)候,會(huì)增加相應(yīng)的等級(jí)。當(dāng)方塊充滿主界面的每一行,方塊不能再下落時(shí),提示“Game Over”的字樣。

      非功能性需求:本系統(tǒng)非功能性需求包括游戲主界面左上角顯示圖標(biāo)需求、窗口尺寸可調(diào)整性需求、游戲運(yùn)行時(shí)主界面彈出位置居中需求等。2.2 接口控制

      本游戲通過(guò)鍵盤(pán)和鼠標(biāo)進(jìn)行操作,在Windows的操作系統(tǒng)下,利用鍵盤(pán)的按鍵對(duì)方塊進(jìn)行移動(dòng)、變形,要使用到鍵盤(pán)的接口事件。游戲使用鼠標(biāo)對(duì)游戲進(jìn)行全程控制,如游戲的開(kāi)始、暫停、繼續(xù)、查看游戲幫助、更改界面顏色、更改游戲等級(jí)等,通過(guò)對(duì)鼠標(biāo)單擊、按鍵添加監(jiān)聽(tīng)事件,編輯相應(yīng)代碼來(lái)實(shí)現(xiàn)相應(yīng)功能。系統(tǒng)的概要設(shè)計(jì)

      3.1 軟件運(yùn)行和開(kāi)發(fā)工具

      操作系統(tǒng):Microsoft Windows XP Professional Service Pack 3 內(nèi)存:2G 硬盤(pán):320G CPU:賽揚(yáng)2.8 交互工具:鍵盤(pán)、鼠標(biāo) 顯示器:VGA顯示器 JDK版本:jdk1.6.0.02 Eclipse版本:MyEclipse 8.5 SDK-3.4-win32 3.2 系統(tǒng)功能設(shè)計(jì)

      3.2.1 手工處理業(yè)務(wù)的基本流程

      本游戲的設(shè)計(jì)以?shī)蕵?lè)為初衷,以益智為目的,在綜合研究以往俄羅斯方塊經(jīng)典游戲功能的基礎(chǔ)上推陳出新,加之新的功能,賦以新的生機(jī)和活力。圖3-1為游戲基本流程圖具體闡述游戲的基本流程。

      運(yùn)行說(shuō)明:

      1>運(yùn)行程序,點(diǎn)擊右側(cè)控制面板內(nèi)的“開(kāi)始”或“控制”菜單內(nèi)的“開(kāi)始”按鈕開(kāi)始游戲。

      2>使用上、下、左、右鍵或I、K、J、L鍵控制方塊的變形、下落、向左和向右移動(dòng)。

      3>方塊滿行消除,分?jǐn)?shù)自動(dòng)增加,分?jǐn)?shù)每滿100等級(jí)自動(dòng)增加一級(jí)。

      4>等級(jí)增加、方塊下落速度增加,按右側(cè)控制面板或“游戲”菜單內(nèi)的“提高等級(jí)”、“降低等級(jí)”按鈕,來(lái)手動(dòng)改變游戲等級(jí)。也可點(diǎn)擊“顏色”菜單內(nèi)的選項(xiàng),更改前景色、背景色。

      5>按右側(cè)控制面板或“控制”菜單內(nèi)的“暫?!笨梢钥刂朴螒驎和?,然后按“繼續(xù)”可以控制游戲繼續(xù)上次游戲。按“停止”按鈕,游戲會(huì)徹底停止正在進(jìn)行的當(dāng)局游戲,再按“開(kāi)始”或“控制”菜單內(nèi)的“重新開(kāi)始”會(huì)開(kāi)始新游戲。

      6>當(dāng)方塊占滿整個(gè)窗口,不能再有新方塊下落時(shí),游戲會(huì)彈出“Game Over”的對(duì)話框提示游戲結(jié)束。

      開(kāi)始初始化方塊否玩家更改前景色、背景色、等級(jí)等玩家操作方塊是否到達(dá)底部暫停、繼續(xù)、停止、重新開(kāi)始是是否滿行是玩家積分增加否積分達(dá)到100否是玩家等級(jí)增加是否到達(dá)頂部是顯示Game Over游戲結(jié)束結(jié)束

      圖3-1 游戲基本流程圖

      3.2.2 基本流程的功能模塊

      本系統(tǒng)基于游戲的各項(xiàng)功能來(lái)設(shè)計(jì)游戲的各個(gè)功能模塊。圖3-2為本游戲的系統(tǒng)功能模塊示意圖,如圖所示,本游戲主要有兩大模塊:游戲界面區(qū),游戲控制區(qū)。游戲界

      面區(qū)分顯示玩家可選操作、顯示玩家操作結(jié)果兩個(gè)部分。游戲控制區(qū)分更改顏色、開(kāi)始、暫停、繼續(xù)、停止、重新開(kāi)始、提高等級(jí)、降低等級(jí)、退出等功能模塊。

      顯示玩家可選操作游戲界面區(qū)顯示玩家操作結(jié)果更改顏色開(kāi)始俄羅斯方塊游戲暫停、繼續(xù)停止游戲控制區(qū)重新開(kāi)始提高等級(jí)降低等級(jí)退出 圖3-2 系統(tǒng)功能模塊示意圖

      圖3-3為游戲界面區(qū)模塊設(shè)計(jì)示意圖,如圖所示,游戲界面區(qū)模塊可細(xì)分為闖進(jìn)新游戲界面、處理玩家操作、顯示玩家操作結(jié)果三個(gè)功能模塊。

      創(chuàng)建新游戲界面游戲界面區(qū)處理玩家操作顯示玩家操作結(jié)果 圖3-3 界面模塊示意圖

      圖2-4為游戲控制區(qū)設(shè)計(jì)示意圖,如圖所示,游戲控制區(qū)模塊分為開(kāi)始、暫停、繼續(xù)、初始游戲級(jí)別設(shè)置、初始顏色設(shè)置、退出等功能模塊。

      開(kāi)始暫停游戲控制區(qū)初始級(jí)別設(shè)置初始顏色設(shè)置退出 圖3-4 控制區(qū)模塊示意圖 系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)

      Java是一種純面向?qū)ο螅∣bject-Oriented)的程序語(yǔ)言,它的諸多優(yōu)點(diǎn)在此就不作詳細(xì)論述了。從面向?qū)ο蟮挠^念出發(fā),本程序主要可分為以下幾個(gè)模塊: ? 游戲主界面顯示模塊 ? 方塊及數(shù)據(jù)顯示模塊 ? 方塊移動(dòng)控制模塊 ? 游戲界面顏色控制模塊 ? 游戲進(jìn)度、等級(jí)控制模塊

      分析對(duì)象的技巧在于它的功能的擴(kuò)展性及維護(hù)效率。試想,如果因?yàn)橥獠凯h(huán)境或者用戶需求的變化需要對(duì)程序進(jìn)行功能擴(kuò)展或者維護(hù),就要對(duì)代碼作大幅度的更動(dòng)甚至重寫(xiě),這樣就失去了面向?qū)ο蟮膬?yōu)勢(shì),所以在本程序分析時(shí)將獨(dú)立性高的模塊作為一個(gè)對(duì)象,以提高程序的可擴(kuò)展性和可維護(hù)性。以下該游戲中類的設(shè)計(jì):

      ControlMainGame類:繼承自JFrame類,作為游戲的主類,負(fù)責(zé)對(duì)游戲的主體全局進(jìn)行控制,連接與指揮各個(gè)類的樞紐。

      ControlPanel類:繼承自JPanel類,作為操作面板類,負(fù)責(zé)安放主游戲窗口,積分板,級(jí)別控制按鈕等窗口用以控制游戲進(jìn)程。

      ChangeBlockColor類:繼承自JPanel類,ChangeBlockColor線程類動(dòng)態(tài)改變畫(huà)布類的方格顏色,畫(huà)布類通過(guò)檢查方格顏色來(lái)體現(xiàn)ChangeBlockColor方塊的移動(dòng)情況與消去狀況。

      BlockPaint類:方格類,組成方塊的基本元素,主要表達(dá)方式為顏色。BlockOperation類:繼承自Thread類,作為操控方塊的類,控制方塊的移動(dòng),下落以及變形。

      4.1 游戲主界面顯示模塊

      一個(gè)優(yōu)秀的軟件系統(tǒng)不僅體現(xiàn)在核心的功能的多樣性和強(qiáng)大上,如果使用者所面對(duì)的是枯燥的、陳舊的界面的話,那么這個(gè)的軟件系統(tǒng)是不成功的,所以好的、精美的界面設(shè)計(jì)是極為重要的環(huán)節(jié)。為玩家設(shè)計(jì)制作布局合理、視覺(jué)效果良好的界面的重要性就不言而喻了。

      游戲主界面采用Swing組件開(kāi)發(fā),并且向其注冊(cè)監(jiān)聽(tīng)器,以實(shí)現(xiàn)各種控制功能,綜合游戲窗體的設(shè)計(jì),其上至少需要注冊(cè)三個(gè)監(jiān)聽(tīng)器,分別是動(dòng)作監(jiān)聽(tīng)器(ActionListener)、鍵盤(pán)監(jiān)聽(tīng)器(KeyListener)、選項(xiàng)監(jiān)聽(tīng)器(ItemListener)。

      根據(jù)初步設(shè)計(jì),可以確定客戶端上所要用到的Swing組件對(duì)象有JFrame對(duì)象、JPanel對(duì)象,JLabel對(duì)象、JButton對(duì)象、JMenuBar對(duì)象、JMenu對(duì)象、JMenuItem對(duì)象、JTextField對(duì)象、JTextArea對(duì)象、JDialog對(duì)象等,至少十個(gè)Swing組件對(duì)象。下圖4-1為游戲主界面截圖。

      圖4-1 游戲主界面截圖

      本游戲主界面設(shè)計(jì)的初始顏色搭配基于對(duì)比鮮明的原則,默認(rèn)背景色為深綠色,左上角設(shè)置俄羅斯方塊圖標(biāo),得分初始值為0,等級(jí)初始值為1,最高分記錄初始值為0。游戲主窗體尺寸設(shè)置為(520,580),方塊移動(dòng)范圍窗格由一個(gè)20行、12列的二維數(shù)組控制,且左上角圖標(biāo)設(shè)置為方塊圖案,起標(biāo)識(shí)作用。4.2 畫(huà)布、方塊顯示模塊

      本游戲中將畫(huà)布底色默認(rèn)設(shè)計(jì)成深綠色,在方塊下落過(guò)程中,根據(jù)顏色的變化識(shí)別下落的方塊。

      4.2.1 背景畫(huà)布模塊設(shè)計(jì)

      該游戲的主背景畫(huà)布是一個(gè)20行、12列的二維數(shù)組,方塊顯示是由相應(yīng)顏色變化來(lái)標(biāo)識(shí),主窗體用顏色填充后可形成呈現(xiàn)出來(lái)背景樣式和方塊。本游戲用繼承自JPanel的ChangeBlockColor類控制背景畫(huà)布的顯示,用rows代表畫(huà)布的行數(shù),cols代表畫(huà)布的列數(shù),行數(shù)和列數(shù)決定著畫(huà)布擁有方格的數(shù)目。背景畫(huà)布實(shí)現(xiàn)代碼如下: /* ChangeBlockColor 類

      畫(huà)布類的構(gòu)造函數(shù) rows int, 畫(huà)布的行數(shù) cols int, 畫(huà)布的列數(shù)

      行數(shù)和列數(shù)決定著畫(huà)布擁有方格的數(shù)目 */ class ChangeBlockColor extends JPanel { private Color backColor = new Color(0,51,0), frontColor = new Color(255,153,0);private int rows, cols, score = 0, scoreForLevelUpdate = 0;private BlockPaint[][] boxes;private int boxWidth, boxHeight;public ChangeBlockColor(int rows, int cols){

      this.rows = rows;

      this.cols = cols;

      boxes = new BlockPaint[rows][cols];

      for(int i = 0;i < boxes.length;i++)

      {

      for(int j = 0;j < boxes[i].length;j++)

      {

      boxes[i][j] = new BlockPaint(false);//

      }

      } } //畫(huà)布類的構(gòu)造函數(shù)

      public ChangeBlockColor(int rows, int cols, Color backColor, Color frontColor){

      this(rows, cols);

      this.backColor = backColor;//背景色

      this.frontColor = frontColor;//前景色

      } //覆蓋JComponent類的函數(shù),畫(huà)組件

      // g 圖形設(shè)備環(huán)境

      public void paintComponent(Graphics g){

      super.paintComponent(g);g.setColor(frontColor);

      for(int i = 0;i < boxes.length;i++)

      {

      for(int j = 0;j < boxes[i].length;j++)

      {

      g.setColor(boxes[i][j].isColorBox()? frontColor : backColor);

      g.fill3DRect(j * boxWidth, i * boxHeight,boxWidth, boxHeight, true);

      }

      } } 4.2.2 預(yù)覽方塊模塊設(shè)計(jì)

      方塊和數(shù)據(jù)信息是游戲中最基本的功能模塊。ShowBeforePanel這個(gè)類提供方塊預(yù)顯圖形,blockkindnum用來(lái)控制隨機(jī)產(chǎn)生的方塊編號(hào),blockstatusnum用來(lái)控制方塊的四種旋轉(zhuǎn)狀態(tài)。定義一個(gè)4x4方陣,共16個(gè)小格。用“0”和“1”來(lái)表示每個(gè)方格是繪制新顏色還是保留底色。

      每得到一個(gè)新方塊,都是隨機(jī)從七種形態(tài)的方塊中選取一種。游戲定義了一個(gè)變量,代表新方塊的模型。比如定義int型數(shù)組STYLE代表28中方塊類型,7行4列,每個(gè)元素代表其中一種方塊。即0<=blockkindnum<=6,0=

      Java語(yǔ)言包中的Math類提供了一個(gè)生成隨機(jī)數(shù)的方法random(),調(diào)用這個(gè)方法會(huì)產(chǎn)生一個(gè)在0-1之間的雙精度浮點(diǎn)數(shù)。所以每次要得到新方塊時(shí),只需調(diào)用一次這個(gè)方法,得到一個(gè)0-1的雙精度浮點(diǎn)數(shù),然后用該數(shù)乘以7,之后強(qiáng)轉(zhuǎn)成整型,即可得到1—7的整數(shù),用來(lái)控制行。用該數(shù)乘以4,之后強(qiáng)轉(zhuǎn)成整型,即可得到1—4的整數(shù),用來(lái)控制列。

      由此可以組合出多種圖形定義然后用代碼實(shí)現(xiàn)下列功能: 1>每次執(zhí)行首先為隨機(jī)數(shù)產(chǎn)生不同的初值。

      style=BlockOperation.STYLES[(int)(Math.random()*7)][(int)(Math.random()* 4)];

      長(zhǎng)條形T形反Z形隨機(jī)數(shù)STYLES的下標(biāo)Z形7形反7形方塊形 圖4-2 隨機(jī)產(chǎn)生方塊圖

      2>隨機(jī)選取一個(gè)圖形,圖3-1隨機(jī)產(chǎn)生方塊圖具體描述用生成的隨機(jī)數(shù)控制產(chǎn)生的圖形。

      3>當(dāng)前圖形在其4*4網(wǎng)格中的位置信息。

      繪制4行4列的方塊預(yù)顯方格,隨機(jī)生成預(yù)顯示的方塊樣式。本游戲用二維數(shù)組存儲(chǔ)方塊的28種樣式。

      public final static int[][] STYLES = {//分別對(duì)應(yīng)對(duì)7種模型的28種狀態(tài)

      {0x0f00, 0x4444, 0x0f00, 0x4444}, // 長(zhǎng)條型的四種狀態(tài)

      {0x04e0, 0x0464, 0x00e4, 0x04c4}, // 'T'型的四種狀態(tài)

      {0x4620, 0x6c00, 0x4620, 0x6c00}, // 反'Z'型的四種狀態(tài)

      {0x2640, 0xc600, 0x2640, 0xc600}, // 'Z'型的四種狀態(tài)

      {0x6220, 0x1700, 0x2230, 0x0740}, // '7'型的四種狀態(tài)

      {0x6440, 0x0e20, 0x44c0, 0x8e00}, // 反'7'型的四種狀態(tài)

      {0x0660, 0x0660, 0x0660, 0x0660}, // 方塊的四種狀態(tài)};

      以下為與數(shù)組相對(duì)應(yīng)的方塊樣式截圖。? 長(zhǎng)條型的四種狀態(tài)

      圖4-3 長(zhǎng)條型狀態(tài)截圖

      ? 'T'型的四種狀態(tài)

      圖4-4 T型狀態(tài)截圖

      ? 反'Z'型的四種狀態(tài)

      圖4-5 反Z型狀態(tài)截圖

      ? 'Z'型的四種狀態(tài)

      圖4-6 Z型狀態(tài)截圖

      ? '7'型的四種狀態(tài)

      圖4-7 7型狀態(tài)截圖

      ? 反'7'型的四種狀態(tài)

      圖4-8 反7型狀態(tài)截圖

      ? 方塊的四種狀態(tài)

      圖4-9 方塊狀態(tài)截圖

      4.2.3 方塊移動(dòng)、旋轉(zhuǎn)設(shè)計(jì)

      方塊的翻轉(zhuǎn)與移動(dòng)比較容易實(shí)現(xiàn),方塊移動(dòng)只需要改變方塊的橫坐標(biāo)或縱坐標(biāo),然后重新繪制方塊即可。方塊翻轉(zhuǎn)也只需要改變背景數(shù)組的值,重新繪制方塊即可。

      本游戲方塊下落時(shí),進(jìn)行動(dòng)態(tài)繪制,實(shí)現(xiàn)Cloneable接口, 以指示 Object.clone()方法可以合法地對(duì)該類實(shí)例進(jìn)行按字段復(fù)制。方塊的操作類BlockOperation繼承Thread類,重寫(xiě)run()方法,以實(shí)現(xiàn)方塊的動(dòng)態(tài)正確下落。當(dāng)然,在線程中要判定方塊是處于moving狀態(tài)還是pausing狀態(tài)。

      public void run(){ //moving判定方塊是否在動(dòng)態(tài)下落

      while(moving){

      try

      {

      //betweenleveltime指示相鄰等級(jí)之間相差時(shí)間

      sleep(betweenleveltime

      *(ControlMainGame.maxlevel1][j].clone();

      } // 每次消行加10分

      score += ControlMainGame.scoreplus;// 等級(jí)更新

      scoreForLevelUpdate += ControlMainGame.scoreplus;// 重繪畫(huà)布

      repaint();} 控制面板中按鈕的功能在4.3.1中已給出代碼,在此不再贅述。系統(tǒng)的測(cè)試運(yùn)行

      5.1 測(cè)試的意義及注意事項(xiàng)

      軟件測(cè)試是軟件設(shè)計(jì)過(guò)程中極其重要的一個(gè)環(huán)節(jié),是保證軟件的質(zhì)量的重要保障。測(cè)試的方法的好壞會(huì)直接影響到軟件的好壞,進(jìn)行軟件測(cè)試可以找出其中的錯(cuò)誤、不足并加以改進(jìn),從而得到一個(gè)高效、可靠的系統(tǒng)。

      軟件應(yīng)從多角度進(jìn)行測(cè)試和分析,這樣才能找出其中錯(cuò)誤的地方。測(cè)試的時(shí)間最好找一些與設(shè)計(jì)系統(tǒng)無(wú)關(guān)的人員,或者分析人員。因?yàn)樵陂_(kāi)發(fā)軟件的時(shí)候,開(kāi)發(fā)人員已經(jīng)形成了自己的思維定勢(shì),在測(cè)試的時(shí)候始終受到這種思想的束縛,很難找出其中的錯(cuò)誤而與設(shè)計(jì)無(wú)關(guān)的人員和那些分析人員很容易找出錯(cuò)誤所在。

      在程序調(diào)試過(guò)程中一定要耐心仔細(xì),一個(gè)細(xì)微的錯(cuò)誤將會(huì)導(dǎo)致整個(gè)功能不能實(shí)現(xiàn)導(dǎo)致浪費(fèi)很多的時(shí)間去修改。應(yīng)在以下幾方面加以注意:

      1>語(yǔ)法錯(cuò)誤

      語(yǔ)法錯(cuò)誤是經(jīng)常碰到的錯(cuò)誤。例如,命令拼寫(xiě)錯(cuò)誤或傳遞給函數(shù)的參數(shù)不正確都將產(chǎn)生錯(cuò)誤。語(yǔ)法錯(cuò)誤可能導(dǎo)致不能繼續(xù)編寫(xiě)代碼。2>邏輯錯(cuò)誤

      邏輯錯(cuò)誤通常可能是潛在和難以檢測(cè)的。當(dāng)有因鍵入錯(cuò)誤或程序邏輯流程引起的邏輯錯(cuò)誤,可能會(huì)成功運(yùn)行,但產(chǎn)生的結(jié)果卻是錯(cuò)的。例如,當(dāng)本應(yīng)使用小于符號(hào)比較數(shù)值,但卻使用了大于符號(hào)時(shí),那么將返回不正確的結(jié)果。

      3>運(yùn)行時(shí)錯(cuò)誤

      運(yùn)行時(shí)錯(cuò)誤是在執(zhí)行過(guò)程中指令試圖執(zhí)行不可能的動(dòng)作而導(dǎo)致的,必須糾正運(yùn)行時(shí)產(chǎn)生的錯(cuò)誤,這樣才能保證軟件運(yùn)行的可靠性。

      本游戲在開(kāi)發(fā)過(guò)程中采用了多種有效措施進(jìn)行測(cè)試以保證軟件質(zhì)量,對(duì)本游戲進(jìn)行了邊界處旋轉(zhuǎn)、方塊翻轉(zhuǎn)越界等方面的測(cè)試,極大的保證了軟件質(zhì)量和出錯(cuò)幾率。但是系統(tǒng)中可能還存在著一些其他的錯(cuò)誤和缺陷,因此,游戲必須要經(jīng)過(guò)反復(fù)的運(yùn)行測(cè)試,盡最大量將bug減到最少。5.2 游戲代碼、算法的測(cè)試

      1>寫(xiě)get()方法時(shí)需要有返回值,但是程序中沒(méi)有寫(xiě)return語(yǔ)句,使程序在編譯時(shí)出現(xiàn)錯(cuò)誤。解決方法是,在方法中加入return語(yǔ)句,返回相應(yīng)的內(nèi)容即可。

      2>使用隨機(jī)函數(shù)產(chǎn)生方塊時(shí)沒(méi)有給各個(gè)方塊傳入?yún)?shù),編譯不能通過(guò)。解決方法是,根據(jù)各個(gè)方塊的構(gòu)造傳入相應(yīng)的參數(shù)。

      3>寫(xiě)T字形方塊各方格的默認(rèn)位置時(shí),將控制方塊位置的變量i,初始化為0,運(yùn)行的結(jié)果是丁字形方塊默認(rèn)成了豎形方塊。解決方法是,將變量i的初始化數(shù)值改為1,即可達(dá)到設(shè)計(jì)的效果。

      4>運(yùn)行程序時(shí),統(tǒng)計(jì)的分?jǐn)?shù)只是每一次消除滿行后的分?jǐn)?shù),而以前的分?jǐn)?shù)就會(huì)被覆蓋,沒(méi)有累計(jì)。解決方法是,將程序中的“score=”改為“score+=”,就可以使分?jǐn)?shù)累加。

      5>算法流程的錯(cuò)誤主要集中在如何檢測(cè)及消去方塊,還有如何在通關(guān)之后對(duì)分?jǐn)?shù)的累加進(jìn)行處理,是否升級(jí)的判定這些方面,經(jīng)過(guò)與同學(xué)的討論以及參考資料,都最終得到了解決。

      5.3 游戲界面菜單選項(xiàng)的功能測(cè)試

      1>“游戲”菜單測(cè)試 ①點(diǎn)擊“游戲”?“新游戲” 輸出:游戲重置 結(jié)果:正常

      ②點(diǎn)擊“游戲”?“退出” 輸出:游戲結(jié)束 結(jié)果:正常

      ③點(diǎn)擊“游戲”?“提高等級(jí)”?輸出:等級(jí)提高一級(jí)?結(jié)果:正常?④點(diǎn)擊“游戲”?“降低等級(jí)”?輸出:等級(jí)降低一級(jí)?結(jié)果:正常?2>點(diǎn)擊“背景”菜單測(cè)試

      ①點(diǎn)擊“背景”?“前景色”?“黑色” 輸出:方塊顏色變成黑色 結(jié)果:正常

      ② 點(diǎn)擊“背景”?“背景色”?“黑色” 輸出:背景顏色變成黑色 結(jié)果:正常

      3>“控制”菜單測(cè)試 ①點(diǎn)擊“控制”?“開(kāi)始” 輸出:開(kāi)始游戲,方塊開(kāi)始下落

      結(jié)果:正常

      ②點(diǎn)擊“控制”?“暫停” 輸出:暫停游戲,方塊停止下落 結(jié)果:正常

      ③點(diǎn)擊“控制”?“重新開(kāi)始” 輸出:重新開(kāi)始新游戲 結(jié)果:正常

      ④點(diǎn)擊“控制”?“停止” 輸出:游戲停止 結(jié)果:正常

      4>“幫助”菜單測(cè)試

      ①點(diǎn)擊“幫助”?“游戲幫助” 輸出:彈出對(duì)話框,提示游戲規(guī)則 結(jié)果:正常

      圖5-1 游戲幫助菜單運(yùn)行截圖

      ②點(diǎn)擊“幫助”?“關(guān)于”

      輸出:彈出對(duì)話框,提示游戲軟件版本相關(guān)信息 結(jié)果:正常

      圖5-2 游戲關(guān)于菜單運(yùn)行截圖

      5.4 按鍵事件的功能測(cè)試

      1>方塊移動(dòng)測(cè)試

      游戲過(guò)程中,點(diǎn)擊“左、右、下”方向鍵 輸出:方塊正常移動(dòng),不會(huì)移出邊界 結(jié)果:正常 2>方塊旋轉(zhuǎn)測(cè)試

      游戲過(guò)程中,點(diǎn)擊向上方向鍵

      輸出:方塊無(wú)邊界和障礙物阻擋的情況下可反轉(zhuǎn) 結(jié)果:正常

      5.5 方塊堆砌與消行測(cè)試

      1>方塊堆砌測(cè)試

      當(dāng)方塊下落到最底面或與障礙物接觸時(shí) 輸出:方塊成功堆砌在底部 結(jié)果:正常 2>游戲消行測(cè)試 當(dāng)出現(xiàn)滿行現(xiàn)象時(shí)

      輸出:所有滿行被消除,方塊依次下移 結(jié)果:正常

      圖 5-3 游戲結(jié)束狀態(tài)截圖

      3>游戲結(jié)束測(cè)試 當(dāng)出現(xiàn)滿屏現(xiàn)象時(shí)

      輸出:彈出會(huì)話窗口,提示“Game Over”,如圖5-3所示。5.6 測(cè)試結(jié)果分析

      經(jīng)過(guò)本次系統(tǒng)測(cè)試,本游戲?qū)崿F(xiàn)預(yù)設(shè)的基本功能,不過(guò)整體功能還不夠強(qiáng)大,創(chuàng)新方面做的稍微遜色,作為開(kāi)發(fā)的第一個(gè)版本,游戲在功能、界面設(shè)計(jì)等很多方面還需要進(jìn)一步完善。結(jié) 論

      在做畢業(yè)設(shè)計(jì)之前,我對(duì)Java相關(guān)的開(kāi)發(fā)只是停留在理論知識(shí)的水平上,此次畢業(yè)設(shè)計(jì)讓我明白“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”的道理。缺乏實(shí)際的軟件開(kāi)發(fā)經(jīng)驗(yàn),是我給自己下的定論。通過(guò)這次畢業(yè)設(shè)計(jì),我完成了俄羅斯方塊游戲的全部開(kāi)發(fā)任務(wù)。在整個(gè)開(kāi)發(fā)過(guò)程中遇到了很多問(wèn)題,如方塊的繪制和變形、線程的創(chuàng)建問(wèn)題、同步的控制、滿行判斷、消行的處理以及最高分?jǐn)?shù)記錄的功能實(shí)現(xiàn),但最終都被我一一解決,對(duì)其中比較主要的幾點(diǎn)體會(huì)總結(jié)如下:

      第一,為了熟悉俄羅斯方塊的相關(guān)功能和設(shè)計(jì),我時(shí)常從各大游戲下載網(wǎng)站下載單機(jī)版俄羅斯方塊游戲,并研究其中功能的實(shí)現(xiàn)和界面的設(shè)計(jì),思考和查閱資料進(jìn)行分析,經(jīng)過(guò)逐步的設(shè)計(jì)與反復(fù)的修改論證,才完成了整個(gè)游戲的開(kāi)發(fā)。

      第二,在游戲設(shè)計(jì)過(guò)程中,我采用從粗到精的設(shè)計(jì)模式,從小到大測(cè)試的原則。先設(shè)計(jì)游戲框架,并逐層測(cè)試,而后再添加具體實(shí)現(xiàn)代碼并逐步進(jìn)行更細(xì)化的測(cè)試。設(shè)計(jì)過(guò)程中,經(jīng)常會(huì)遇到難題,我會(huì)通過(guò)反復(fù)思考和測(cè)試,然后找出自己的錯(cuò)誤并加以改正,再進(jìn)行下一個(gè)步驟,確保萬(wàn)無(wú)一失,盡力減輕最后的調(diào)試工作量。

      第三,畢業(yè)設(shè)計(jì)業(yè)可以作為一個(gè)不斷學(xué)習(xí)新鮮事物的過(guò)程,從設(shè)計(jì)初的不懂到最后能夠圓滿完成,我體會(huì)到在實(shí)踐中不斷學(xué)習(xí)的重要性,這對(duì)于將來(lái)我走上工作崗位具有重要的教育意義。通過(guò)畢業(yè)設(shè)計(jì)的創(chuàng)作,我對(duì)Java這門(mén)課程有了更深一步的了解,也對(duì)我今后的就業(yè)之路打下了一定的基礎(chǔ)。

      參考文獻(xiàn)

      [1](美)Paul Hyde.Java線程編程[M].北京:人們郵電出版社,2003 [2]Martin dejode.Symbian OS J2ME[M].北京:人民郵電出版社,2005.10 [3]朱福喜.Java程序設(shè)計(jì)技巧與開(kāi)發(fā)實(shí)例[M].北京:人民郵電出版社,2004.2 [4]袁海燕 王文濤.Java實(shí)用程序設(shè)計(jì)100例[M].北京:人民郵電出版社,2005.2:51~96 [5]高凌琴 陳青華.俄羅斯方塊游戲關(guān)鍵技術(shù)探討[J].信息技術(shù)與信息化討,2008年第二期

      [6]黃復(fù)賢.俄羅斯方塊游戲的敏捷設(shè)計(jì)與開(kāi)發(fā)[J].電腦編程技巧與維護(hù),2005.4 [7]艾克爾.Java編程思想[M].北京:機(jī)械工業(yè)出版社,2005.2 [8](美)Paul Hyde.Java線程編程[M].北京:人們郵電出版社,2003 [9](美)Bill Venners.深入Java虛擬機(jī)[M].北京:機(jī)械工業(yè)出版社,2003.9.63~98 [10]聞怡洋.J2ME MIDP 1.0/2.0無(wú)線設(shè)備編程指南[M].北京:北京大學(xué)出版社,2004.5:393~420 [11]趙東躍.俄羅斯方塊編程[J].電腦編程技巧與維護(hù),1998年第六期 [12]殷兆麟.Java網(wǎng)絡(luò)編程基礎(chǔ)[M].北京:北方交通大學(xué)出版社,2004 [13](美)John Zukowski.Java 2 從入門(mén)到精通[M].北京:電子工業(yè)出版社,1999 [14]宋波.Java應(yīng)用開(kāi)發(fā)教程[M].北京:電子工業(yè)出版社,2002 [15]托普雷.J2ME技術(shù)手冊(cè)[M].北京:中國(guó)電力出版社,2004.6:259~312

      致 謝

      在這次畢業(yè)設(shè)計(jì)制作和畢業(yè)論文寫(xiě)作過(guò)程中,老師在論文寫(xiě)作過(guò)程、相關(guān)專業(yè)知識(shí)的指導(dǎo)等方面,給予了我大力的支持和幫助,還有安博實(shí)訓(xùn)基地實(shí)習(xí)導(dǎo)師林紅星老師在代碼實(shí)現(xiàn)過(guò)程中對(duì)我的多方面指導(dǎo),以及各位同學(xué)在論文詳細(xì)設(shè)計(jì)流程圖制作等對(duì)我的幫助。同時(shí)向四年來(lái)教我知識(shí)、育我成長(zhǎng)的河南財(cái)經(jīng)政法大學(xué)計(jì)算機(jī)與信息工程學(xué)院的全體教師致以最衷心的謝意!

      由于我的學(xué)識(shí)有限,加之時(shí)間倉(cāng)促,文中不免有錯(cuò)誤和待改、不足之處,真誠(chéng)歡迎各位師長(zhǎng)、同學(xué)提出寶貴意見(jiàn)。我會(huì)以身作則,嚴(yán)于律己、奮勇拼搏,以母校為榮,走出一條屬于自己的陽(yáng)關(guān)大道。最后,祝愿所有的教師和同學(xué)們,愿你們身體健康,工作順利!

      第二篇:JAVA俄羅斯方塊實(shí)訓(xùn)總結(jié).doc

      JAVA俄羅斯方塊實(shí)訓(xùn)總結(jié)

      通過(guò)這次實(shí)訓(xùn)即有收獲,也有失落:

      1、俄羅斯方塊程序勿促完成,有很多的bug,架構(gòu)也有很多不合理的地方。雖然把所有的邏輯都進(jìn)行的封裝,但總感覺(jué)有些牽強(qiáng)附會(huì)。上課時(shí),并沒(méi)有講任何的面向?qū)ο蟮膬?nèi)容,這樣的代碼讓學(xué)生去理解實(shí)在是勉為其難。其實(shí)先讓學(xué)生以面向過(guò)程的方法去編程,過(guò)一段時(shí)間再學(xué)面向?qū)ο蠡蛟S對(duì)學(xué)生更為有利。

      2、代碼和邏輯過(guò)于復(fù)雜,一方面學(xué)生難于理解,以至于使很多的學(xué)生喪失了繼續(xù)學(xué)習(xí)程序的勇氣,打擊了一大片。另一方面,學(xué)生敲錯(cuò)代碼找老師解決,如果是語(yǔ)法錯(cuò)誤還容易解決掉,但如果是邏輯錯(cuò)誤就麻煩了,有時(shí),一個(gè)加減號(hào)的錯(cuò)誤就要花掉很多時(shí)間,這導(dǎo)至了教師的工作量大增。

      3、實(shí)現(xiàn)分?jǐn)?shù)顯示功能非常困難(這點(diǎn)是我沒(méi)想到的)有幾種解決方案,第一種是在界面上直接畫(huà)分?jǐn)?shù),但需要傳遞多一個(gè)畫(huà)板。第二種是使用事件(這樣比較合理,但太難),事件本身就很難理解了。由于使用的Timer本身是一個(gè)多線程的Timer,還需掌握多線程的知識(shí)才能做出來(lái),我的《C#語(yǔ)言參考視頻》還沒(méi)有做到多線程,這樣就變得難上加難了。但這樣也有一個(gè)好處,如果能實(shí)現(xiàn),能學(xué)到并理解不少的東西。

      4、在做程序時(shí)一直在考慮是否應(yīng)該使用靜態(tài)類,說(shuō)白了就是把靜態(tài)類當(dāng)全局變量使用。最后是決定i 用。但現(xiàn)在感覺(jué)還是應(yīng)該使用的,至少改變參數(shù)時(shí)不用寫(xiě)任何代碼就可以馬上見(jiàn)到效果,也可以減少幾百行的代碼,有效使程序減肥。

      5、實(shí)訓(xùn)時(shí)看到每個(gè)學(xué)生都在埋頭敲代碼感到很欣慰,有部分同學(xué)回到宿舍還繼續(xù)奮戰(zhàn)。雖然代碼完全是照視頻抄的,可能不會(huì)理解到太多的東西,但至少讓他們找到了學(xué)習(xí)和互助的感覺(jué),這一點(diǎn)才是最重要的。

      這次實(shí)訓(xùn)有很多不足之處,需要改進(jìn)。想了一下,大概制定了初步的解決方案,首先,程序代碼不超過(guò)1000行,其次,不使用面向?qū)ο蟮木幊谭椒ǎ?/p>

      1、繼續(xù)使用俄羅斯方塊,去掉設(shè)置界面,XML存儲(chǔ),也就是把磚塊樣式和快捷鍵寫(xiě)死在程序里面。這樣一半的代碼就沒(méi)了。另外再使用單色的磚塊樣式,這樣就可以使用位運(yùn)算實(shí)現(xiàn)部份邏輯,這樣不但加快了程序的運(yùn)行速度,算法變得簡(jiǎn)單,也減少了部份的代碼。但這樣做這個(gè)游戲就變得沒(méi)有特點(diǎn)了,可玩性大大降低。而且再重做一遍這個(gè)視頻好象也不太好。

      第三篇:基于JAVA WEB技術(shù)的旅行社網(wǎng)站系統(tǒng)設(shè)計(jì)(含源文件)

      【網(wǎng)站源代碼】

      旅游系統(tǒng)數(shù)據(jù)庫(kù)部分代碼:

      Static conn = DriverManager.getConnection(“jdbc:odbc:sql:sqlserver://localhost:1433/travel?useUnicode=true&characterEncoding =gb2312”, “ ”, “ ”);String password=“";Connection conn= DriverManager.getConnection(url,user,password);Statement stmt=conn.createStatement();executeQuery()方法對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢操作。

      sql=”SELECT count(*)c FROM `hotpoint` where `id`=0 and `hotelID`=“+hotel_Id;rs=stmt.executeQuery(sql);while(rs.next()){ count1 = rs.getInt(”c“);}

      模塊中關(guān)鍵代碼(實(shí)現(xiàn)表單的驗(yàn)證并提交到數(shù)據(jù)庫(kù)的代碼): sql=”select ID from Users where UserName='“+username+”'“;ResultSet rs=statement.executeQuery(sql);if(rs.next()){ err+=”該用戶名己經(jīng)存在,請(qǐng)更換用戶名!“;valid=false;} else{ String id=”select max(ID)as xxx from Users“;ResultSet a=statement.executeQuery(id);next();sql=”insertintoUsers(UserName,Password,Email,Sex,Phone,Address,Age,PostNumber, Rank,Face)values('“+username+”','“+password1+”','“+email+”','“+sex+”', '“+phone+”','“+address+”','“+age+”', '“+postnumber+”','“+rank+”','“+face+”')“;

      用 exe 傳遞所要執(zhí)行的操作: if(exe.equals(”write“)){ if(reid!=0){ rs.close();sql=”select ReplyNum from Articles where ID=“+reid;rs=statement.executeQuery(sql);rs.next();renum=rs.getInt(”ReplyNum“);renum++;//可以將上面的值進(jìn)行自增 rs.close();//注意 close 的位置

      sql=”updateArticlessetReplyNum='“+renum+”'whereID=“+reid;statement.executeUpdate(sql);} //此用戶的 PostNumber 加一

      sql=”selectPostNumberfromUserswhereUserName='“+username+”'“;rs=statement.executeQuery(sql);rs.next();int postnum=rs.getInt(”P(pán)ostNumber“);System.out.println(postnum);postnum++;rs.close();

      sql=”updateUserssetPostNumber='“+postnum+”'whereUserName='“+username+”'“;statement.executeUpdate(sql);//將文章信息存入數(shù)據(jù)庫(kù) renum=0;//在 上 面 的 內(nèi) 容 中 可 以 得 到 authorid,title,content,bid,reid,posttime,emotion,renum sql=”insert into Articles(AuthorID,Title,Content,BoardID,ReplyID,Posttime,Emotion, ReplyNum)values('“+authorid+”','“+title+”','“+content+”','“+bid+”','“+ reid+”', '“+posttime+”','“+emotion+”','“+renum+”')“;} else if(exe.equals(”modify“)){ String id=request.getParameter(”id“);sql=”updateArticlessetPostTime='“+posttime+”',Content='“+content+”'whe re ID=“+id;}

      網(wǎng)站頁(yè)面HTML代碼:

      XX旅游總社--旅游網(wǎng)

      name=description>

      content=XX旅游,XX旅游,旅游網(wǎng),旅行社,國(guó)內(nèi)旅游,出境旅游,旅游,周邊游,休閑,會(huì)議,度假,自由人,簽證,機(jī)票,出差,酒店,訂房,在線預(yù)定,特色旅游,專題旅游,夕陽(yáng)紅旅游,紅色旅游

      name=keywords>

      onload=”MM_preloadImages('5555.jpg')“ marginheight=”0“ marginwidth=”0“>