基于java的掃雷游戲設(shè)計(jì)_第1頁(yè)
基于java的掃雷游戲設(shè)計(jì)_第2頁(yè)
基于java的掃雷游戲設(shè)計(jì)_第3頁(yè)
基于java的掃雷游戲設(shè)計(jì)_第4頁(yè)
基于java的掃雷游戲設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于JAVA的掃雷小游戲引言本次課程設(shè)計(jì)目的在于設(shè)計(jì)開(kāi)發(fā)一個(gè)類(lèi)似windows自帶掃雷游戲的小游戲,實(shí)現(xiàn)基本的掃雷面板及掃雷的游戲功能、游戲數(shù)據(jù)存儲(chǔ)、游戲計(jì)時(shí)等功能。設(shè)計(jì)采用Windows下的eclipse開(kāi)發(fā)工具由本人獨(dú)立完成。系統(tǒng)設(shè)計(jì)本游戲采用快速原型模型的軟件開(kāi)發(fā)方法設(shè)計(jì),總共經(jīng)歷了八個(gè)版本的修改最終完成設(shè)計(jì)要求。在第一個(gè)版本中,實(shí)現(xiàn)如下功能:基于JFrame的掃雷框架的建立:使用JFrame建立起如圖的所示的程序框架,雷區(qū)為12*12,添加JPanel和JButton,采用setBounds的布局方式而非內(nèi)置的布局方法?;赗andom方法的虛擬雷盤(pán)的建立和動(dòng)態(tài)修改:通過(guò)Random產(chǎn)生出一個(gè)14*14的數(shù)組,其中,二維數(shù)組邊緣對(duì)應(yīng)邊框標(biāo)記值為2,產(chǎn)生的雷點(diǎn)標(biāo)記為1,普通點(diǎn)標(biāo)記為0。再次建立一個(gè)12*12的數(shù)組對(duì)應(yīng)實(shí)際的游戲面板,初始值為0,遍歷14*14的數(shù)組中非邊緣的元素,將每個(gè)格子周?chē)牡乩讛?shù)目賦值給對(duì)應(yīng)的12*12數(shù)組,地雷仍然用-1來(lái)表示,最后遍歷12*12的數(shù)組同時(shí)把數(shù)組中非0非-1的數(shù)繪制到JPanel上,值為-1的元素向面板對(duì)應(yīng)位置添加一個(gè)地雷的圖片(注:地雷圖片來(lái)自Windows7自帶掃雷游戲的截圖)?;贐utton的雷區(qū)覆蓋面板建立以及虛擬雷盤(pán)的ActionListener的連接:將生成好的底板覆蓋上12*12的Button并且為每個(gè)Button添加ActionListener,實(shí)現(xiàn)點(diǎn)擊后隱藏對(duì)應(yīng)的Button功能。結(jié)果如下圖:重新開(kāi)始及其按鍵功能的實(shí)現(xiàn):通過(guò)“重新開(kāi)始”按鍵重新生成雷區(qū)以及重新覆蓋Button到所有格子。關(guān)于按鍵及其功能:通過(guò)“關(guān)于”按鍵彈出一個(gè)MessageDialog。在第二個(gè)版本中,實(shí)現(xiàn)如下功能:新增利用遞歸算法實(shí)現(xiàn)的一次點(diǎn)開(kāi)一片區(qū)域功能:通過(guò)數(shù)據(jù)結(jié)構(gòu)中的走迷宮算法在按鍵監(jiān)聽(tīng)中加入了連鎖點(diǎn)亮的算法,點(diǎn)亮該格,然后依次遍歷12*12表的周?chē)?格,發(fā)現(xiàn)為空格即遞歸調(diào)用遍歷算法,發(fā)現(xiàn)數(shù)字即點(diǎn)亮該格并return,初步實(shí)現(xiàn)了如圖所示的功能:新增虛擬訪問(wèn)判定表的建立和刷新及修改:即通過(guò)查找已標(biāo)記的正確的雷并且計(jì)數(shù),如果達(dá)到了設(shè)定了雷的最大值即執(zhí)行游戲結(jié)束的方法。新增失敗提示框和自動(dòng)刷新功能:即點(diǎn)亮了地雷的區(qū)域后,自動(dòng)彈出對(duì)話(huà)框提示失敗并且執(zhí)行游戲結(jié)束的方法。對(duì)原boom表進(jìn)行了改動(dòng),解決了虛擬表和實(shí)際表的下標(biāo)錯(cuò)位問(wèn)題將原12*12的數(shù)組擴(kuò)充到14*14。在第三個(gè)版本中,實(shí)現(xiàn)如下功能:修復(fù)了一個(gè)導(dǎo)致重新開(kāi)始后第一行雷點(diǎn)位置不變的BUG:重寫(xiě)游戲結(jié)束的算法,改變循環(huán)的起始點(diǎn),使其可以正確生成虛擬的雷點(diǎn)。新增了右鍵標(biāo)記、取消雷點(diǎn)的功能:為每個(gè)Button添加了MouseListener從而實(shí)現(xiàn)了當(dāng)點(diǎn)擊鼠標(biāo)右鍵時(shí)可以修改Button上文字,顯示為雷,并且當(dāng)該Button已經(jīng)顯示了雷的時(shí)候再次右鍵該Button可以取消文字顯示。在第四個(gè)版本中,實(shí)現(xiàn)如下功能:調(diào)整了按鍵監(jiān)聽(tīng)的點(diǎn)亮區(qū)域算法,當(dāng)且僅當(dāng)點(diǎn)擊處周?chē)鷽](méi)有地雷時(shí)才會(huì)觸發(fā)openButton()算法,否則僅顯示當(dāng)前區(qū)域,提高了游戲性:重寫(xiě)了Button的ActionListener,按條件區(qū)分是否執(zhí)行遞歸點(diǎn)亮算法,當(dāng)且僅當(dāng)單擊區(qū)域?yàn)榭盏臅r(shí)候才執(zhí)行點(diǎn)亮算法,否則僅點(diǎn)亮該區(qū)域。新增了基于System.currentTimeMillis()的計(jì)時(shí)器功能,計(jì)時(shí)器與重新開(kāi)始游戲?qū)?yīng)同步更新:通過(guò)在游戲開(kāi)始時(shí)獲取一個(gè)currentTimeMillis()以及實(shí)時(shí)監(jiān)控并刷新計(jì)時(shí)器窗口的值為當(dāng)前時(shí)間減去初始時(shí)間除以1000,為節(jié)約內(nèi)存,單獨(dú)為計(jì)時(shí)器開(kāi)辟了一個(gè)線(xiàn)程,每工作一次該線(xiàn)程休息0.5秒。在第五個(gè)版本中,實(shí)現(xiàn)如下功能:更改了獲勝和失敗后的提示信息:將本次游戲時(shí)間加入了游戲結(jié)束時(shí)的提示窗口。新增了“記錄”窗體的框架和面板:增加了一個(gè)新的JFrame,對(duì)應(yīng)“記錄”按鈕。在第六個(gè)版本中,實(shí)現(xiàn)如下功能:再次改進(jìn)了按鍵監(jiān)聽(tīng)的點(diǎn)亮區(qū)域算法:進(jìn)行遞歸遍歷時(shí)將正相鄰和斜相鄰兩種情況分開(kāi),使斜相鄰的地雷值為0的格子不再會(huì)被自動(dòng)點(diǎn)亮,提高了游戲性,至此版本為止,該算法已經(jīng)完全符合預(yù)期要求。游戲后臺(tái)新加入了recordlist類(lèi),用來(lái)存儲(chǔ)和處理光榮榜的數(shù)據(jù):該類(lèi)擁有10條記錄以及插入新數(shù)據(jù)到對(duì)應(yīng)位置的功能。對(duì)記錄窗體的改動(dòng):通過(guò)取消設(shè)定recordFrame類(lèi)的mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);以及設(shè)定recFrame.hide();方法解決了關(guān)閉窗口時(shí)導(dǎo)致的程序異常終止的錯(cuò)誤。在第七個(gè)版本中,實(shí)現(xiàn)如下功能:記錄的讀取與存儲(chǔ):通過(guò)ObjectOutputStream和ObjectInputStream成功實(shí)現(xiàn)了對(duì)光榮榜文件的存取功能。并且重新定義了上一版本的光榮榜信息控件,增加了獲勝時(shí)修改光榮榜并且自動(dòng)保存文件的功能,同時(shí)新增nameInput窗口類(lèi)到游戲結(jié)束時(shí)并且成績(jī)足以進(jìn)入光榮榜時(shí)調(diào)用的方法中,用于輸入獲取進(jìn)入光榮榜的玩家信息。在最終版本中,實(shí)現(xiàn)如下功能:記錄與游戲的同步措施:通過(guò)更改FileOutputStream的實(shí)現(xiàn)位置到nameInputer中的actionListener中并且將recordlist和usedTime以參數(shù)形式通過(guò)構(gòu)造函數(shù)傳入nameInputer類(lèi)中成功實(shí)現(xiàn)了光榮榜數(shù)據(jù)文件的存取。系統(tǒng)實(shí)現(xiàn)Sweeper類(lèi):importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;importjava.util.Random;importjava.io.*;publicclasssweeper{Buttonboom[][]=newButton[14][14]; intvisualBoom[][]=newint[14][14]; intvisitTest[][]=newint[14][14]; intnumOfBoom=0; LabeltimeLabel=newLabel(); timeRunnablerunnable=newtimeRunnable(); ThreadtimeThread=newThread(runnable); longstartTime; longusedTime; JFramemainframe; myPanelpanel; ImageboomImage=newImageIcon("boom.jpg").getImage(); recordlistlist=newrecordlist(); JButtonstartButton; JButtonaboutButton; JButtonrecordButton; //類(lèi)的屬性 voidcreateWindow(){ //創(chuàng)建基礎(chǔ)框架 mainframe=newJFrame("掃雷"); panel=newmyPanel(); //框架及面板 startButton=newJButton(); startButton.setText("重新開(kāi)始"); startButton.setFont(newFont("楷書(shū)",Font.ITALIC,15)); startButton.setFocusPainted(false); startButton.addActionListener(newstartListener()); aboutButton=newJButton(); aboutButton.setText("關(guān)于"); aboutButton.setFont(newFont("楷書(shū)",Font.ITALIC,15)); aboutButton.setFocusPainted(false); aboutButton.addActionListener(newaboutListener()); recordButton=newJButton(); recordButton.setText("記錄"); recordButton.setFont(newFont("楷書(shū)",Font.ITALIC,15)); recordButton.addActionListener(newrecordListener()); recordButton.setFocusPainted(false); //按鈕 timeLabel.setBounds(350,220,30,30); timeLabel.setBackground(Color.white); startTime=System.currentTimeMillis(); timeThread.start(); panel.setLayout(null); panel.setBackground(Color.BLACK); startButton.setBounds(320,40,100,30); panel.add(startButton); recordButton.setBounds(320,100,100,30); panel.add(recordButton); aboutButton.setBounds(320,160,100,30); panel.add(aboutButton); panel.add(timeLabel); mainframe.setSize(450,340); mainframe.setVisible(true); mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainframe.add(panel); //框架布局 } voidsetBoom() //生成虛擬雷盤(pán)的雷區(qū) { for(introw=0;row<14;row++) for(intcol=0;col<14;col++) { boom[row][col]=newButton(); visualBoom[row][col]=0; } //初始化雷區(qū) for(inti=0;i<14;i++) { visualBoom[0][i]=-2; visualBoom[i][0]=-2; visualBoom[i][13]=-2; visualBoom[13][i]=-2; } //虛擬雷盤(pán)封邊 intx,y; Randomr=newRandom(); for(intcount=0;count<16;) { x=r.nextInt(12); y=r.nextInt(12); if(visualBoom[x+1][y+1]==0) { visualBoom[x+1][y+1]=-1; count++; } } } //生成地雷,邊緣:-2雷點(diǎn):-1正常點(diǎn):0 voidhandleBoom(){ //炸彈信息轉(zhuǎn)化 inttemp[][]=newint[14][14]; for(introw=0;row<14;row++) for(intcol=0;col<14;col++) { temp[row][col]=visualBoom[row][col]; } for(introw=1;row<13;row++) for(intcol=1;col<13;col++) { temp[row][col]=countBoom(row,col); } numOfBoom=0; visualBoom=temp; } intcountBoom(intx,inty){ //周?chē)◤椨?jì)數(shù)器 intcount=0; if(visualBoom[x][y]!=-1) { if(visualBoom[x-1][y-1]==-1) count++; if(visualBoom[x][y-1]==-1) count++; if(visualBoom[x+1][y-1]==-1) count++; if(visualBoom[x+1][y]==-1) count++; if(visualBoom[x+1][y+1]==-1) count++; if(visualBoom[x][y+1]==-1) count++; if(visualBoom[x-1][y+1]==-1) count++; if(visualBoom[x-1][y]==-1) count++; }else count=-1; returncount; } //雷:-1雷數(shù):(int) voidshowButton() //加入雷區(qū)按鈕到面板上 { for(introw=1;row<13;row++) for(intcol=1;col<13;col++) { boom[row][col].setBounds((row-1)*25,(col-1)*25,25,25); boom[row][col].setFocusable(false); boom[row][col].addActionListener(newbuttomListener(row,col)); boom[row][col].addMouseListener(newrightClick(row,col)); panel.add(boom[row][col]); } } classmyPanelextendsJPanel{ //面板內(nèi)部類(lèi) publicvoidpaintComponent(Graphicsg) { g.setColor(Color.gray); g.fillRect(0,0,300,300); g.setColor(Color.black); for(intline=0;line<=300;line+=25) g.drawLine(line,0,line,300); for(introw=0;row<=300;row+=25) g.drawLine(0,row,300,row); //繪制基本格 g.setFont(newFont("楷書(shū)",Font.ITALIC,13)); g.drawString("MineSweeperVer3.0",305,20); //繪制版本信息 g.drawString("時(shí)間",310,240); for(introw=1;row<13;row++) for(intcol=1;col<13;col++) { if(visualBoom[row][col]!=-1&&visualBoom[row][col]!=0) g.drawString(Integer.toString(visualBoom[row][col]),(row-1)*25+8,(col-1)*25+20); elseif(visualBoom[row][col]==-1) { g.drawImage(boomImage,(row-1)*25,(col-1)*25,25,25,this); } } } } //面板繪圖 classbuttomListenerimplementsActionListener{ //各種監(jiān)聽(tīng)器 introw,col; buttomListener(intx,inty) { row=x; col=y; } publicvoidactionPerformed(ActionEvente){ if(visualBoom[row][col]==0) { refreshVisitTest(); openButton(row,col); }elseif(visualBoom[row][col]!=-1) { boom[row][col].setVisible(false); }else { boom[row][col].setVisible(false); gameOver(0); } numOfBoom=0; for(introw=1;row<13;row++) for(intcol=1;col<13;col++) if(boom[row][col].getLabel()=="雷") numOfBoom++; if(numOfBoom==16) gameOver(1); } } classrightClickimplementsMouseListener{ introw,col; rightClick(intx,inty) { row=x; col=y; } @Override publicvoidmouseClicked(MouseEvente){ //TODOAuto-generatedmethodstub if(e.getButton()==MouseEvent.BUTTON3) { if(boom[row][col].getLabel()!="雷") { boom[row][col].setLabel("雷"); numOfBoom=0; for(introw=1;row<13;row++) for(intcol=1;col<13;col++) if(boom[row][col].getLabel()=="雷") numOfBoom++; if(numOfBoom==16) gameOver(1); } else boom[row][col].setLabel(""); } } @Override publicvoidmouseEntered(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseExited(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmousePressed(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseReleased(MouseEvente){ //TODOAuto-generatedmethodstub } } voidrefreshVisitTest(){ //重置訪問(wèn)標(biāo)記表 for(introw=1;row<13;row++) for(intcol=1;col<13;col++) { visitTest[row][col]=0; } //訪問(wèn)標(biāo)記置0 for(inti=0;i<14;i++) { visualBoom[0][i]=1; visualBoom[i][0]=1; visualBoom[i][13]=1; visualBoom[13][i]=1; } //邊緣訪問(wèn)標(biāo)記置1 } classstartListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ for(introw=1;row<13;row++) for(intcol=1;col<13;col++) { boom[row][col].setVisible(true); boom[row][col].setLabel(""); visualBoom[row][col]=0; } intx,y; Randomr=newRandom(); for(intcount=0;count<16;) { x=r.nextInt(12); y=r.nextInt(12); if(visualBoom[x+1][y+1]==0) { visualBoom[x+1][y+1]=-1; count++; } } handleBoom(); startTime=System.currentTimeMillis(); panel.repaint(); System.out.println(""); System.out.println(""); System.out.println(""); System.out.println(""); for(introw=1;row<13;row++) { System.out.println(""); for(intcol=1;col<13;col++) { if(visualBoom[col][row]!=-1) System.out.print(visualBoom[col][row]+""); else System.out.print("*"); } } } } classrecordListenerimplementsActionListener{ @Override publicvoidactionPerformed(ActionEventarg0){ recordFramerec=newrecordFrame(); rec.createWindow(); } } classaboutListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ JOptionPane.showMessageDialog(mainframe.getContentPane(),"制作人:濱江學(xué)院2021級(jí)軟件工程1班王琢","關(guān)于",JOptionPane.INFORMATION_MESSAGE); } } voidopenButton(intx,inty){ //響應(yīng)鼠標(biāo)事件 visitTest[x][y]=1; //訪問(wèn)標(biāo)記置1 boom[x][y].setVisible(false); if(visualBoom[x][y]!=-1) { if(visualBoom[x-1][y-1]!=-1) boom[x-1][y-1].setVisible(false); if(visualBoom[x][y-1]==0&&visitTest[x][y-1]==0) openButton(x,y-1); elseif(visualBoom[x][y-1]!=-1) boom[x][y-1].setVisible(false); if(visualBoom[x+1][y-1]!=-1) boom[x+1][y-1].setVisible(false); if(visualBoom[x+1][y]==0&&visitTest[x+1][y]==0) openButton(x+1,y); elseif(visualBoom[x+1][y]!=-1) boom[x+1][y].setVisible(false); if(visualBoom[x+1][y+1]!=-1) boom[x+1][y+1].setVisible(false); if(visualBoom[x][y+1]==0&&visitTest[x][y+1]==0) openButton(x,y+1); elseif(visualBoom[x][y+1]!=-1) boom[x][y+1].setVisible(false); if(visualBoom[x-1][y+1]!=-1) boom[x-1][y+1].setVisible(false); if(visualBoom[x-1][y]==0&&visitTest[x-1][y]==0) openButton(x-1,y); elseif(visualBoom[x-1][y]!=-1) boom[x-1][y].setVisible(false); }else{ gameOver(0); } } classtimeRunnableimplementsRunnable{ //計(jì)時(shí)器專(zhuān)用線(xiàn)程 @Override publicvoidrun(){ while(true) { timeLabel.setText(Long.toString((System.currentTimeMillis()-startTime)/1000)); usedTime=(System.currentTimeMillis()-startTime)/1000+1; try{ Thread.sleep(500); }catch(Exceptionex){ } } } } voidgameOver(intisWin){ //游戲結(jié)束 if(isWin==0) { JOptionPane.showMessageDialog(mainframe.getContentPane(),"勝敗乃兵家常事,大俠請(qǐng)重新來(lái)過(guò)!\n本次游戲用時(shí):"+usedTime+"秒","YouLose!",JOptionPane.INFORMATION_MESSAGE); startButton.doClick(); }else{ JOptionPane.showMessageDialog(mainframe.getContentPane(),"恭喜您!沒(méi)有什么地雷能逃過(guò)您的火眼金睛\n本次游戲用時(shí):"+usedTime+"秒","YouWin!",JOptionPane.INFORMATION_MESSAGE); try { ObjectInputStreamin=newObjectInputStream(newFileInputStream("record.wz")); list=(recordlist)in.readObject(); in.close(); if(usedTime<=list.getLowestScore()); nameInputernameinputer=newnameInputer(list,usedTime); }catch(Exceptione) { } startButton.doClick(); } } publicstaticvoidmain(String[]args){ sweepermain=newsweeper(); main.setBoom(); main.handleBoom(); main.createWindow(); main.showButton(); for(introw=1;row<13;row++) { System.out.println(""); for(intcol=1;col<13;col++) { if(main.visualBoom[col][row]!=-1) System.out.print(main.visualBoom[col][row]+""); else System.out.print("*"); } } }}recordFrame類(lèi):importjava.awt.Graphics;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.*;importjavax.swing.*;publicclassrecordFrameimplementsSerializable{ JFramerecFrame; recPanelrecpanel; JButtonclose=newJButton("關(guān)閉"); recordlistlist; voidcreateWindow(){ recFrame=newJFrame("光榮榜"); recpanel=newrecPanel(); recpanel.setLayout(null); close.addActionListener(newcloseListener()); close.setBounds(50,230,80,20); recpanel.add(close); recFrame.setSize(200,300); recFrame.setVisible(true); recFrame.add(recpanel); } classcloseListenerimplementsActionListener{ @Override publicvoidactionPerformed(ActionEventarg0){ recFrame.hide(); } } classrecPanelextendsJPanel{ publicvoidpaintComponent(Graphicsg){ g.drawString("姓名",25,20); g.drawString("耗時(shí)",125,20); try{ ObjectInputStreamin=newObjectInputStream(newFileInputStream("record.wz")); list=(recordlist)in.readObject(); in.close(); for(intpos=0;pos<10;pos++) { g.drawString([pos],25,20*(pos+2)); g.drawString(Long.toString(list.score[pos]),125,20*(pos+2)); } }catch(Exceptione){ e.printStackTrace(); } } }}recordList類(lèi):importjava.io.*;publicclassrecordlistimplementsSerializable{ //光榮榜存儲(chǔ)類(lèi) publicStringname[]; publiclongscore[]; publicrecordlist(){ //構(gòu)造函數(shù) name=newString[10]; score=newlong[10]; for(inti=0;i<10;i++) { name[i]="王琢"; score[i]=999; } } longgetLowestScore(){ //返回榜內(nèi)最長(zhǎng)時(shí)間 returnscore[9]; } longgetHighestScore(){ returnscore[0]; } voidinsertValue(Stringn,longs){ //插入新元素 inti=0; longtemp; Stringntemp; while(s>score[i]){ i++; } do{ temp=score[i]; ntemp=name[i]; score[i]=s; name[i]=n; s=temp; n=ntemp; i++; }while(i<10); }}nameInputer類(lèi):importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.FileOutputStream;importjava.io.ObjectOutputStream;importjavax.swing.*;publicclassnameInputer{ JFrameframe; JPanelpanel; JTextFieldtext; JButtonbutton; JLabellabel; Stringname; recordlistmylist; longusedtime; nameInputer(recordlistlist,longtime){ frame=newJFrame("新紀(jì)錄"); frame.setSize(300,180); panel=newJPanel(); text=newJTextField(); text.setBounds(145,30,60,20); button=newJButton("確定"); button.addActionListener(newbuttonlistener()); button.setBounds(80,70,100,20); label=newJLabel("請(qǐng)留下您的尊姓大名:"); label.setBounds(20,30,120,20); panel.setLayout(null); panel.add(text); panel.add(button); panel.add(label); frame.add(panel); frame.setVisible(true); mylist=list; usedtime=time; } StringgetName(){ ; } recordlistgetList(recordlistlist){ returnlist; } classbuttonlistenerimplementsActionListener{publicvoidactionPerformed(ActionEvente) { name=text.getText(); mylist.insertValue(name,usedtime); try{ ObjectOutputStreamout=newObjectOutputStream(newFileOutputStream("record.wz")); out.writeObject(mylist); out.close(); }catch(Exceptionex){ } frame.hide(); } }}軟件截圖:結(jié)束語(yǔ)經(jīng)過(guò)了近一周的不斷努力和改進(jìn),終于完成了這個(gè)掃雷的小游戲,通過(guò)這次程序設(shè)計(jì)我深切體會(huì)了JAVA相對(duì)于C語(yǔ)言的便捷性以及多態(tài)與封裝的優(yōu)越性,同時(shí)也深深體會(huì)到軟件工程基礎(chǔ)知識(shí)對(duì)軟件開(kāi)發(fā)的重要性,親身體會(huì)了一次從策劃到初步實(shí)施到不斷完善的開(kāi)發(fā)程序過(guò)程,為今后的程序開(kāi)發(fā)積累的寶貴的經(jīng)驗(yàn)。另外,我也深深體會(huì)到數(shù)據(jù)結(jié)構(gòu)的重要性,一個(gè)好的數(shù)據(jù)結(jié)構(gòu)可以提高算法效率,節(jié)省大量寶貴的資源,提升程序運(yùn)行效率。這次課程設(shè)計(jì)提高了我對(duì)程序開(kāi)發(fā)的興趣,體會(huì)到了在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)問(wèn)題,解決問(wèn)題的樂(lè)趣,為今后的學(xué)習(xí)樹(shù)立了信心。

社會(huì)實(shí)踐報(bào)告系別:班級(jí):學(xué)號(hào):姓名:作為祖國(guó)未來(lái)的事業(yè)的繼承人,我們這些大學(xué)生應(yīng)該及早樹(shù)立自己的歷史責(zé)任感,提高自己的社會(huì)適應(yīng)能力。假期的社會(huì)實(shí)踐就是很好的鍛煉自己的機(jī)會(huì)。當(dāng)下,掙錢(qián)早已不是打工的唯一目的,更多的人將其視為參加社會(huì)實(shí)踐、提高自身能力的機(jī)會(huì)。許多學(xué)校也積極鼓勵(lì)大學(xué)生多接觸社會(huì)、了解社會(huì),一方面可以把學(xué)到的理論知識(shí)應(yīng)用到實(shí)踐中去,提高各方面的能力;另一方面可以積累工作經(jīng)驗(yàn)對(duì)日后的就業(yè)大有裨益。進(jìn)行社會(huì)實(shí)踐,最理想的就是找到與本專(zhuān)業(yè)對(duì)口單位進(jìn)行實(shí)習(xí),從而提高自己的實(shí)戰(zhàn)水平,同時(shí)可以將課本知識(shí)在實(shí)踐中得到運(yùn)用,從而更好的指導(dǎo)自己今后的學(xué)習(xí)。但是作為一名尚未畢業(yè)的大學(xué)生,由于本身具備的專(zhuān)業(yè)知識(shí)還十分的有限,所以我選擇了打散工作為第一次社會(huì)實(shí)踐的方式。目的在于熟悉社會(huì)。就職業(yè)本身而言,并無(wú)高低貴賤之分,存在即為合理。通過(guò)短短幾天的打工經(jīng)歷可以讓長(zhǎng)期處于校園的我們對(duì)社會(huì)有一種更直觀的認(rèn)識(shí)。實(shí)踐過(guò)程:自從走進(jìn)了大學(xué),就業(yè)問(wèn)題就似乎總是圍繞在我們的身邊,成了說(shuō)不完的話(huà)題。在現(xiàn)今社會(huì),招聘會(huì)上的大字報(bào)都總寫(xiě)著“有經(jīng)驗(yàn)者優(yōu)先”,可還在校園里面的我們這班學(xué)子社會(huì)經(jīng)驗(yàn)又會(huì)擁有多少呢?為了拓展自身的知識(shí)面,擴(kuò)大與社會(huì)的接觸面,增加個(gè)人在社會(huì)競(jìng)爭(zhēng)中的經(jīng)驗(yàn),鍛煉和提高自己的能力,以便在以后畢業(yè)后能真正真正走入社會(huì),能夠適應(yīng)國(guó)內(nèi)外的經(jīng)濟(jì)形勢(shì)的變化,并且能夠在生活和工作中很好地處理各方面的問(wèn)題,我開(kāi)始了我這個(gè)假期的社會(huì)實(shí)踐-走進(jìn)天源休閑餐廳。實(shí)踐,就是把我們?cè)趯W(xué)校所學(xué)的理論知識(shí),運(yùn)用到客觀實(shí)際中去,使自己所學(xué)的理論知識(shí)有用武之地。只學(xué)不實(shí)踐,那么所學(xué)的就等于零。理論應(yīng)該與實(shí)踐相結(jié)合。另一方面,實(shí)踐可為以后找工作打基礎(chǔ)。通過(guò)這段時(shí)間的實(shí)習(xí),學(xué)到一些在學(xué)校里學(xué)不到的東西。因?yàn)榄h(huán)境的不同,接觸的人與事不同,從中所學(xué)的東西自然就不一樣了。要學(xué)會(huì)從實(shí)踐中學(xué)習(xí),從學(xué)習(xí)中實(shí)踐。而且在中國(guó)的經(jīng)濟(jì)飛速發(fā)展,又加入了世貿(mào),國(guó)內(nèi)外經(jīng)濟(jì)日趨變化,每天都不斷有新的東西涌現(xiàn),在擁有了越來(lái)越多的機(jī)會(huì)的同時(shí),也有了更多的挑戰(zhàn),前天才剛學(xué)到的知識(shí)可能在今天就已經(jīng)被淘汰掉了,中國(guó)的經(jīng)濟(jì)越和外面接軌,對(duì)于人才的要求就會(huì)越來(lái)越高,我們不只要學(xué)好學(xué)校里所學(xué)到的知識(shí),還要不斷從生活中,實(shí)踐中學(xué)其他知識(shí),不斷地從各方面武裝自已,才能在競(jìng)爭(zhēng)中突出自已,表現(xiàn)自已。在餐廳里,別人一眼就能把我人出是一名正在讀書(shū)的學(xué)生,我問(wèn)他們?yōu)槭裁?他們總說(shuō)從我的臉上就能看出來(lái),也許沒(méi)有經(jīng)歷過(guò)社會(huì)的人都有我這種不知名遭遇吧!我并沒(méi)有因?yàn)槲以谒麄兠媲皼](méi)有經(jīng)驗(yàn)而退后,我相信我也能做的像他們一樣好.我的工作是在那做傳菜生,每天9點(diǎn)鐘-下午2點(diǎn)再?gòu)南挛绲?點(diǎn)-晚上8:30分上班,雖然時(shí)間長(zhǎng)了點(diǎn)但,熱情而年輕的我并沒(méi)有絲毫的感到過(guò)累,我覺(jué)得這是一種激勵(lì),明白了人生,感悟了生活,接觸了社會(huì),了解了未來(lái).在餐廳里雖然我是以傳菜為主,但我不時(shí)還要做一些工作以外的事情,有時(shí)要做一些清潔的工作,在學(xué)校里也許有老師分配說(shuō)今天做些什么,明天做些什么,但在這里,不一定有人會(huì)告訴你這些,你必須自覺(jué)地去做,而且要盡自已的努力做到最好,一件工作的效率就會(huì)得到別人不同的評(píng)價(jià)。在學(xué)校,只有學(xué)習(xí)的氛圍,畢竟學(xué)校是學(xué)習(xí)的場(chǎng)所,每一個(gè)學(xué)生都在為取得更高的成績(jī)而努力。而這里是工作的場(chǎng)所,每個(gè)人都會(huì)為了獲得更多的報(bào)酬而努力,無(wú)論是學(xué)習(xí)還是工作,都存在著競(jìng)爭(zhēng),在競(jìng)爭(zhēng)中就要不斷學(xué)習(xí)別人先進(jìn)的地方,也要不斷學(xué)習(xí)別人怎樣做人,以提高自已

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論