201621123065《JAVA課程設計報告》

#1、 需求分析javascript

  • 1.玩家輸入一個數字,數字的範圍在1~100之間,系統自動隨機獲取。
  • 2.對玩家輸入的數字進行判斷大小,若是不是正確答案,則系統給出或大或小提示,用戶繼續進行猜想。
  • 3.玩家猜中時系統對於所猜次數給出不一樣的評語,並把猜想過程所用時間記錄於一個文本中。
  • 4.每次猜想系統自動統計猜想次數並顯示。
  • 5.猜中後可自動進行下一輪遊戲。

#2、 課題及本人任務java

  • 課題:猜數遊戲
  • 本人任務:整個程序

#3、 整體設計 遊戲隨機給出一個1~100(包括100)之間的數字,而後用戶猜想是什麼數字。用戶能夠隨便猜想一個數字,遊戲會提示太大仍是過小,從而縮小範圍。通過幾回猜想與提示後,最終推出答案。(系統設計以下圖)dom

遊戲界面:採用圖形界面顯示。 遊戲開始後,由計算機產生一個1~100的隨機數。用戶只需輸入所猜測的數字,打印在輸入框內,按Enter鍵表示肯定,遊戲返回提示語句並清空輸入框,直到遊戲結束。同時計算機計算猜想次數並顯示,計算遊戲時間並存入一個文檔。能夠經過按窗體關閉符直接結束遊戲。 #4、 主要功能展現與代碼分析佈局

  • 功能展現:測試

  • 初始界面:設計

輸入一個數字後:系統給出提示並清空輸入框code

猜對後給出評語:orm

繼續則進行下一輪遊戲:遊戲

用於存儲猜想時間的文件:ip

該文件存儲遊戲時間(毫秒):

  • 代碼分析:
package KESHE;


import javax.swing.*;  
import java.awt.*;  
import java.awt.event.*;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.awt.BorderLayout;  
import static java.awt.BorderLayout.*;  
  
public class Finish extends JFrame {  
	
int number,random,counter; //猜的數,答案,次數
long  time;//時間
JLabel welcomeJLabel;//定義一個組件  
JLabel hintJLabel;  //提示顯示框
JTextField guessField;  //輸入框
JPanel panel;//顯示背景色  
  
  
public Finish() {  //佈局
      super("猜數字");  //窗體名
     
      panel=new JPanel();  
      panel.setBackground(Color.PINK);  //定義背景色
    
     welcomeJLabel= new JLabel("已隨機生成一個1到100的整數,來猜猜看吧");  
     add(welcomeJLabel,NORTH);  
    
     guessField=new JTextField(25);  //容乃字符長度
     panel.add(guessField);  
     add(panel); //默認添加到中間  
    
     hintJLabel= new JLabel("");  //初始換提示框
     add(hintJLabel,SOUTH);  

     TextFieldHandler handler=new TextFieldHandler();  
     guessField.addActionListener(handler);  //監聽
    
     random=(int)(1+100*Math.random());  //產生隨機數
     
}  

    long begintime=System.currentTimeMillis();//開始計時


private class TextFieldHandler implements ActionListener   {  
  
    public void actionPerformed (ActionEvent event)  {  
        while(true){  
                 number=Integer.parseInt(guessField.getText()); //獲取猜想的數值
                 while(number!=random) {  
                     number=Integer.parseInt(guessField.getText());  
                     if(number>random) {  
                       hintJLabel.setText("猜高了,再試試吧。已試錯"+(++counter)+"次");  
                       guessField.setText("");  //置空輸入框
             }  
                    else{  
                       hintJLabel.setText("猜低了,請繼續!已試錯"+(++counter)+"次");  
                       guessField.setText("");  
              }  
      } 
      
      
            long endtime=System.currentTimeMillis();//結束計時
            time=endtime-begintime;//總時間
      //猜中後的用戶提示 
            File f= new File("d:" + File.separator + "課設測試") ;//新建一個文件夾
            Writer out = null ;	
          try {
    	     String con=String.valueOf(time);//把time轉換成字符串
      	con+="\r\n";//換行
		out = new FileWriter(f,true);
		out.write(con) ;// 將內容輸出,保存文件
		out.close() ;// 關閉文件


	     } catch (IOException e) {
		// TODO Auto-generated catch block
		      e.printStackTrace();
	    }
      if (counter<3)  
          JOptionPane.showMessageDialog(null, "恭喜您,猜中了,真厲害!");  
      else if (counter==6)  
          JOptionPane.showMessageDialog(null, "終於猜中了!");  
      else  
          JOptionPane.showMessageDialog(null, "您終於猜中了╮(╯▽╰)╭,您其實能夠作得更好的!");  
      
      //開始下一輪猜數字遊戲前的初始化工做  
     guessField.setText("");  
     random=(int)(1+100*Math.random());  
     counter=0;  
        
       }  
   }  
}  
  
public static void main(String[] args)  
{  
   Finish f = new Finish(); // create ListFrame  
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
   f.setSize(400,300);   
   f.setVisible(true);   
}  
}

