




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JAVA程序設(shè)計(jì)報(bào)告猜數(shù)字小游戲目錄二三.12四.123五.1 .2 .3 .456.六.七.八.猜數(shù)字小游戲簡介用戶需求分析4問題描述4課程設(shè)計(jì)的任務(wù)課程設(shè)計(jì)的要求模塊設(shè)計(jì)課程設(shè)計(jì)的要求功能模塊設(shè)計(jì) 流程圖功能設(shè)計(jì)7隨機(jī)數(shù)的產(chǎn)生模塊輸入判斷模塊記錄猜測次數(shù)模塊計(jì)時(shí)模塊 輸入輸出模塊成績判斷模塊異常處理9調(diào)試分析10不足之處11九、總結(jié)12十.程序附頁13猜數(shù)字是一款非常經(jīng)典的腦力游戲,游戲規(guī)則簡單,是消磨時(shí)間、鍛煉腦力的 好選擇。通過選擇猜數(shù)字游戲這個(gè)題LL可以讓我掌握中的包和類,并且可以 靈活的使用my eclipse軟件。同時(shí)更加深入的了解字符界面的編程過程。使我更熟 練的掌握J(rèn)ava程
2、序框架的搭建和類的創(chuàng)建格式。在分析階段,要進(jìn)行面向?qū)ο蟮男?求分析、系統(tǒng)設(shè)計(jì)、畫出相應(yīng)的需求分析圖、系統(tǒng)設(shè)計(jì)模型圖,這些工作更能鍛煉 我的邏輯思維,更能培養(yǎng)我思考的全面性。讓我學(xué)會(huì)了多角度思考問題,對(duì)我以后 的編程奠定了更好的基礎(chǔ)。注:文檔可能無法思考全面,請(qǐng)瀏覽后下載,供參考。一、猜數(shù)字小游戲簡介系統(tǒng)隨機(jī)產(chǎn)生任意一個(gè)1100的自然數(shù),玩家輸入數(shù)字,若輸入的數(shù)字比隨機(jī)生成數(shù) 小,系統(tǒng)將提示,數(shù)字太小請(qǐng)您重新輸入:如果輸入的數(shù)字比隨機(jī)生成數(shù)大,系統(tǒng)將提示, 數(shù)字太大請(qǐng)您重新輸入:若輸入的字符不是合法字符,系統(tǒng)將提示,您輸入的數(shù)字不合法, 請(qǐng)從新輸入,游戲開始時(shí),系統(tǒng)自動(dòng)記錄您猜數(shù)字的時(shí)間和次數(shù),
3、結(jié)朿后顯示游戲共花費(fèi)的 次數(shù)和時(shí)間及對(duì)游戲結(jié)果的評(píng)價(jià)。二、用戶需求分析設(shè)計(jì)一個(gè)猜數(shù)字游戲程序,要求具體如下特性:a. 輸入任意一個(gè)數(shù)字。數(shù)字的要求是1-100的自然數(shù)即可。b. 系統(tǒng)對(duì)您輸入的數(shù)字進(jìn)行判斷。如果玩家輸入的數(shù)字與計(jì)算機(jī)隨機(jī)生成數(shù)相比較,輸入的數(shù)字比隨機(jī)生成數(shù)小系統(tǒng)將 提示您,數(shù)字太小請(qǐng)您重新輸入。如果玩家輸入的數(shù)字與計(jì)算機(jī)隨機(jī)生成數(shù)相比較,如果輸入的數(shù)字比隨機(jī)生成數(shù)大。系 統(tǒng)將提示您,數(shù)字太大諳您重新輸入。如果玩家輸入的字符不是合法字符,系統(tǒng)將提示您,您輸入的數(shù)字不合法,請(qǐng)從新輸入。c. 游戲開始時(shí),系統(tǒng)自動(dòng)記錄您猜數(shù)字的時(shí)間,結(jié)朿后顯示游戲共花費(fèi)的時(shí)間。d. 每猜測一次,系統(tǒng)會(huì)
4、記錄下來,游戲結(jié)束后,顯示共猜測多少次。e. 在游戲結(jié)朿時(shí),可以選擇關(guān)閉游戲,或者再來一局f. 游戲結(jié)朿前可選擇直接顯示答案三、問題描述1課程設(shè)計(jì)的任務(wù):根據(jù)所選題目,完成課程設(shè)計(jì)的分析、設(shè)計(jì)和編碼,寫出課程設(shè)il報(bào)告。(1) 掌握J(rèn)ava的語言規(guī)范,而向?qū)ο蟮暮诵母拍詈吞匦裕?2) 掌握J(rèn)ava的編程技術(shù),包括異常處理,圖形界而設(shè)計(jì),多線程,網(wǎng)絡(luò)通信程序等;(3) 掌握J(rèn)ava應(yīng)用軟件的開發(fā)環(huán)境和開發(fā)過程:(4) 掌握面向?qū)ο蟮乃枷牒统绦蛟O(shè)汁方法。2. 課程設(shè)計(jì)的要求:設(shè)計(jì)一個(gè)猜數(shù)字游戲程序,該游戲可以由程序隨機(jī)產(chǎn)生整數(shù),玩游戲者通過由用戶輸入 數(shù)字來匹配上而所產(chǎn)生的數(shù)字。用戶隨機(jī)輸入數(shù)字,
5、當(dāng)與計(jì)算機(jī)產(chǎn)生的隨機(jī)數(shù)相符合時(shí),計(jì) 算機(jī)將提醒用戶,游戲成功的信息,當(dāng)有偏差時(shí),將會(huì)提醒偏差,如偏大或者是偏小。四、模塊設(shè)計(jì)1. 系統(tǒng)總體設(shè)計(jì)2功能模塊設(shè)計(jì)五. 功能設(shè)計(jì)1. 隨機(jī)數(shù)的產(chǎn)生模塊我們可以借助Java API提供的Random類來產(chǎn)生一個(gè)隨機(jī)數(shù)。首先在main函數(shù)中加入以下代碼:Random random = new Random();number = random, nextlnt (100); / 產(chǎn)生一個(gè) 1T00 間的隨機(jī)數(shù)2. 輸入判斷模塊在游戲界而中輸入不合法try /玩家輸入獲取guess = Integer parselnt(jTextField1 getText
6、0);catch (Exception e) JOptionPane. showMessageDialog(null,請(qǐng)輸入一個(gè) 1-100 之間的整數(shù)”);顯示對(duì)話框,輸入不合法jTextFieldl. setTextC);淸空文本框內(nèi)容jTextField1 requestFocus 0;return; 3. 記錄猜測次數(shù)模塊/記錄玩家猜測的次數(shù)counter = 0;/計(jì)數(shù)器增加一count er+ +;4. 計(jì)時(shí)模塊計(jì)時(shí)模塊的代碼分別寫在游戲的開始和游戲的結(jié)束,取得時(shí)間差,以亳秒為單位。long startTime = SystemcurrentTimeM訂1 is0;long end
7、Time = SystemcurrentTimeHillis();5輸入輸出模塊/對(duì)玩家的輸入進(jìn)行判斷。if (guess number) JOptionPane. showMessageDialog(null, /zo( = v = )o 5b大了);jTextField1 setText (“);jTextField1 requestFocus 0;return;if (guess number) JOptionPane. showMessageDialog(null, z,o( = v = )o 太小啦);jTextField 1 setText C);jTextField 1 requ
8、estFocus 0 ;return;if (guess = number) endTime = SystemcurrentTime、Hllis();6.成績判斷模塊/判斷成績。switch (counter) case 1:JOptionPane. showMessageDialog(null, 0(C_C)0 太給力了 吧); break;case 2:case 3:JOptionPane. showMessageDialog(null, OH MY GOD!好膩害); break;case 4: case 5:case 6:JOptionPane. showMessageDialogCn
9、ull, O(C_C1)O 猜對(duì),彳艮不錯(cuò)哦! ”); break;case 7:case 8:case 9:case 10:JOptionPane. showMessageDialog(null, (+_+)有點(diǎn)慢,還要多練習(xí)): break;default:JOptionPane. showMessageDialog(null, (+_+)oh! NO,太慢啦,“); break;六、異常處理我們在運(yùn)行程序時(shí)往往會(huì)岀現(xiàn)許多錯(cuò)誤,而Java語言提供了異常(Exception)處理 機(jī)制幫助程序員發(fā)現(xiàn)并處理異常。所謂異常,就是在程序執(zhí)行過程中能千擾程序正常流 程的事件。導(dǎo)致異常的原因很多,比如
10、文件找不到、數(shù)組越界、除以零等。當(dāng)異常出現(xiàn) 時(shí),一個(gè)異常對(duì)象將被自動(dòng)生成并傳遞給Java “運(yùn)行時(shí)環(huán)境”,如果“運(yùn)行時(shí)環(huán)境” 找不到異常句柄,Java程序便會(huì)自行中斷。try statement(s); catch (exceptiontypel name) statement(s); catch (exceptiontype2 name) statement(s); finally statement(s);try語句括起來的語句可能拋出異常。try語句至少要搭配一個(gè)catch語句或finally 語句,不能單獨(dú)使用,我設(shè)計(jì)的猜數(shù)字游戲需要從控制臺(tái)獲取玩家輸入的數(shù)字,有多個(gè)異常 處理try
11、setDefaultCloseOperation(WindowConstants DISPOSE_ON_CLOSE); getContentPane() setLayout(null); catch (Exception e) e.printStackTrace 0;try /獲取玩家的輸入guess = Integerparselnt(jTextField1getText0); catch (Exception e)七、調(diào)試分析網(wǎng)彌加艇 IDlxl注冊 寰錄消0痂軻蘇歡趣筆與游戲?yàn)t戲済輅入1100中的任意一個(gè)缺:tea注冊成功張考全面,消息確走八.不足之處注:文檔可能無法思考全面,請(qǐng)瀏覽后下
12、載,供參考。本小游戲還未建立游戲記錄部分,無法記錄玩家游戲成績記錄和建立游戲排行榜 在界而設(shè)計(jì)方面還較為簡單,游戲還有很多可修改和增加難度的地方總結(jié)經(jīng)過這兒天努力終于完成了這份課設(shè),雖然在操作的過程中我都遇到了許多 的困難,但是卻使我得到了許多的意外收獲。Java是一種簡單的,面向?qū)ο蟮? 分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程 的動(dòng)態(tài)語言。在寫代碼的過程中我們也遇到了一些的困難,就是對(duì)一些有關(guān)Java 語言的不理解,我便乂到課本中去查找。一個(gè)項(xiàng)H的成敗關(guān)鍵不全在于技術(shù)。要 想在一個(gè)愉快的氛圍里邊以輕松的心情來完成緊張的工作,嚴(yán)謹(jǐn)?shù)膽B(tài)度和丄作的 熱情都是必不可少
13、的。以前上課時(shí)有許多的問題并沒有真正的認(rèn)識(shí)到,但通過這 次試驗(yàn)的制作,使我掌握了許多更重要的知識(shí)點(diǎn)。程序附頁package JAVA;import java awt. event ActionEvent;import java awt event ActionListener;import java uti1 ArrayList;import javax. swing JButton;import javax. swing JFrame;import javax. swing JLabel;import javax. swing JOptionPane;import javax. swing
14、JPanel;import javax. swing JPasswordField;import javax. swing JTextField;public class Login extends JFrame ArrayList names = new ArrayListString ();ArrayList pwd = new ArrayList(); private static final long serialVersionUID = IL; public Login() this. setLocation(100, 100);this. setSize (400, 180);th
15、is. setTitlef歡迎進(jìn)入有趣的猜數(shù)字小游戲); loginWindow ();中顯示/窗口居setLocationRelativeTo(null);this setVisible(true);public void loginWindow() JLabel name 二 new JLabel C請(qǐng)輸入玩家姓名:);JLabel password 二 new JLabel C請(qǐng)輸入登陸密碼:”);final JTextField tfName = new JTextField(20);final JPasswordField tfPassword = new JPasswordFiel
16、d(20);JButton ok = new JButton C注冊“);JButton cancel = new JButton(登錄);pm = new pl = new p2 = new p3 = newJPanel (); JPanel ();JPanel ();JPanel ();JPanelJPanelJPanelJPanel pl. add (name);pl. add(tfName);p2 add (password);p2 add(tfPassword);ok. addActionListener(new ActionListener() public void action
17、Performed(ActionEvent argO) names add (tfName. getText (); pwd add(tfPassword getText();JOptionPane. showMessageDialog(null,注冊成功); tfName. setText(“); tfPassword setText(););cance1. addActionListener (new ActionListener () /SuppressWarnings Cdeprecat ion)/OverrideSuppressWarnings (zzdepreca tion) pu
18、blic void actionPerformed(ActionEvent argO) / TODO Auto-generated method stub for (int i = 0; i namessize(); i+) if (names get(i) equals(tfName getText() if (pwd get (i) equals(tfPassword getText() JOptionPane. showMessageDialog(null,登陸成功setVisible(false) ;/隱藏原界面new GuessNumO ;/進(jìn)入主界面else JOptionPane
19、 showMessageDialog(null,用戶名或密碼有誤););p3 add (ok);p3 add (cancel);pm. add (pl);pm. add (p2);pm. add (p3);this add(pm);this setDefaultCloseOperation(JFrame EXIT_ON_CLOSE); public static void main(String args) new Login ();package JAVA;import java awt event ActionEvent;import java awt event ActionListen
20、er;import java awt event KeyAdapter;import java awt event KeyEvent;import java .util. Random:import javax swing JButton;import javax swing JLabel:import javax swing JFrame: import javax swing JOptionPane; import javax swing JTextField;import javax swingWindowConstants;import java awt. FlowLayout;pub
21、lic class GuessNum extends javax swing JFrame private static final long serialVersionUID = IL; private JLabel jLabell;private JTextField jTextFieldl;private JButton jButtonl;private JButton jButton2;private JButton jButton3;private int number = 0;private int counter = 0;long startTime = System. curr
22、entTimeMillis():long endTime;/計(jì)算時(shí)間public GuessNumO super (猜數(shù)字小游戲);initChuangkouO ;Random random = new Random();number = random, nextInt (100) ;/產(chǎn)生一個(gè) 1100的隨機(jī)數(shù)private void initChuangkouO try setDefaultCloseOperat ion (WindowConstants. DISPOSE_ON_CLOSE);/窗口關(guān)閉時(shí)銷毀窗口getContentPane (). setLayout (null) ;/設(shè)
23、置窗口布局為絕對(duì)布局JFrame frame = new JFrame(Test Buttons); frame. setLayout(new FlowLayout();jLabell = new JLabel(): getContentPane() add(jLabell);jLabell. setText歡迎進(jìn)入有趣的猜數(shù)字游戲請(qǐng)輸入1100中的任 意一個(gè)數(shù):);jLabell. setBounds (75, 20, 200, 50); jTextFieldl = new JTextFieldO ; getContentPane() add(jTextFieldl); jTextField
24、l. setBounds(110, 100, 112, 28); jTextField1. addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent evt) jTextFieldlKeyPressed(evt););jButtonl = new JButton(); getContentPane() add(jButtonl); jButtonl. setText (“確定);jButtonl. setBounds (120, 160, 100, 25);jButtonl addActionListener (new Ac
25、tionListener () public void actionPerformed(ActionEvent evt) jButtonlActionPerformed(evt) :/ 按鈕被點(diǎn)擊時(shí) 執(zhí)行該方法);jButton2= new JButtonO ;getContentPane() add(jButton2);jButton2. setText(顯示答案);jButton2. setBounds (120, 200, 100, 25);jButton2 addActionListener (new ActionListener() public void actionPerform
26、ed(ActionEvent evt2) jButton2ActionPerformed(evt2) ;/ 按鈕被點(diǎn)擊時(shí)執(zhí)行該方法);jButton3= new JButtonO ;getContentPane () add(jButton3);JButton3. setText (再乗一次);jButton3. setBounds (120, 240, 100, 25);jButton3 addActionListener (new ActionListener() public void actionPerformed(ActionEvent evt3) jButton3ActionPer
27、formed(evt3) ;/ 按鈕被點(diǎn)擊時(shí)執(zhí)行該方法);pack();this. setSize (340, 400) ;/窗 口大小setLocationRelativeTo(null) ;/設(shè)置窗口在顯示器居中顯示catch (Exception e) e printstackTrace();setVisible(true);private void jButton2ActionPerformed(ActionEvent evt2) 直接JOptionPane showMessageDialog(null, 答案是+numbe:r);顯示答案setVisible (false) ;/隱藏
28、原界面return;private void jButton3ActionPerformed(ActionEvent evt3) setVisible(false);new GuessNumO ;private void jButtonlActionPerformed(ActionEvent evt) int guess = 0;counter+;/計(jì)數(shù)器加一try guess = Integer parselnt (jTextField 1. getText () ;/玩家輸入獲取catch (Exception e) JOptionPane. showMessageDialog(null,請(qǐng)輸入一個(gè) 1T00 之間 的整數(shù));/顯示對(duì)話框,輸入不合法jTextFieldl. setText C) ;/清空文本框內(nèi)容jTextField1. requestFocus();return;if (guess number) JOptionPane. showMessageDialog(null, z/o( = v = )o 猜大了); jTextFieldl. setText();jTextField1. requestFocus ();return;if (guess number) JOptionPane. showMessageDialog(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村土地流轉(zhuǎn)風(fēng)險(xiǎn)評(píng)估與保障協(xié)議
- 無人駕駛技術(shù)投資協(xié)議
- 汽車租賃長租合同
- 公司股份改制方案設(shè)計(jì)報(bào)告
- 農(nóng)村綠化景觀改造施工協(xié)議
- 水務(wù)工程聯(lián)合運(yùn)營合作協(xié)議
- 小英雄雨來成長征文
- 國際貿(mào)易市場走勢預(yù)測分析表
- 迪士尼動(dòng)畫海洋奇緣觀后感
- 高考數(shù)學(xué)專題06四邊形的綜合問題測試題
- 高中主題班會(huì) 悟哪吒精神做英雄少年-下學(xué)期開學(xué)第一課主題班會(huì)課件-高中主題班會(huì)課件
- 2025電力物資檢儲(chǔ)配一體化建設(shè)技術(shù)導(dǎo)則
- 新學(xué)期 開學(xué)第一課 主題班會(huì)課件
- 2025年協(xié)議離婚夫妻模板
- 福建省龍巖市2024-2025學(xué)年九年級(jí)上學(xué)期期末語文試題(解析版)
- 2025-2030年中國高爾夫產(chǎn)業(yè)規(guī)模分析及投資前景規(guī)劃研究報(bào)告
- 民法典合同編講座
- DBJ51-T 198-2022 四川省既有民用建筑結(jié)構(gòu)安全隱患排查技術(shù)標(biāo)準(zhǔn)
- 《干細(xì)胞及其應(yīng)用》課件
- 課題申報(bào)書:生成式人工智能提升中小學(xué)教師數(shù)字素養(yǎng)的路徑探究
- 臨床婦產(chǎn)題庫+參考答案
評(píng)論
0/150
提交評(píng)論