结对项目
?
一.?? 題目簡介:??
功能要求:該程序用圖形界面實現下面功能:用計算機產生一個100以內的隨機數,游戲者進行猜數,猜中即勝,猜不中,提示是大了還是小了,繼續猜,直至猜對為止。游戲結束后給出評語并計算出玩家所用的時間與所猜的次數。
具體要求:
(1) 輸入任意一個數字。數字的要求是1—100的自然數即可。
(2) 系統對您輸入的數字進行判斷。如果玩家輸入的數字與計算機隨機生成數相比較,輸入的數字比隨機生成數小.系統將提示您,數字太小請您重新輸入。如果玩家輸入的數字與計算機隨機生成數相比較,如果輸入的數字比隨機生成數大。系統將提示您,數字太大請您重新輸入。如果玩家輸入的字符不是合法字符,系統將提示您,您輸入的數字不合法,請從新輸入。
(3) 每猜測一次,系統會記錄下來,游戲結束后,顯示共猜測多少次。
(4) 歡迎界面:通過這里提供的選項(或按鈕),進入游戲界面。
(5) 游戲界面提供“獲取隨機數”按鈕,系統獲取到隨機數,游戲者輸入自己的猜測結果,通過按“確認”按鈕完成輸入。每次提示輸入猜測結果時,給出猜測的準確度提示。
(6) 按“獲取隨機數”按鈕,繼續游戲。
(7) 游戲結束后給出評語并計算出玩家所用的時間與所猜次數。
界面要示:用圖形界面實現。
二.?? 結對分工及過程
在本次作業中,我劉效玲負責寫代碼,文麗君負責測試代碼。
github鏈接:http://github.com/wenlijun/
設計過程:
(1)隨機數的獲取
功能描述:玩家輸入一個數字,數字的范圍在1-100之間,系統獲取隨機數。
?
(2)輸入輸出模塊
功能描述:對玩家輸入的數字進行判斷和提示。如果玩家輸入的不是系統要求的數字,系統將提示您,您輸入的不是數字請重新輸入.。如果玩家輸入的數字與隨機生成數相比較,比隨機生成數小.系統提示您,數字太小請您重新輸入。如果玩家輸入的數字與隨機生成數相比較,比隨機生成數大.系統提示您,數字太大請您重新輸入。
?
? ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ? ? ? ? ? ?? ?? ??? ???? ??? ??
| ???? 輸入輸出模塊 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 對玩家輸入的數字進行判斷和提示 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 您輸入的不是數 字 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 您輸入的太 小 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 您輸入的太 大 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 猜對了 ???? ???? |
??
?
圖3 輸入輸出模塊圖
?
(3) 判斷模塊
功能描述:算出所用時間在玩家猜中時給出其所用時間,系統給出對其水平的判斷和是否繼續的提示;對玩家要求判斷執行。
?
? ? ? ?? ?? ??? ???? ??? ??
| ???? 判斷模塊 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 時間計算功 能 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 系統對玩家的水平做出 ???? 判斷 ???? ???? |
?? ? ?? ?? ??? ???? ??? ??
| ???? 提示玩家是否繼 續 ???? ???? |
??
?
圖4 判斷模塊圖
?
?
?
(4) 自動計數模塊
功能描述:系統根據您猜數字的次數,自動計數.
? ? ?? ??? ??
| ??? 玩家猜數字,若猜錯 ??? ??? |
?? ??? ??
| ??? 計數器加1 ??? ??? |
?
?
?
?
圖5 自動計數模塊圖
?
(5) 結果輸出模塊
功能描述:直到用戶猜到數字為止,提示信息是否繼續猜數字,如果繼續將進入下一次游戲,如果退出將退出游戲系統.
?類的設計:
表1類的分類
| 類名 | 屬性 |
| Math.random | 數學中的隨機數。 |
| BorderLayout | 圖形界面窗口的設計與調整 |
| Concurrent | concurrent 在并發編程中很常用的實用工具類。 |
?
從用戶的角度看,Java 源程序中的類分為兩種:
系統定義的類:即 Java 類庫,它是系統定義好的類。Java 語言由語法規則和類庫兩部分組成,語法規則確定 Java 程序的書寫規范;類庫則提供了 Java 程序與運行它的系統軟件(Java 虛擬機)之間的接口。
用戶自定義類:系統定義的類雖然實現了許多常見的功能,但是用戶程序仍然需要針對特定問題的特定邏輯來定義自己的類。
在 Java 程序中,用戶自定義類的一般格式如下:
class 類名
數據成員
成員方法
類的結構是由類說明和類體兩部分組成的。
類的說明部分由關鍵字 class 與類名組成,類名的命名遵循 Java 標識符的定義規則。
類體是類聲明中花括號所包括的全部內容,它又是由數據成員(屬性)和成員方法(方法)兩部分組成。
數據成員描述對象的屬性;成員方法則刻畫對象的行為或動作,每一個成員方法確定一個功能或操作。
首先搭建Java程序框架。打開Eclipse,新建名為GuessNumberGame的項目,然后新建名為GuessNumber的Java類。GuessNumber加上合適的javadoc。
第一步:隨機數的產生
我們可以借助Java API提供的Random類來產生一個隨機數。
首先在main函數中加入以下三行代碼:
// 新建一個隨機數產生器,然后生成一個1到100之間的整數。
??? num=(int)(Math.random()*100);?????
String answer;??????
Scanner input=new Scanner(System.in);
第二步:標準輸入輸出
標準輸入輸出(Standard I/O)是指可以被應用程序使用的信息流。應用程序可以從標準輸入(Standard input)讀取數據,向標準輸出(Standard output)寫數據,把出錯信息發送到標準錯誤(Standard error)。通過輸入輸出,應用程序和應用程序之間可以被串聯起來使用。雖然標準輸入輸出是從UNIX發展出來的概念,在Windows中也廣泛應用。
猜數字游戲主要用到標準輸入,更明確一些,就是控制臺輸入。相反,要從控制臺輸入,就需要用到System.in。它是一個純粹的輸入流,而猜數字游戲主要是通過控制臺獲取玩家的字符輸入,我們需要把它包裝成一個BufferedReader。
第三步:使用BorderLayout對圖形界面的窗口進行設計。
三.程序實現
1 程序流程圖
點擊“獲取隨機數”按鈕,系統獲取到一個隨機數。 玩家輸入一個數,如果玩家輸入的數比系統給出的隨機數小,系統會提示“您猜的太小了,請繼續猜!”。如果玩家輸入的數比系統給出的隨機數大,系統提示“您猜的太大了,請繼續猜!”。 如果玩家猜對了數,但是所用時間大于十秒,系統會提示“這么久才猜出來,有點笨!”,并且會計算出玩家所用的時間和所猜的次數。如果玩家猜對了數,而且所用時間小于十秒,系統會提示“恭喜您,猜對了!您真棒,智商真高!”,并且會計算出玩家所用的時間和所猜的次數。
? ? ?? ??? ??
| ??? 系統產生一個隨機數X ??? ??? |
?? ??? ??
| ??? 玩家輸入一個在0~99范圍內的數Y ??? ??? |
?? ??? ??
| ??? 若X>Y ??? ??? |
?
?
?
?
?
?
?
??? ? ?? ??? ??
| ??? 輸出“您猜的太小了,請繼續猜” ??? ??? |
?? ??? ??
| ??? 若X<Y ??? ??? |
?
??????????
? ? ?? ??? ??
| ??? 輸出“您猜的太大了,請繼續猜” ??? ??? |
?? ??? ??
| ??? 猜對 ??? ??? |
?? ??? ??
| ??? 這么久才猜出來,有點笨 ??? ??? |
?? ??? ??
| ??? 儲存記錄 ??? ??? |
?
?
?
?
?
? ?? ??? ??
| ??? 恭喜您,猜對了! ???您真棒! ??? ??? |
????
?
?
? ? ?? ??? ??
| ??? ?結 束 ??? ??? |
?
?
?
?
?
?
?
?
????????????????????????? ?圖6 程序流程圖
2 關鍵算法與技術實現
package 軟件個人作業;
?
import java.util.InputMismatchException;
import java.util.Scanner;
?
public class R {
??????? public static void main(String[] args) {
??????????????? // 產生一個隨機數
??????????????? int number = (int) (Math.random() * 100) + 1;
?
??????????? ????// 加入count
??????????????? int count = 0;
?
??????????????? // 在這里加入最大值,和最小值
??????????????? int max = 100;
??????????????? int min = 1;
?
??????????????? while (true) {
??????????????????????? // 鍵盤錄入數據
??????????????????????? Scanner sc = new Scanner(System.in);
??????????????????????? System.out.println("請輸入你要猜的數據:(" + min + "~" + max + ")");
??????????????????????? try {
??????????????????????????????? count++;
??????????????????????????????? int guessNumber = sc.nextInt();
?????????????????????????? ?????// 判斷
??????????????????????????????? if (guessNumber > number) {
??????????????????????????????????????? max = guessNumber;
??????????????????????????????????????? System.out.println("您輸入的太大");
??????????????????????????????? } else if (guessNumber < number) {
??????????????????????????????????????? min = guessNumber;
??????????????????????????????????????? System.out.println("您輸入的太小");
??????????????????????????????? } else {
??????????????????????????????????????? System.out.println("恭喜你,花了" + count + "次就猜中了");
??????????????????????????????????????? // 問是否繼續
??????????????????????????????????????? System.out.println("請問還要繼續嗎?(yes)");
??????????????????????????????????????? sc = new Scanner(System.in);
??????????????????????????????????????? String str = sc.nextLine();
??????????????????????????????????????? if ("yes".equals(str)) {
??????????????????????????????????????????????? // 重寫賦值隨機數
??????????????????????????????????????????????? number = (int) (Math.random() * 100) + 1;
???????????????????????? ???????????????????????count = 0;
??????????????????????????????????????????????? max = 100;
??????????????????????????????????????????????? min = 1;
??????????????????????????????????????? } else {
??????????????????????????????????????????????? break;
? ??????????????????????????????????????}
??????????????????????????????? }
??????????????????????? } catch (InputMismatchException e) {
??????????????????????????????? System.out.println("你輸入的不是數字");
??????????????????????? }
??????????????? }
??????? }
}
3 類的實現
首先搭建Java程序框架。打開Eclipse,新建名為GuessNumberGame的項目,然后新建名為GuessNumber的Java類。GuessNumber加上合適的javadoc。
第一步:隨機數的產生
我們可以借助Java API提供的Random類來產生一個隨機數。
首先在main函數中加入以下三行代碼:
// 新建一個隨機數產生器,然后生成一個1到100之間的整數。
??? num=(int)(Math.random()*100);??????
String answer;?????
Scanner input=new Scanner(System.in);
?Eclipse立即在錯誤語句處劃出紅線,把鼠標移動到紅線上。
包(Package)的概念
Java API中包含了極其豐富、類似于Random這樣由Sun預先定義好的類。不同包中可以有同名同姓的類,如果沒有包的概念,就會遇到命名沖突問題。此外,包還能進行安全控制。Random類是在java.util這個包中??梢允謩釉谠闯绦蝽敳枯斎雐mport java.util.Random;語句來申明該程序將要使用java.util包中的Random類,然而有了Eclipse,就不用那么麻煩了—把光標移動到有紅色波浪線的Random上,然后按下Ctrl+Shift+M,Eclipse會自動幫你完成導入的工作了,此時保存一下源代碼。
第二句語句定義一個整型變量number來保存隨機產生的整數,并且用直接初始化的方法把random產生的隨機數賦給number變量。
第二步:標準輸入輸出
標準輸入輸出(Standard I/O)是指可以被應用程序使用的信息流。應用程序可以從標準輸入(Standard input)讀取數據,向標準輸出(Standard output)寫數據,把出錯信息發送到標準錯誤(Standard error)。通過輸入輸出,應用程序和應用程序之間可以被串聯起來使用。雖然標準輸入輸出是從UNIX發展出來的概念,在Windows中也廣泛應用。
猜數字游戲主要用到標準輸入,更明確一些,就是控制臺輸入。相反,要從控制臺輸入,就需要用到System.in。它是一個純粹的輸入流,而猜數字游戲主要是通過控制臺獲取玩家的字符輸入,我們需要把它包裝成一個BufferedReader。
??? 第三步:使用BorderLayout對圖形界面的窗口進行設計。
四.測試運行
1 系統測試方案
1.點擊運行程序后,顯示出圖形界面。
2.點擊“獲取隨機數”按鈕,系統獲取到一個隨機數。
3 .玩家輸入一個數,點擊“確定”按鈕。如果玩家輸入的數比系統給出的隨機數小,系統會提示“您猜的太小了,請繼續猜!”。如果玩家輸入的數比系統給出的隨機數大,系統提示“您猜的太大了,請繼續猜!”。
4 .如果玩家猜對了數,但是所用時間大于十秒,系統會提示“這么久才猜出來,有點笨!”,并且會計算出玩家所用的時間和所猜的次數。如果玩家猜對了數,而且所用時間小于十秒,系統會提示“恭喜您,猜對了!您真棒,智商真高!”,并且會計算出玩家所用的時間和所猜的次數。
5. 如果玩家想重新再玩一次,點擊“獲取隨機數”按鈕即可繼續玩下一輪游戲。
?
2 運行結果分析
開始運行程序時圖形界面的顯示
?
?
?
?
五.心得與問題
這是第一次結對編程,覺得很新奇,同時也有些問題,比方說分工,交流方面,因為平時時間較少,交流的還是不夠多,經過幾天的時間,終于弄完了,但是框架圖沒出來,看起來不方便,也請評論者諒解,以后會改進的。通過這次實踐,把理論用到了實驗中,使我更加認識了java的功能,只希望以后,老師能更加了解我們,跟我們一同進步。
?
轉載于:https://www.cnblogs.com/pickles/p/4510666.html
總結
- 上一篇: Android二维码之创建
- 下一篇: 梦到下大雨屋里进水了好不好