5、 測試與改進

  1. 把背景色改爲了粉色
  2. 對於每次猜想給出提示和已經猜的次數,用戶體驗比較直觀
  3. 一次遊戲結束以後能夠直接進行下一輪,無需再從新啓動程序
  4. 生成jar文件,更方便使用。

6、 附錄 源代碼:

package KESHE;


import javax.swing.*;  
import java.awt.*;  
import java.awt.event.*;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.awt.BorderLayout;  
import static java.awt.BorderLayout.*;  
  
public class Finish extends JFrame {  
	
int number,random,counter; //猜的數,答案,次數
long  time;//時間
JLabel welcomeJLabel;//定義一個組件  
JLabel hintJLabel;  //提示顯示框
JTextField guessField;  //輸入框
JPanel panel;//顯示背景色  
  
  
public Finish() {  //佈局
      super("猜數字");  //窗體名
     
      panel=new JPanel();  
      panel.setBackground(Color.PINK);  //定義背景色
    
     welcomeJLabel= new JLabel("已隨機生成一個1到100的整數,來猜猜看吧");  
     add(welcomeJLabel,NORTH);  
    
     guessField=new JTextField(25);  //容乃字符長度
     panel.add(guessField);  
     add(panel); //默認添加到中間  
    
     hintJLabel= new JLabel("");  //初始換提示框
     add(hintJLabel,SOUTH);  

     TextFieldHandler handler=new TextFieldHandler();  
     guessField.addActionListener(handler);  //監聽
    
     random=(int)(1+100*Math.random());  //產生隨機數
     
}  

    long begintime=System.currentTimeMillis();//開始計時


private class TextFieldHandler implements ActionListener   {  
  
    public void actionPerformed (ActionEvent event)  {  
        while(true){  
             number=Integer.parseInt(guessField.getText()); //獲取猜想的數值
                 while(number!=random) {  
                     number=Integer.parseInt(guessField.getText());  
                     if(number>random) {  
                       hintJLabel.setText("猜高了,再試試吧。已試錯"+(++counter)+"次");  
                       guessField.setText("");  //置空輸入框
             }  
                    else{  
                       hintJLabel.setText("猜低了,請繼續!已試錯"+(++counter)+"次");  
                       guessField.setText("");  
              }  
      } 
      
      
            long endtime=System.currentTimeMillis();//結束計時
            time=endtime-begintime;//總時間
      //猜中後的用戶提示 
            File f= new File("d:" + File.separator + "課設測試") ;//新建一個文件夾
            Writer out = null ;	
          try {
    	     String con=String.valueOf(time);//把time轉換成字符串
      	con+="\r\n";//換行
		out = new FileWriter(f,true);
		out.write(con) ;// 將內容輸出,保存文件
		out.close() ;// 關閉文件


	     } catch (IOException e) {
		// TODO Auto-generated catch block
		      e.printStackTrace();
	    }
      if (counter<3)  
          JOptionPane.showMessageDialog(null, "恭喜您,猜中了,真厲害!");  
      else if (counter==6)  
          JOptionPane.showMessageDialog(null, "終於猜中了!");  
      else  
          JOptionPane.showMessageDialog(null, "您終於猜中了╮(╯▽╰)╭,您其實能夠作得更好的!");  
      
      //開始下一輪猜數字遊戲前的初始化工做  
     guessField.setText("");  
     random=(int)(1+100*Math.random());  
     counter=0;  
        
       }  
   }  
}  
  
public static void main(String[] args)  
{  
   Finish f = new Finish(); // create ListFrame  
   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
   f.setSize(400,300);   
   f.setVisible(true);   
}  
}
相關文章
相關標籤/搜索