猜數(shù)字小游戲JAVA程序報告_第1頁
猜數(shù)字小游戲JAVA程序報告_第2頁
猜數(shù)字小游戲JAVA程序報告_第3頁
猜數(shù)字小游戲JAVA程序報告_第4頁
猜數(shù)字小游戲JAVA程序報告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

..>--.--考試資料.JAVA程序設(shè)計報告——猜數(shù)字小游戲目錄猜數(shù)字小游戲簡介…………4用戶需求分析………………4問題描述……………………4課程設(shè)計的任務(wù)課程設(shè)計的要求模塊設(shè)計……………………5課程設(shè)計的要求功能模塊設(shè)計流程圖功能設(shè)計……………………71.隨機(jī)數(shù)的產(chǎn)生模塊2.輸入判斷模塊3.記錄猜測次數(shù)模塊計時模塊輸入輸出模塊成績判斷模塊異常處理……………………9調(diào)試分析……………………10缺乏之處……………………11總結(jié)…………12程序附頁……………………13摘要猜數(shù)字是一款非常經(jīng)典的腦力游戲,游戲規(guī)則簡單,是消磨時間、鍛煉腦力的好選擇。通過選擇猜數(shù)字游戲這個題目,可以讓我掌握J(rèn)ava中的包和類,并且可以靈活的使用myeclipse軟件。同時更加深入的了解字符界面的編程過程。使我更熟練的掌握J(rèn)ava程序框架的搭建和類的創(chuàng)立格式。在分析階段,要進(jìn)展面向?qū)ο蟮男枨蠓治?、系統(tǒng)設(shè)計、畫出相應(yīng)的需求分析圖、系統(tǒng)設(shè)計模型圖,這些工作更能鍛煉我的邏輯思維,更能培養(yǎng)我思考的全面性。讓我學(xué)會了多角度思考問題,對我以后的編程奠定了更好的根底。一、猜數(shù)字小游戲簡介系統(tǒng)隨機(jī)產(chǎn)生任意一個1—100的自然數(shù),玩家輸入數(shù)字,假設(shè)輸入的數(shù)字比隨機(jī)生成數(shù)小,系統(tǒng)將提示,數(shù)字太小請您重新輸入;如果輸入的數(shù)字比隨機(jī)生成數(shù)大,系統(tǒng)將提示,數(shù)字太大請您重新輸入;假設(shè)輸入的字符不是合法字符,系統(tǒng)將提示,您輸入的數(shù)字不合法,請從新輸入,游戲開場時,系統(tǒng)自動記錄您猜數(shù)字的時間和次數(shù),完畢后顯示游戲共花費(fèi)的次數(shù)和時間及對游戲結(jié)果的評價。二、用戶需求分析設(shè)計一個猜數(shù)字游戲程序,要求具體如下特性:a.輸入任意一個數(shù)字。數(shù)字的要求是1—100的自然數(shù)即可。b.系統(tǒng)對您輸入的數(shù)字進(jìn)展判斷。如果玩家輸入的數(shù)字與計算機(jī)隨機(jī)生成數(shù)相比較,輸入的數(shù)字將提示您,數(shù)字太小請您重新輸入。如果玩家輸入的數(shù)字與計算機(jī)隨機(jī)生成數(shù)相比較,如果輸入的數(shù)字比隨機(jī)生成數(shù)大。系統(tǒng)將提示您,數(shù)字太大請您重新輸入。如果玩家輸入的字符不是合法字符,系統(tǒng)將提示您,您輸入的數(shù)字不合法,請從新輸入。c.游戲開場時,系統(tǒng)自動記錄您猜數(shù)字的時間,完畢后顯示游戲共花費(fèi)的時間。d.每猜測一次,系統(tǒng)會記錄下來,游戲完畢后,顯示共猜測多少次。e.在游戲完畢時,可以選擇關(guān)閉游戲,或者再來一局f.游戲完畢前可選擇直接顯示答案三、問題描述1.課程設(shè)計的任務(wù):根據(jù)所選題目,完成課程設(shè)計的分析、設(shè)計和編碼,寫出課程設(shè)計報告。(1)掌握J(rèn)ava的語言標(biāo)準(zhǔn),面向?qū)ο蟮暮诵母拍詈吞匦裕?2)掌握J(rèn)ava的編程技術(shù),包括異常處理,圖形界面設(shè)計,多線程,網(wǎng)絡(luò)通信程序等;(3)掌握J(rèn)ava應(yīng)用軟件的開發(fā)環(huán)境和開發(fā)過程;(4)掌握面向?qū)ο蟮乃枷牒统绦蛟O(shè)計方法。2.課程設(shè)計的要求:設(shè)計一個猜數(shù)字游戲程序,該游戲可以由程序隨機(jī)產(chǎn)生整數(shù),玩游戲者通過由用戶輸入數(shù)字來匹配上面所產(chǎn)生的數(shù)字。用戶隨機(jī)輸入數(shù)字,當(dāng)與計算機(jī)產(chǎn)生的隨機(jī)數(shù)相符合時,計算機(jī)將提醒用戶,游戲成功的信息,當(dāng)有偏差時,將會提醒偏差,如偏大或者是偏小。四、模塊設(shè)計開場游戲開場游戲注冊登陸開場界面記錄時間次數(shù)產(chǎn)生隨機(jī)數(shù)重新開場顯示答案計時模塊計時模塊輸出輸入模塊判斷模塊模塊組成登陸模塊系統(tǒng)開場計時系統(tǒng)開場計時由用戶輸入一個數(shù)guess猜小Y產(chǎn)生隨機(jī)數(shù)number系統(tǒng)完畢計時系統(tǒng)統(tǒng)計猜數(shù)次數(shù)及對成績的評價結(jié)束開始G=NG<NG>N猜大功能設(shè)計我們可以借助JavaAPI提供的Random類來產(chǎn)生一個隨機(jī)數(shù)。首先在main函數(shù)中參加以下代碼:Randomrandom=newRandom();number=random.ne*tInt(100);//產(chǎn)生一個1-100間的隨機(jī)數(shù)2.輸入判斷模塊在游戲界面中輸入不合法try{ guess=Integer.parseInt(jTe*tField1.getTe*t());//玩家輸入獲取 } catch(E*ceptione){ JOptionPane.showMessageDialog(null,"請輸入一個1-100之間的整數(shù)");//顯示對話框,輸入不合法 jTe*tField1.setTe*t("");//清空文本框內(nèi)容 jTe*tField1.requestFocus(); return;}//記錄玩家猜測的次數(shù)counter=0;//計數(shù)器增加一counter++;計時模塊的代碼分別寫在游戲的開場和游戲的完畢,取得時間差,以毫秒為單位。longstartTime=System.currentTimeMillis();longendTime=System.currentTimeMillis();//對玩家的輸入進(jìn)展判斷。if(guess>number){ JOptionPane.showMessageDialog(null,"o(≧v≦)o猜大了"); jTe*tField1.setTe*t(""); jTe*tField1.requestFocus(); return; } if(guess<number){ JOptionPane.showMessageDialog(null,"o(≧v≦)o太小啦"); jTe*tField1.setTe*t(""); jTe*tField1.requestFocus(); return; } if(guess==number){ endTime=System.currentTimeMillis();//判斷成績。switch(counter){ case1: JOptionPane.showMessageDialog(null,"O(∩_∩)O太給力了吧"); break; case2: case3: JOptionPane.showMessageDialog(null,"OHMYGOD!!!好膩害"); break; case4: case5: case6: JOptionPane.showMessageDialog(null,"O(∩_∩)O猜對,很不錯哦!"); break; case7: case8: case9: case10: JOptionPane.showMessageDialog(null,"(+﹏+)有點(diǎn)慢,還要多練習(xí)"); break; default: JOptionPane.showMessageDialog(null,"(+﹏+)oh!NO,太慢啦,"); break; }異常處理我們在運(yùn)行程序時往往會出現(xiàn)許多錯誤,而Java語言提供了異常(E*ception)處理機(jī)制幫助程序員發(fā)現(xiàn)并處理異常。所謂異常,就是在程序執(zhí)行過程中能干擾程序正常流程的事件。導(dǎo)致異常的原因很多,比方文件找不到、數(shù)組越界、除以零等。當(dāng)異常出現(xiàn)時,一個異常對象將被自動生成并傳遞給Java"運(yùn)行時環(huán)境〞,如果"運(yùn)行時環(huán)境〞找不到異常句柄,Java程序便會自行中斷。try{statement(s);}catch(e*ceptiontype1name){statement(s);}catch(e*ceptiontype2name){statement(s);}finally{statement(s);}try語句括起來的語句可能拋出異常。try語句至少要搭配一個catch語句或finally語句,不能單獨(dú)使用,我設(shè)計的猜數(shù)字游戲需要從控制臺獲取玩家輸入的數(shù)字,有多個異常處理try{setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(null); }catch(E*ceptione){ e.printStackTrace(); }try{//獲取玩家的輸入guess=Integer.parseInt(jTe*tField1.getTe*t()); }catch(E*ceptione)七、調(diào)試分析八、缺乏之處本小游戲還未建立游戲記錄局部,無法記錄玩家游戲成績記錄和建立游戲排行榜在界面設(shè)計方面還較為簡單,游戲還有很多可修改和增加難度的地方總結(jié)經(jīng)過這幾天努力終于完成了這份課設(shè),雖然在操作的過程中我都遇到了許多的困難,但是卻使我得到了許多的意外收獲。Java是一種簡單的,面向?qū)ο蟮模植际降?,解釋型的,?qiáng)健平安的,構(gòu)造中立的,可移植的,性能優(yōu)異、多線程的動態(tài)語言。在寫代碼的過程中我們也遇到了一些的困難,就是對一些有關(guān)Java語言的不理解,我便又到課本中去查找。一個工程的成敗關(guān)鍵不全在于技術(shù)。要想在一個愉快的氣氛里邊以輕松的心情來完成緊張的工作,嚴(yán)謹(jǐn)?shù)膽B(tài)度和工作的熱情都是必不可少的。以前上課時有許多的問題并沒有真正的認(rèn)識到,但通過這次試驗的制作,使我掌握了許多更重要的知識點(diǎn)。程序附頁packageJAVA;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.ArrayList;importjava*.swing.JButton;importjava*.swing.JFrame;importjava*.swing.JLabel;importjava*.swing.JOptionPane;importjava*.swing.JPanel;importjava*.swing.JPasswordField;importjava*.swing.JTe*tField;publicclassLogine*tendsJFrame{ ArrayList<String>names=newArrayList<String>(); ArrayList<String>pwd=newArrayList<String>(); privatestaticfinallongserialVersionUID=1L; publicLogin(){ this.setLocation(100,100); this.setSize(400,180); this.setTitle("歡迎進(jìn)入有趣的猜數(shù)字小游戲"); loginWindow(); setLocationRelativeTo(null);//窗口居中顯示 this.setVisible(true); } publicvoidloginWindow(){ JLabelname=newJLabel("請輸入玩家姓名:"); JLabelpassword=newJLabel("請輸入登陸密碼:"); finalJTe*tFieldtfName=newJTe*tField(20); finalJPasswordFieldtfPassword=newJPasswordField(20); JButtonok=newJButton("注冊"); JButtoncancel=newJButton("登錄"); JPanelpm=newJPanel(); JPanelp1=newJPanel(); JPanelp2=newJPanel(); JPanelp3=newJPanel(); p1.add(name); p1.add(tfName); p2.add(password); p2.add(tfPassword); ok.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventarg0){ names.add(tfName.getTe*t()); pwd.add(tfPassword.getTe*t()); JOptionPane.showMessageDialog(null,"注冊成功"); tfName.setTe*t(""); tfPassword.setTe*t(""); } }); cancel.addActionListener(newActionListener(){ //SuppressWarnings("deprecation") //Override SuppressWarnings("deprecation") publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub for(inti=0;i<names.size();i++){ if(names.get(i).equals(tfName.getTe*t())){ if(pwd.get(i).equals(tfPassword.getTe*t())){ JOptionPane.showMessageDialog(null,"登陸成功"); setVisible(false);//隱藏原界面 newGuessNum();//進(jìn)入主界面 } else{ JOptionPane.showMessageDialog(null,"用戶名或密碼有誤"); } } } } }); p3.add(ok); p3.add(cancel); pm.add(p1); pm.add(p2); pm.add(p3); this.add(pm); this.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE); } publicstaticvoidmain(String[]args){ newLogin(); }}packageJAVA;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.util.Random;importjava*.swing.JButton;importjava*.swing.JLabel;importjava*.swing.JFrame;importjava*.swing.JOptionPane;importjava*.swing.JTe*tField;importjava*.swing.WindowConstants;importjava.awt.FlowLayout;publicclassGuessNume*tendsjava*.swing.JFrame{ privatestaticfinallongserialVersionUID=1L; privateJLabeljLabel1; privateJTe*tFieldjTe*tField1; privateJButtonjButton1; privateJButtonjButton2; privateJButtonjButton3; privateintnumber=0; privateintcounter=0; longstartTime=System.currentTimeMillis(); longendTime;//計算時間 publicGuessNum(){ super("猜數(shù)字小游戲"); initChuangkou(); Randomrandom=newRandom(); number=random.ne*tInt(100);//產(chǎn)生一個1——100的隨機(jī)數(shù) } privatevoidinitChuangkou(){ try{ setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//窗口關(guān)閉時銷毀窗口 getContentPane().setLayout(null);//設(shè)置窗口布局為絕對布局 JFrameframe=newJFrame("TestButtons"); frame.setLayout(newFlowLayout()); jLabel1=newJLabel(); getContentPane().add(jLabel1); jLabel1.setTe*t("<html>*歡迎進(jìn)入有趣的猜數(shù)字游戲*請輸入1~100中的任意一個數(shù):</html>"); jLabel1.setBounds(75,20,200,50); jTe*tField1=newJTe*tField(); getContentPane().add(jTe*tField1); jTe*tField1.setBounds(110,100,112,28); jTe*tField1.addKeyListener(newKeyAdapter(){ publicvoidkeyPressed(KeyEventevt){ jTe*tField1KeyPressed(evt); } });jButton1=newJButton(); getContentPane().add(jButton1); jButton1.setTe*t("確定"); jButton1.setBounds(120,160,100,25); jButton1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventevt){ jButton1ActionPerformed(evt);//按鈕被點(diǎn)擊時執(zhí)行該方法 } });jButton2=newJButton(); getContentPane().add(jButton2); jButton2.setTe*t("顯示答案"); jButton2.setBounds(120,200,100,25); jButton2.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventevt2){ jButton2ActionPerformed(evt2);//按鈕被點(diǎn)擊時執(zhí)行該方法 } });jButton3=newJButton(); getContentPane().add(jButton3); jButton3.setTe*t("再來一次"); jButton3.setBounds(120,240,100,25); jButton3.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventevt3){ jButton3ActionPerformed(evt3);//按鈕被點(diǎn)擊時執(zhí)行該方法 } }); pack(); this.setSize(340,400);//窗口大小 setLocationRelativeTo(null);//設(shè)置窗口在顯示器居中顯示 } catch(E*ceptione){ e.printStackTrace(); } setVisible(true); } privatevoidjButton2ActionPerformed(ActionEventevt2){ JOptionPane.showMessageDialog(null,"答案是"+number);//直接顯示答案 setVisible(false);//隱藏原界面 return; }privatevoidjButton3ActionPerformed(ActionEventevt3){ setVisible(false); newGuessNum(); }privatevoidjButton1ActionPerformed(ActionEventevt){ intguess=0; counter++;//計數(shù)器加一 try{ guess=Integer.parseInt(jTe*tField1.getTe*t());//玩家輸入獲取 } catch(E*ceptione){ JOptionPane.showMessageDialog(null,"請輸入一個1-100之間的整數(shù)");//顯示對話框,輸入不合法 jTe*tField1.setTe*t("");//清空文本框內(nèi)容 jTe*tField1.requestFocus(); return; } if(guess>number){ JOptionPane.showMessageDialog(null,"o(≧v≦)o猜大了"); jTe*tField1.setTe*t(""); jTe*tField1.requestFocus(); return; } if(guess<number){ JOptionPane.showMessageDialog(null,"o(≧v≦)o太小啦"); jTe*tField1.setTe*t(""); jTe*tField1.requestFocus(); return;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論