版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 前言1</b></p><p><b> 正文1</b></p><p> 1、設(shè)計(jì)任務(wù)與要求1</p><p> 1.1 設(shè)計(jì)任務(wù)與要求1</p><p>
2、 1.2 選題目的與意義1</p><p><b> 2、需求分析2</b></p><p> 2.1 用戶需求分析2</p><p> 2.2 開(kāi)發(fā)環(huán)境分析2</p><p><b> 3、系統(tǒng)設(shè)計(jì)3</b></p><p> 3.1 系統(tǒng)總體設(shè)計(jì):3
3、</p><p> 3.1.1 總體設(shè)計(jì)分析3</p><p> 3.1.2 程序結(jié)構(gòu)3</p><p> 3.2 功能模塊設(shè)計(jì)5</p><p> 3.2.1 功能模塊圖5</p><p> 3.2.2 功能模塊詳細(xì)設(shè)計(jì)6</p><p> 3.3 類的設(shè)計(jì):7<
4、/p><p><b> 4、程序?qū)崿F(xiàn)9</b></p><p> 4.1 程序流程圖9</p><p> 4.2 關(guān)鍵算法與技術(shù)實(shí)現(xiàn)10</p><p> 4.2.1 隨機(jī)數(shù)的獲取10</p><p> 4.2.2 輸入輸出10</p><p> 4.2.
5、3 判斷時(shí)間11</p><p> 4.2.4 自動(dòng)計(jì)數(shù)11</p><p> 4.2.5 結(jié)果輸出12</p><p> 4.2.6 圖形界面的實(shí)現(xiàn)12</p><p> 4.3 類的實(shí)現(xiàn)13</p><p><b> 5、源程序:14</b></p><
6、;p><b> 6、測(cè)試運(yùn)行18</b></p><p> 6.1 系統(tǒng)測(cè)試方案18</p><p> 6.2 運(yùn)行結(jié)果分析18</p><p><b> 6.3結(jié)論19</b></p><p><b> 致謝19</b></p><
7、;p><b> 參考文獻(xiàn)20</b></p><p><b> 前言</b></p><p> Java是一種簡(jiǎn)單的,面向?qū)ο蟮模植际降?,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程的動(dòng)態(tài)語(yǔ)言。猜數(shù)字游戲是一個(gè)簡(jiǎn)單,有趣的小游戲。通過(guò)設(shè)計(jì)猜數(shù)字游戲,可以進(jìn)一步了解Swing圖形用戶界面設(shè)計(jì),事件處理和異常處理機(jī)制。
8、利用Eclipse平臺(tái),綜合運(yùn)用Java基礎(chǔ)知識(shí),設(shè)計(jì)猜數(shù)字游戲。</p><p><b> 正文</b></p><p><b> 1、設(shè)計(jì)任務(wù)與要求</b></p><p> 1.1 設(shè)計(jì)任務(wù)與要求</p><p> 功能要求:該程序用圖形界面實(shí)現(xiàn)下面功能:用計(jì)算機(jī)產(chǎn)生一個(gè)100以內(nèi)的隨
9、機(jī)數(shù),游戲者進(jìn)行猜數(shù),猜中即勝,猜不中,提示是大了還是小了,繼續(xù)猜,直至猜對(duì)為止。游戲結(jié)束后給出評(píng)語(yǔ)并計(jì)算出玩家所用的時(shí)間與所猜的次數(shù)。</p><p><b> 具體要求:</b></p><p> (1) 輸入任意一個(gè)數(shù)字。數(shù)字的要求是1—100的自然數(shù)即可。</p><p> (2) 系統(tǒng)對(duì)您輸入的數(shù)字進(jìn)行判斷。如果玩家輸入的數(shù)字與
10、計(jì)算機(jī)隨機(jī)生成數(shù)相比較,輸入的數(shù)字比隨機(jī)生成數(shù)小.系統(tǒng)將提示您,數(shù)字太小請(qǐng)您重新輸入。如果玩家輸入的數(shù)字與計(jì)算機(jī)隨機(jī)生成數(shù)相比較,如果輸入的數(shù)字比隨機(jī)生成數(shù)大。系統(tǒng)將提示您,數(shù)字太大請(qǐng)您重新輸入。如果玩家輸入的字符不是合法字符,系統(tǒng)將提示您,您輸入的數(shù)字不合法,請(qǐng)從新輸入。</p><p> (3) 每猜測(cè)一次,系統(tǒng)會(huì)記錄下來(lái),游戲結(jié)束后,顯示共猜測(cè)多少次。</p><p> ?。?)
11、歡迎界面:通過(guò)這里提供的選項(xiàng)(或按鈕),進(jìn)入游戲界面。</p><p> ?。?) 游戲界面提供“獲取隨機(jī)數(shù)”按鈕,系統(tǒng)獲取到隨機(jī)數(shù),游戲者輸入自己的猜測(cè)結(jié)果,通過(guò)按“確認(rèn)”按鈕完成輸入。每次提示輸入猜測(cè)結(jié)果時(shí),給出猜測(cè)的準(zhǔn)確度提示。</p><p> (6) 按“獲取隨機(jī)數(shù)”按鈕,繼續(xù)游戲。</p><p> ?。?) 游戲結(jié)束后給出評(píng)語(yǔ)并計(jì)算出玩家所用的時(shí)間與
12、所猜次數(shù)。</p><p> 界面要示:用圖形界面實(shí)現(xiàn)。</p><p> 1.2 選題目的與意義</p><p> 通過(guò)猜數(shù)游戲這個(gè)課題我可以學(xué)到文本框、標(biāo)簽框、按鈕、布局、對(duì)話框方面的知識(shí)和應(yīng)用,達(dá)到設(shè)計(jì)登陸界面、加入圖像顯示功能以及設(shè)計(jì)按鈕的目的,讓我更加的掌握和理解java面向?qū)ο笳Z(yǔ)言的需求分析、系統(tǒng)設(shè)計(jì),所以我選擇猜數(shù)游戲這個(gè)課題。</p>
13、;<p><b> 2、需求分析</b></p><p> 2.1 用戶需求分析</p><p> 1.玩家輸入一個(gè)數(shù)字,數(shù)字的范圍在1-100之間,系統(tǒng)獲取隨機(jī)數(shù)。</p><p> 2.對(duì)玩家輸入的數(shù)字進(jìn)行判斷大小,如果不是系統(tǒng)要求的數(shù)字,系統(tǒng)將提示您,您輸入的不是數(shù)字請(qǐng)重新輸入,給出提醒以便玩家進(jìn)一步選擇。</
14、p><p> 3.玩家猜中時(shí)系統(tǒng)給出所用時(shí)間和游戲水平的判斷,系統(tǒng)給出是否繼續(xù)的提示及判斷。</p><p> 4.系統(tǒng)根據(jù)您猜數(shù)字的次數(shù),自動(dòng)計(jì)數(shù).</p><p> 5.直到用戶猜到數(shù)字為止,提示信息是否繼續(xù)猜數(shù)字,如果繼續(xù)將進(jìn)入下一次游戲,如果退出將退出游戲系統(tǒng).</p><p> 2.2 開(kāi)發(fā)環(huán)境分析</p><
15、;p> Eclipse企業(yè)級(jí)工作平臺(tái)(Eclipse Enterprise Workbench ,簡(jiǎn)稱Eclipse)是對(duì)Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和JavaEE的開(kāi)發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibern
16、ate。</p><p> 在結(jié)構(gòu)上, Eclipse的特征可以被分為7類:</p><p> 1. JavaEE模型</p><p> 2. WEB開(kāi)發(fā)工具</p><p> 3. EJB開(kāi)發(fā)工具</p><p> 4. 應(yīng)用程序服務(wù)器的連接器</p><p> 5. JavaEE
17、項(xiàng)目部署服務(wù)</p><p><b> 6. 數(shù)據(jù)庫(kù)服務(wù)</b></p><p> 7. Eclipse整合幫助</p><p> 對(duì)于以上每一種功能上的類別,在Eclipse中都有相應(yīng)的功能部件,并通過(guò)一系列的插件來(lái)實(shí)現(xiàn)它們。Eclipse結(jié)構(gòu)上的這種模塊化,可以讓我們?cè)诓挥绊懫渌K的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。</
18、p><p> 簡(jiǎn)單而言,Eclipse是Eclipse的插件,也是一款功能強(qiáng)大的JavaEE集成開(kāi)發(fā)環(huán)境,支持代碼編寫(xiě)、配置、測(cè)試以及除錯(cuò)。</p><p> 該程序基于JDK和Eclipse編寫(xiě),選用Eclipse是界面設(shè)計(jì)所需。根據(jù)系統(tǒng)范圍隨機(jī)產(chǎn)生一個(gè)數(shù)字,可根據(jù)玩家選擇給出不同的數(shù)字。玩家輸入所猜數(shù)字時(shí)給出與真實(shí)數(shù)字的大小比較。在玩家猜中時(shí),可給出其所用時(shí)間,并給出評(píng)價(jià)。最后,游戲的
19、結(jié)束與繼續(xù)可由玩家控制。</p><p><b> 3、系統(tǒng)設(shè)計(jì)</b></p><p> 3.1 系統(tǒng)總體設(shè)計(jì):</p><p> 3.1.1 總體設(shè)計(jì)分析</p><p> 1.隨機(jī)數(shù)的獲?。和婕逸斎胍粋€(gè)數(shù)字,數(shù)字的范圍在1-100之間,系統(tǒng)獲取隨機(jī)數(shù)。</p><p> 2. 輸入
20、輸出模塊:對(duì)玩家輸入的數(shù)字進(jìn)行判斷和提示。如果玩家輸入的不是系統(tǒng)要求的數(shù)字,系統(tǒng)將提示您,您輸入的不是數(shù)字請(qǐng)重新輸入.。如果玩家輸入的數(shù)字與隨機(jī)生成數(shù)相比較,比隨機(jī)生成數(shù)小.系統(tǒng)提示您,數(shù)字太小請(qǐng)您重新輸入。如果玩家輸入的數(shù)字與隨機(jī)生成數(shù)相比較,比隨機(jī)生成數(shù)大.系統(tǒng)提示您,數(shù)字太大請(qǐng)您重新輸入。</p><p> 3. 判斷模塊:算出所用時(shí)間在玩家猜中時(shí)給出其所用時(shí)間,系統(tǒng)給出對(duì)其水平的判斷和是否繼續(xù)的提示;對(duì)
21、玩家要求判斷執(zhí)行。</p><p> 4.自動(dòng)計(jì)數(shù)模塊:系統(tǒng)根據(jù)您猜數(shù)字的次數(shù),自動(dòng)計(jì)數(shù).</p><p> 5.結(jié)果輸出模塊:直到用戶猜到數(shù)字為止,提示信息是否繼續(xù)猜數(shù)字,如果繼續(xù)將進(jìn)入下一次游戲,如果退出將退出游戲系統(tǒng).</p><p> 3.1.2 程序結(jié)構(gòu)</p><p> 點(diǎn)擊“獲取隨機(jī)數(shù)”按鈕,系統(tǒng)獲取到一個(gè)隨機(jī)數(shù)。 玩家
22、輸入一個(gè)數(shù),如果玩家輸入的數(shù)比系統(tǒng)給出的隨機(jī)數(shù)小,系統(tǒng)會(huì)提示“您猜的太小了,請(qǐng)繼續(xù)猜!”。如果玩家輸入的數(shù)比系統(tǒng)給出的隨機(jī)數(shù)大,系統(tǒng)提示“您猜的太大了,請(qǐng)繼續(xù)猜!”。 如果玩家猜對(duì)了數(shù),但是所用時(shí)間大于十秒,系統(tǒng)會(huì)提示“這么久才猜出來(lái),有點(diǎn)笨!”,并且會(huì)計(jì)算出玩家所用的時(shí)間和所猜的次數(shù)。如果玩家猜對(duì)了數(shù),而且所用時(shí)間小于十秒,系統(tǒng)會(huì)提示“恭喜您,猜對(duì)了!您真棒,智商真高!”,并且會(huì)計(jì)算出玩家所用的時(shí)間和所猜的次數(shù)。</p>
23、<p><b> 圖1 程序結(jié)構(gòu)圖</b></p><p> 3.2 功能模塊設(shè)計(jì)</p><p> 3.2.1 功能模塊圖</p><p> 游戲分為隨機(jī)數(shù)的獲取,輸入輸出模塊,判斷模塊,自動(dòng)計(jì)數(shù)模塊,結(jié)果輸出模塊。其中輸入輸出模塊中系統(tǒng)會(huì)對(duì)玩家給出的數(shù)進(jìn)行判斷和輸出。判斷模塊會(huì)對(duì)玩家的水平進(jìn)行判斷,并計(jì)算出玩家所用的時(shí)間
24、和次數(shù)。</p><p><b> 圖2 功能模塊圖</b></p><p> 3.2.2 功能模塊詳細(xì)設(shè)計(jì)</p><p><b> ?。?)隨機(jī)數(shù)的獲取</b></p><p> 功能描述:玩家輸入一個(gè)數(shù)字,數(shù)字的范圍在1-100之間,系統(tǒng)獲取隨機(jī)數(shù)。</p><p&g
25、t; ?。?) 輸入輸出模塊</p><p> 功能描述:對(duì)玩家輸入的數(shù)字進(jìn)行判斷和提示。如果玩家輸入的不是系統(tǒng)要求的數(shù)字,系統(tǒng)將提示您,您輸入的不是數(shù)字請(qǐng)重新輸入.。如果玩家輸入的數(shù)字與隨機(jī)生成數(shù)相比較,比隨機(jī)生成數(shù)小.系統(tǒng)提示您,數(shù)字太小請(qǐng)您重新輸入。如果玩家輸入的數(shù)字與隨機(jī)生成數(shù)相比較,比隨機(jī)生成數(shù)大.系統(tǒng)提示您,數(shù)字太大請(qǐng)您重新輸入。</p><p> 圖3 輸入輸出模塊圖&l
26、t;/p><p><b> (3) 判斷模塊</b></p><p> 功能描述:算出所用時(shí)間在玩家猜中時(shí)給出其所用時(shí)間,系統(tǒng)給出對(duì)其水平的判斷和是否繼續(xù)的提示;對(duì)玩家要求判斷執(zhí)行。</p><p><b> 圖4 判斷模塊圖</b></p><p> (4) 自動(dòng)計(jì)數(shù)模塊</p>
27、<p> 功能描述:系統(tǒng)根據(jù)您猜數(shù)字的次數(shù),自動(dòng)計(jì)數(shù).</p><p> 圖5 自動(dòng)計(jì)數(shù)模塊圖</p><p> (5) 結(jié)果輸出模塊</p><p> 功能描述:直到用戶猜到數(shù)字為止,提示信息是否繼續(xù)猜數(shù)字,如果繼續(xù)將進(jìn)入下一次游戲,如果退出將退出游戲系統(tǒng).</p><p><b> 3.3 類的設(shè)計(jì):<
28、;/b></p><p><b> 表1類的分類</b></p><p> 從用戶的角度看,Java 源程序中的類分為兩種:</p><p> 系統(tǒng)定義的類:即 Java 類庫(kù),它是系統(tǒng)定義好的類。Java 語(yǔ)言由語(yǔ)法規(guī)則和類庫(kù)兩部分組成,語(yǔ)法規(guī)則確定 Java 程序的書(shū)寫(xiě)規(guī)范;類庫(kù)則提供了 Java 程序與運(yùn)行它的系統(tǒng)軟件(Jav
29、a 虛擬機(jī))之間的接口。</p><p> 用戶自定義類:系統(tǒng)定義的類雖然實(shí)現(xiàn)了許多常見(jiàn)的功能,但是用戶程序仍然需要針對(duì)特定問(wèn)題的特定邏輯來(lái)定義自己的類。</p><p> 在 Java 程序中,用戶自定義類的一般格式如下: </p><p><b> class 類名</b></p><p><b>
30、 數(shù)據(jù)成員</b></p><p><b> 成員方法</b></p><p> 類的結(jié)構(gòu)是由類說(shuō)明和類體兩部分組成的。</p><p> 類的說(shuō)明部分由關(guān)鍵字 class 與類名組成,類名的命名遵循 Java 標(biāo)識(shí)符的定義規(guī)則。</p><p> 類體是類聲明中花括號(hào)所包括的全部?jī)?nèi)容,它又是由數(shù)據(jù)成
31、員(屬性)和成員方法(方法)兩部分組成。</p><p> 數(shù)據(jù)成員描述對(duì)象的屬性;成員方法則刻畫(huà)對(duì)象的行為或動(dòng)作,每一個(gè)成員方法確定一個(gè)功能或操作。</p><p> 首先搭建Java程序框架。打開(kāi)Eclipse,新建名為GuessNumberGame的項(xiàng)目,然后新建名為GuessNumber的Java類。GuessNumber加上合適的javadoc。</p><
32、;p> 第一步:隨機(jī)數(shù)的產(chǎn)生</p><p> 我們可以借助Java API提供的Random類來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù)。</p><p> 首先在main函數(shù)中加入以下三行代碼:</p><p> // 新建一個(gè)隨機(jī)數(shù)產(chǎn)生器,然后生成一個(gè)1到100之間的整數(shù)。</p><p> num=(int)(Math.random()*100
33、);</p><p> String answer;</p><p> Scanner input=new Scanner(System.in); </p><p> 第二步:標(biāo)準(zhǔn)輸入輸出</p><p> 標(biāo)準(zhǔn)輸入輸出(Standard I/O)是指可以被應(yīng)用程序使用的信息流。應(yīng)用程序可以從標(biāo)準(zhǔn)輸入(Standard inp
34、ut)讀取數(shù)據(jù),向標(biāo)準(zhǔn)輸出(Standard output)寫(xiě)數(shù)據(jù),把出錯(cuò)信息發(fā)送到標(biāo)準(zhǔn)錯(cuò)誤(Standard error)。通過(guò)輸入輸出,應(yīng)用程序和應(yīng)用程序之間可以被串聯(lián)起來(lái)使用。雖然標(biāo)準(zhǔn)輸入輸出是從UNIX發(fā)展出來(lái)的概念,在Windows中也廣泛應(yīng)用。</p><p> 猜數(shù)字游戲主要用到標(biāo)準(zhǔn)輸入,更明確一些,就是控制臺(tái)輸入。相反,要從控制臺(tái)輸入,就需要用到System.in。它是一個(gè)純粹的輸入流,而猜數(shù)字
35、游戲主要是通過(guò)控制臺(tái)獲取玩家的字符輸入,我們需要把它包裝成一個(gè)BufferedReader。</p><p> 第三步:使用BorderLayout對(duì)圖形界面的窗口進(jìn)行設(shè)計(jì)。</p><p><b> 4、程序?qū)崿F(xiàn)</b></p><p><b> 4.1 程序流程圖</b></p><p>
36、 點(diǎn)擊“獲取隨機(jī)數(shù)”按鈕,系統(tǒng)獲取到一個(gè)隨機(jī)數(shù)。 玩家輸入一個(gè)數(shù),如果玩家輸入的數(shù)比系統(tǒng)給出的隨機(jī)數(shù)小,系統(tǒng)會(huì)提示“您猜的太小了,請(qǐng)繼續(xù)猜!”。如果玩家輸入的數(shù)比系統(tǒng)給出的隨機(jī)數(shù)大,系統(tǒng)提示“您猜的太大了,請(qǐng)繼續(xù)猜!”。 如果玩家猜對(duì)了數(shù),但是所用時(shí)間大于十秒,系統(tǒng)會(huì)提示“這么久才猜出來(lái),有點(diǎn)笨!”,并且會(huì)計(jì)算出玩家所用的時(shí)間和所猜的次數(shù)。如果玩家猜對(duì)了數(shù),而且所用時(shí)間小于十秒,系統(tǒng)會(huì)提示“恭喜您,猜對(duì)了!您真棒,智商真高!”,并且會(huì)
37、計(jì)算出玩家所用的時(shí)間和所猜的次數(shù)。</p><p><b> 圖6 程序流程圖</b></p><p> 4.2 關(guān)鍵算法與技術(shù)實(shí)現(xiàn)</p><p> 4.2.1 隨機(jī)數(shù)的獲取</p><p> num=(int)(Math.random()*100);</p><p> Strin
38、g answer;</p><p> Scanner input=new Scanner(System.in);</p><p> 4.2.2 輸入輸出</p><p> for(i=1;i<=10;i++)</p><p><b> {</b></p><p> if(n
39、um2<num){</p><p> lbshow.setText("您猜的太小了,請(qǐng)繼續(xù)猜!");</p><p> continue;</p><p><b> }</b></p><p> else if(num2>num){</p&
40、gt;<p> lbshow.setText("您猜的太大了,請(qǐng)繼續(xù)猜!");</p><p> continue;</p><p><b> }</b></p><p> long endTime=System.currentTimeMillis();</p><
41、;p><b> long t;</b></p><p> t=(endTime-startTime)/1000;</p><p> strshow="您總共猜了"+counter+"次,您猜數(shù)字總共花了"+(endTime-startTime)/1000+"秒";</p><
42、p><b> if(t<10)</b></p><p> lbshow.setText("恭喜您,猜對(duì)了!您真棒,智商真高!"+strshow);</p><p> else if(t>10)</p><p> lbshow.setText("這么久才猜出來(lái),有點(diǎn)笨!"+strs
43、how);</p><p><b> } </b></p><p><b> } </b></p><p> 4.2.3 判斷時(shí)間</p><p> startTime=System.currentTimeMillis();</p><p> long en
44、dTime=System.currentTimeMillis();</p><p> strshow="您猜數(shù)字總共花了"+(endTime-startTime)/1000+"秒";</p><p> 4.2.4 自動(dòng)計(jì)數(shù)</p><p> int geust=0;</p><p> count
45、er++;</p><p> strshow="您總共猜了"+counter+"次;</p><p> 4.2.5 結(jié)果輸出</p><p><b> long t;</b></p><p> t=(endTime-startTime)/1000;</p><p&
46、gt; strshow="您總共猜了"+counter+"次,您猜數(shù)字總共花了"+(endTime-startTime)/1000+"秒";</p><p><b> if(t<10)</b></p><p> lbshow.setText("恭喜您,猜對(duì)了!您真棒,智商真高!&quo
47、t;+strshow);</p><p> else if(t>10)</p><p> lbshow.setText("這么久才猜出來(lái),有點(diǎn)笨!"+strshow);</p><p> 4.2.6 圖形界面的實(shí)現(xiàn)</p><p> BorderLayout bdmg=new BorderLayout();
48、</p><p> Button button1=new Button("獲取隨機(jī)數(shù)"); </p><p> Button button2=new Button("確定"); </p><p> String str=null;</p><p> String str2=null;</p
49、><p> long startTime;</p><p> int num,num2;</p><p> int counter=0;</p><p> myGeustNum my1=new myGeustNum();</p><p> TextField input;</p><p>
50、 Label lbshow=new Label("");</p><p> Label lbshow2=new Label("");</p><p><b> int i;</b></p><p> String strshow;</p><p> public void
51、 init()</p><p><b> { </b></p><p> setLayout(bdmg);</p><p> add(button1,BorderLayout.NORTH); </p><p> button1.addActionListener(this);</p><p&g
52、t; button1.setSize(50,50);</p><p> Label lb1=new Label(" 請(qǐng)輸入");</p><p> lb1.setSize(50,20);</p><p> this.add(lb1,BorderLayout.WEST);</p><p> input=new Te
53、xtField(10);</p><p> input.setSize(40,50);</p><p> add(input,BorderLayout.CENTER);</p><p> add(button2,BorderLayout.EAST); </p><p> lb1.setSize(50,20);</p>&
54、lt;p> button2.addActionListener(this);</p><p> button2.setSize(50,20);</p><p> add(lbshow,BorderLayout.SOUTH);</p><p> setSize(450,200);</p><p><b> } <
55、/b></p><p><b> 4.3 類的實(shí)現(xiàn)</b></p><p> 首先搭建Java程序框架。打開(kāi)Eclipse,新建名為GuessNumberGame的項(xiàng)目,然后新建名為GuessNumber的Java類。GuessNumber加上合適的javadoc。</p><p> 第一步:隨機(jī)數(shù)的產(chǎn)生</p>&l
56、t;p> 我們可以借助Java API提供的Random類來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù)。</p><p> 首先在main函數(shù)中加入以下三行代碼:</p><p> // 新建一個(gè)隨機(jī)數(shù)產(chǎn)生器,然后生成一個(gè)1到100之間的整數(shù)。</p><p> num=(int)(Math.random()*100);</p><p> Strin
57、g answer;</p><p> Scanner input=new Scanner(System.in); </p><p> Eclipse立即在錯(cuò)誤語(yǔ)句處劃出紅線,把鼠標(biāo)移動(dòng)到紅線上。</p><p> 包(Package)的概念</p><p> Java API中包含了極其豐富、類似于Random這樣由Sun預(yù)先定義
58、好的類。不同包中可以有同名同姓的類,如果沒(méi)有包的概念,就會(huì)遇到命名沖突問(wèn)題。此外,包還能進(jìn)行安全控制。Random類是在java.util這個(gè)包中。可以手動(dòng)在源程序頂部輸入import java.util.Random;語(yǔ)句來(lái)申明該程序?qū)⒁褂胘ava.util包中的Random類,然而有了Eclipse,就不用那么麻煩了—把光標(biāo)移動(dòng)到有紅色波浪線的Random上,然后按下Ctrl+Shift+M,Eclipse會(huì)自動(dòng)幫你完成導(dǎo)入的工作
59、了,此時(shí)保存一下源代碼。</p><p> 第二句語(yǔ)句定義一個(gè)整型變量number來(lái)保存隨機(jī)產(chǎn)生的整數(shù),并且用直接初始化的方法把random產(chǎn)生的隨機(jī)數(shù)賦給number變量。</p><p> 第二步:標(biāo)準(zhǔn)輸入輸出</p><p> 標(biāo)準(zhǔn)輸入輸出(Standard I/O)是指可以被應(yīng)用程序使用的信息流。應(yīng)用程序可以從標(biāo)準(zhǔn)輸入(Standard input)讀
60、取數(shù)據(jù),向標(biāo)準(zhǔn)輸出(Standard output)寫(xiě)數(shù)據(jù),把出錯(cuò)信息發(fā)送到標(biāo)準(zhǔn)錯(cuò)誤(Standard error)。通過(guò)輸入輸出,應(yīng)用程序和應(yīng)用程序之間可以被串聯(lián)起來(lái)使用。雖然標(biāo)準(zhǔn)輸入輸出是從UNIX發(fā)展出來(lái)的概念,在Windows中也廣泛應(yīng)用。</p><p> 猜數(shù)字游戲主要用到標(biāo)準(zhǔn)輸入,更明確一些,就是控制臺(tái)輸入。相反,要從控制臺(tái)輸入,就需要用到System.in。它是一個(gè)純粹的輸入流,而猜數(shù)字游戲主要
61、是通過(guò)控制臺(tái)獲取玩家的字符輸入,我們需要把它包裝成一個(gè)BufferedReader。</p><p> 第三步:使用BorderLayout對(duì)圖形界面的窗口進(jìn)行設(shè)計(jì)。</p><p><b> 5、源程序:</b></p><p> Package a;</p><p> import java.awt.Colo
62、r; </p><p> import java.awt.Container; </p><p> import java.awt.FlowLayout; </p><p> import java.awt.event.ActionEvent; </p><p> import java.awt.event.ActionListene
63、r; </p><p> import javax.swing.Box; </p><p> import javax.swing.JButton; </p><p> import javax.swing.JFrame; </p><p> import javax.swing.JLabel; </p><p&
64、gt; import javax.swing.JOptionPane; </p><p> import javax.swing.JTextField; </p><p> class WindowButton extends JFrame implements ActionListener{ /** * </p><p><b> */
65、</b></p><p> private static final long serialVersionUID = 1L; </p><p> int number; </p><p> JTextField inputNumber; </p><p> JLabel feedBack; </p><
66、p> JButton buttonGetNumber,buttonEnter; </p><p> WindowButton(String s){ super("猜數(shù)字小游戲"); </p><p> buttonGetNumber=new JButton("得到一個(gè)隨機(jī)數(shù)"); </p><p> feedBa
67、ck=new JLabel("無(wú)反饋信息",JLabel.CENTER); </p><p> feedBack.setBackground(Color.green); </p><p> inputNumber=new JTextField("0",5); </p><p> buttonEnter=new JButt
68、on("確定"); </p><p> buttonEnter.addActionListener(this); </p><p> buttonGetNumber.addActionListener(this); </p><p> buttonGetNumber.addActionListener(this); </p>
69、<p> Box boxH1=Box.createHorizontalBox(); </p><p> boxH1.add(new JLabel("獲取1-100之間的隨機(jī)數(shù):")); </p><p> boxH1.add(buttonGetNumber); </p><p> Box boxH2=Box.createHori
70、zontalBox(); </p><p> boxH2.add(new JLabel("輸入您的猜測(cè): "));</p><p> boxH2.add(inputNumber); </p><p> Box boxH3=Box.createHorizontalBox(); </p><p> boxH3.add(
71、new JLabel("單擊確定按鈕: "));</p><p> boxH3.add(buttonEnter); </p><p> Box boxH4=Box.createHorizontalBox(); </p><p> boxH4.add(new JLabel("反饋信息: ")); </p>&
72、lt;p> boxH4.add(feedBack); </p><p> Box baseBox=Box.createVerticalBox(); </p><p> baseBox.add(boxH1); </p><p> baseBox.add(boxH2); </p><p> baseBox.add(boxH3);
73、</p><p> baseBox.add(boxH4); </p><p> Container con=getContentPane(); </p><p> con.setLayout(new FlowLayout()); </p><p> con.add(baseBox); </p><p> co
74、n.validate(); </p><p> setBounds(120,125,279,200); </p><p> setVisible(true); </p><p> setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); </p><p> setBounds(100,100,15
75、0,150); </p><p> setVisible(true); </p><p> validate(); } </p><p> public void actionPerformed(ActionEvent e){ </p><p> if(e.getSource()==buttonGetNumber){ </p&
76、gt;<p> number=(int)(Math.random()*100)+1; } </p><p> else if(e.getSource()==buttonEnter){</p><p> int guess=0; </p><p><b> try{ </b></p><p> gu
77、ess=Integer.parseInt(inputNumber.getText()); </p><p> if(guess==number){ </p><p> JOptionPane.showMessageDialog(this,"猜對(duì)了"); } </p><p> else if(guess>number){ </
78、p><p> JOptionPane.showMessageDialog(this,"猜大了"); </p><p> inputNumber.setText(null); } </p><p> else if(guess<number){ </p><p> JOptionPane.showMessageD
79、ialog(this,"猜小了"); </p><p> inputNumber.setText(null); } } </p><p> catch(NumberFormatException event){ </p><p> JOptionPane.showMessageDialog(this,"請(qǐng)輸入數(shù)字字符"
80、); } } </p><p><b> } } </b></p><p> public class 猜數(shù)字游戲 { </p><p> public static void main(String args[]){</p><p> new WindowButton("猜數(shù)字小游戲");
81、 } </p><p><b> }</b></p><p> package b;</p><p> import java.util.Date;</p><p> import java.util.Scanner;</p><p> public class test2 {</
82、p><p> public static void main(String[] args) {</p><p> //給定生成隨機(jī)數(shù)的范圍1~1000</p><p> Scanner input = new Scanner(System.in);</p><p> int num = (int) (Math.random() * 100
83、) + 1;</p><p> System.out.println("系統(tǒng)已經(jīng)生成數(shù)字,猜猜看這個(gè)數(shù)字是多少?(如果實(shí)在猜不出來(lái),就輸入'投降'吧)");</p><p> Date d1 = new Date();</p><p> int gNum = 0;</p><p> int coun
84、t = 0;</p><p> boolean isHandup = false;</p><p><b> do {</b></p><p><b> count++;</b></p><p> System.out.print("第" + count + "
85、次:");</p><p><b> try {</b></p><p> gNum = input.nextInt();</p><p> if (gNum < num) {</p><p> System.out.println("猜小了");</p><
86、;p><b> }</b></p><p> if (gNum > num) {</p><p> System.out.println("猜大了");</p><p><b> }</b></p><p> } catch (Exception ex) {
87、</p><p> if (input.next().trim().equals("投降")) {</p><p> isHandup = true;</p><p><b> break;</b></p><p><b> }</b></p><p&
88、gt; System.out.println("輸入數(shù)字格式不正確,請(qǐng)重新輸入。");</p><p><b> count--;</b></p><p><b> continue;</b></p><p><b> }</b></p><p>
89、 } while (gNum != num);</p><p> Date d2 = new Date();</p><p> int time = (int) ((d2.getTime() - d1.getTime()) / 1000 + 0.5);</p><p> if (isHandup) {</p><p> System.
90、out.println("悲劇,你投降了!共用了" + time + "秒,猜了" + (count-1)</p><p><b> + "次。");</b></p><p> isHandup=false;</p><p><b> } else {</b&g
91、t;</p><p> if (count * time < 10) {</p><p> System.out.println("太棒了!你運(yùn)氣真好!共用了" + time + "秒,猜了" + count</p><p><b> + "次。");</b></p&
92、gt;<p> } else if (count * time < 50) {</p><p> System.out.println("你真聰明!共用了" + time + "秒,猜了" + count + "次。");</p><p> } else if (count * time < 100
93、0) {</p><p> System.out.println("真棒!你竟然猜出來(lái)了!共用了" + time + "秒,猜了" + count</p><p><b> + "次。");</b></p><p><b> } else {</b><
94、/p><p> System.out.println("終于猜對(duì)了,你也太笨 了吧。。。共用了" + time + "秒,猜了" + count</p><p><b> + "次。");</b></p><p><b> }</b></p>&l
95、t;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 6、測(cè)試運(yùn)行</b></p><p> 6.1 系統(tǒng)測(cè)試方案</p><p> 1
96、.點(diǎn)擊運(yùn)行程序后,顯示出圖形界面。</p><p> 2.點(diǎn)擊“獲取隨機(jī)數(shù)”按鈕,系統(tǒng)獲取到一個(gè)隨機(jī)數(shù)。</p><p> 3 .玩家輸入一個(gè)數(shù),點(diǎn)擊“確定”按鈕。如果玩家輸入的數(shù)比系統(tǒng)給出的隨機(jī)數(shù)小,系統(tǒng)會(huì)提示“您猜的太小了,請(qǐng)繼續(xù)猜!”。如果玩家輸入的數(shù)比系統(tǒng)給出的隨機(jī)數(shù)大,系統(tǒng)提示“您猜的太大了,請(qǐng)繼續(xù)猜!”。</p><p> 4 .如果玩家猜對(duì)了數(shù),
97、但是所用時(shí)間大于十秒,系統(tǒng)會(huì)提示“這么久才猜出來(lái),有點(diǎn)笨!”,并且會(huì)計(jì)算出玩家所用的時(shí)間和所猜的次數(shù)。如果玩家猜對(duì)了數(shù),而且所用時(shí)間小于十秒,系統(tǒng)會(huì)提示“恭喜您,猜對(duì)了!您真棒,智商真高!”,并且會(huì)計(jì)算出玩家所用的時(shí)間和所猜的次數(shù)。</p><p> 5. 如果玩家想重新再玩一次,點(diǎn)擊“獲取隨機(jī)數(shù)”按鈕即可繼續(xù)玩下一輪游戲。</p><p> 6.2 運(yùn)行結(jié)果分析</p>
98、<p> 開(kāi)始運(yùn)行程序時(shí)圖形界面的顯示</p><p><b> 圖7 圖形顯示界面</b></p><p> 玩家輸入一個(gè)數(shù)“10”后,點(diǎn)擊“確定”,系統(tǒng)提示“您猜的太小了”。玩家再次輸入一個(gè)數(shù)“70”后,點(diǎn)擊“確定”,系統(tǒng)提示“您猜的太大了”。 玩家再次輸入一個(gè)數(shù)“32”,點(diǎn)擊“確定”,系統(tǒng)提示“猜對(duì)了”。</p><p>
99、;<b> 6.3結(jié)論</b></p><p> 經(jīng)過(guò)差不多兩個(gè)星期的努力,基本上完成我的Java課程設(shè)計(jì)—簡(jiǎn)單的記事本程序,也基本上實(shí)現(xiàn)了我在需求分析時(shí)所預(yù)期的功能。通過(guò)這次的課程設(shè)計(jì),使將我從書(shū)本上學(xué)習(xí)到的理論知識(shí)用到了實(shí)踐上,從而進(jìn)一步鞏固和豐富了我所學(xué)過(guò)的知識(shí),讓我更深層次地認(rèn)識(shí)到Java及其強(qiáng)大的功能。同時(shí),做這門(mén)課程設(shè)計(jì)也進(jìn)一步加強(qiáng)了我的動(dòng)手能力。為了完成好這次課程設(shè)計(jì),我提
100、前做了較多的準(zhǔn)備,一邊上網(wǎng)查找相關(guān)資料,另一方面查閱相關(guān)書(shū)籍。在這過(guò)程中也無(wú)形中鍛煉了我的思維分析、遇到問(wèn)題及想方設(shè)法通過(guò)各種途徑解決問(wèn)題的能力。但是,設(shè)計(jì)過(guò)程中也存在一些問(wèn)題,本來(lái)一開(kāi)始想給這個(gè)記事本程序加上一張背景圖片,以及添加字體設(shè)置功能,但是由于本人知識(shí)淺陋以及各種其他原因,使得這些想法沒(méi)有實(shí)現(xiàn),這是這次課程設(shè)計(jì)的一點(diǎn)遺憾。</p><p><b> 致謝</b></p>
101、;<p> 在這次課程設(shè)計(jì)的撰寫(xiě)過(guò)程中,我得到了許多人的幫助。首先我要感謝我的老師在課程設(shè)計(jì)上給予我的指導(dǎo)、提供給我的支持和幫助,這是我能順利完成這次報(bào)告的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我能把系統(tǒng)做得更加完善。在此期間,我不僅學(xué)到了許多新的知識(shí),而且也開(kāi)闊了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝幫助過(guò)我的同學(xué),他們也為我解決了不少我不太明白的設(shè)計(jì)商的難題。同時(shí)也感謝學(xué)院為我提供良好的做畢業(yè)設(shè)計(jì)
102、的環(huán)境。最后再一次感謝所有在設(shè)計(jì)中曾經(jīng)幫助過(guò)我的良師益友和同學(xué)。 </p><p><b> 參考文獻(xiàn)</b></p><p> [1] 印旻.Java與面向?qū)ο蟪绦蛟O(shè)計(jì)教程.北京:清華大學(xué)出版社,1999.11</p><p> [2] Cay S.Horstmann,Gary Cornell著.Java核心技術(shù).北京
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)-猜數(shù)游戲課程設(shè)計(jì)報(bào)告
- 猜數(shù)字游戲課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)字游戲
- c語(yǔ)言課程設(shè)計(jì)---猜數(shù)字游戲報(bào)告
- android課程設(shè)計(jì)報(bào)告--猜數(shù)字小游戲
- c語(yǔ)言程序課程設(shè)計(jì)-猜數(shù)字游戲
- java猜數(shù)字游戲論文
- c語(yǔ)言課程設(shè)計(jì)---猜數(shù)字游戲姚成
- android課程設(shè)計(jì)報(bào)告--猜數(shù)字小游戲.doc
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)---猜數(shù)字游戲
- 設(shè)計(jì)一個(gè)gui猜數(shù)字游戲程序課程設(shè)計(jì)
- 猜數(shù)字課程設(shè)計(jì)報(bào)告
- led猜盤(pán)游戲課程設(shè)計(jì)
- led猜盤(pán)游戲課程設(shè)計(jì)
- c++猜單詞課程設(shè)計(jì)--——猜單詞游戲
- 猜數(shù)字課程設(shè)計(jì)報(bào)告.doc
- c語(yǔ)言課程設(shè)計(jì)----猜字游戲
- c語(yǔ)言課程設(shè)計(jì)--猜數(shù)游戲
評(píng)論
0/150
提交評(píng)論