



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、java課程設計報告拼圖游戲目錄一、題目介紹 (3)1、題目 (3)2、任務 (3)3、要求 (3)二、需求分析 (3)三、概要設計 (4)1、功能分析 (4)2、界面初始化 (4)3、事件處理(1)鼠標事件 (4)4、事件處理(2)鍵盤事件 (5)5、狀態(tài)判斷 (5)6、程序流程圖 (5)四、詳細設計 (6)1、.html代碼設計 (6)2、.java代碼設計 (6)五、調試結果 (19)第一個大圖的拼圖界面 (19)第一個拼圖全圖預覽 (19)第二個大圖的拼圖界面 (20) 第二個拼圖全圖預覽 (20) 第三個大圖的拼圖界面 (21)第三個拼圖全圖預覽 (21)六、心得總結 (22)七、參
2、考資料 (22) 一、題目介紹 1、題目:拼圖游戲設計2、任務:利用java的圖形用戶界面設計,設計一個拼圖游戲界面,能夠實現(xiàn)基本的游戲功能。3、要求:(1)游戲者可以選擇不同的圖片。(2)按完成的時間計算成績。(3)記錄拼圖完成的總步數。二、需求分析拼圖游戲是一個簡單的小程序,游戲規(guī)則如下:將一張大圖打散成9張小圖,然后在游戲里任意挑8張圖,貼在3行3列的矩陣中的任意位置。通過鼠標或鍵盤的方向鍵移動打亂的8張 圖片,讓其復原成原來的順序,玩家就勝利了,游戲就結束了。在游戲結束之后,算出玩家的得分。 三、概要設計1、功能分析由于要計算游戲的時間,需要引入線程,通過實現(xiàn)runnable 接口和創(chuàng)
3、建thread類來實現(xiàn)線程的功能。使用多線程機制來計算時間的流逝。引入a wt繪圖包,實現(xiàn)圖片的繪制。引入事件處理機制,要求對鼠標事件,鍵盤事件進行相應,實現(xiàn)移動圖片,預覽全圖等功能。按鍵“y”實現(xiàn)臨時的原圖整體預覽。按鍵“1或者2或者3”實現(xiàn)大圖選擇、2、界面初始化調用public void init()通過接收html數據,加載三張源圖片,安裝媒體監(jiān)視器和鼠標鍵盤監(jiān)聽器,實現(xiàn)界面初始化;調用public void initdata()將加載的一張大圖分割成九個隨機分布的小圖部分;調用public void paint(graphics g)劃分提示信息區(qū)域和拼圖區(qū)域;3、事件處理(1)鼠標
4、事件調用public void mouseclicked(mouseevent e)方法實現(xiàn)鼠標事件處 理。 調用public int directioncanmove(int ncol,int nrow)方法檢測那個方向沒有拼圖而可以向之移動。調用public void move(int ncol,int nrow,int ndirection)方法實現(xiàn)鼠標激活拼圖移動。(2)鍵盤事件調用public void keypressed(keyevent e)方法實現(xiàn)鍵盤事件處理。調用public void initimageagain(int nimgno)方法實現(xiàn)重新加載另一張大圖。調用pu
5、blic boolean move(int ndirection)方法實現(xiàn)判斷指定拼圖是否可以往方向ndirection移動。4、狀態(tài)判斷動過調用public void checkstatus()方法來檢測拼圖狀態(tài),判斷是否拼圖成功,確定游戲是否結束。5、附加功能調用public void run()方法,給游戲過程添加計時進程。6、程序流程圖 四、詳細設計1、編寫.html代碼 拼圖游戲拼圖游戲這是一個拼圖游戲。玩家應該將打散的小圖拼成一張大圖。玩家可以通過鼠標和鍵盤來移動小圖,移動的次數和拼成一張大圖所化費的時間作為游戲得分的依據。成績=1000-時間(秒)-移動步數*10按f1鍵重新開始
6、該游戲,按y健可以預覽整個的圖片剩下的param標簽為每張圖的名字- 2、編寫.java代碼1、界面設計和附加功能import java.applet.*;import java.awt.*;import java.awt.event.*;import .*;/download by public class pintu extends applet implements mouselistener,keylistener,runnable image m_image=new image9;/9個用來裝入每個拼圖的圖片對象image m_imgall;/總的大圖片int m_nimageno=
7、new int33;/標志現(xiàn)在各個拼圖的排列情況final int no_image=-1;/此位置沒有拼圖,表示空白拼圖final int image_width=120;/每張拼圖的寬final int image_height=120;/每張拼圖的高final int direction_up=1;final int direction_down=2;final int direction_left=3;final int direction_right=4;final int direction_none=-1;final int deltax=120;/標志提示信息區(qū)的寬度boole
8、an bwantstartnewgame=false;/游戲是否結束,是否需要開始新游戲int nstep=0;/已經走的步數int ntime=0;/已經玩過的時間,以秒為單位thread thtimer;/計時器線程 int nscore=0; /玩家所得的分數int m_nnumofimg=0;/拼圖底圖所使用的圖片的個數string m_simgname=new string9;/記錄拼圖底圖的名字boolean bonshowall=false;/預覽的開關audioclip m_audioclip1,m_audioclip2;/裝載要播放的聲音對象public void init(
9、)/string param=getparameter(numofimg);trym_nnumofimg=integer.parseint(param);catch(exception e)m_nnumofimg=1;system.out.println(cant convert the params name to int.);for(int i=0;im_simgnamei=getparameter(image+(i+1)+.jpg;/用字符串數組m_simgname分別保存三個大圖及其規(guī)范命名:p/pintu.jpg pintu1.jpg pintu2.jpgsystem.out.pri
10、ntln(m_simgnamei);system.out.println(param);mediatracker mediatracker=new mediatracker(this);/為這個拼圖界面設置一個監(jiān)視器m_imgall=getimage(getdocumentbase(),img/+m_simgname0);/從裝載總的大圖片mediatracker.addimage(m_imgall,1);/為向此媒體跟蹤器正在跟蹤的圖像列表中添加一個圖像,/并分配一個表示號1 給這個圖像trymediatracker.waitforid(1);/加載所跟蹤的圖像列表中的某一個標識號所對應的的
11、一個圖像 catch(exception e) system.out.println(圖片裝載出錯);if(mediatracker.iserrorany()system.out.println(圖片裝載出錯);for(int i=0;im_imagei=createimage(image_width,image_height);graphics g=m_imagei.getgraphics();int nrow=i%3;int ncol=i/3;g.drawimage(m_imgall,0,0,image_width,image_height,nrow*image_width,ncol*im
12、age_height,(nrow+1)*image_width,(ncol+1)*image_height,this);system.out.println(init +i);/將一個大圖切割成九個小圖system.out.println(init over);thtimer=new thread(this);/為線程分配內存空間thtimer.start();/開始線程initdata();m_audioclip1=getaudioclip(getcodebase(),au/move.au);m_audioclip2=getaudioclip(getcodebase(),au/notmove
13、.au);addmouselistener(this);addkeylistener(this);public void initdata()system.out.println(run initdata);int nhasdistrib=new int9;/為每個小圖分配一個數字標識,用來判定該小圖是否被隨機編一個二維數組號for(int i=0;ifor(int j=0;j for(int i=0;iint ncount=j*3+i;int nimgno=-1;donimgno=(int)(math.random()*9);while(nhasdistribnimgno=1);/1代表已經
14、分配了這張圖片到二維數組中的隨機位置m_nimagenoij=nimgno;nhasdistribnimgno=1;system.out.println(test.);m_nimageno(int)(math.random()*3)(int)(math.random()*3)=no_image;nstep=0;ntime=0;/清空計時器public void run()while(thread.currentthread()=thtimer)trythtimer.sleep(990);string stemp=你玩了+ntime+秒的時間,;if(ntime200)stemp=stemp+時
15、間用的很長了,你可要加油啦!;else stemp=stemp+別緊張,慢慢來。;showstatus(stemp);if(!bwantstartnewgame)ntime+;catch(exception e) public void paint(graphics g) g.setcolor(color.blue);/將當前顏色變?yōu)樗{色g.fillrect(0,0,deltax,image_height*3);/填充左邊的提示信息區(qū)域g.setfont(new font(宋體,font.plain,15);/設置字體/*font是一個字體類!plain是它的一個靜態(tài)常量!類似的還有bold,
16、italic font.plain 是一個普通的系統(tǒng)默認的字體!jmenusystem.setfont(new java.awt.font(華文新魏, font.plain, 20);設置字體為華文新魏類型:普通系統(tǒng)默認大小為20*/g.setcolor(color.red);/setcolor函數對該函數調用的下文進行顏色設置g.drawstring(步數:+nstep,5,20);g.drawstring(現(xiàn)有圖片+m_nnumofimg+張,5,60);g.drawstring(請按1-+m_nnumofimg+鍵改變圖片,5,100);/在坐標(5,20)畫出字串,來顯示現(xiàn)在走了多少步。g.setcolor(color.blue);if(bonshowall)int x=deltax;int y=0;g.drawimage(m_imgall,x,y
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用消毒設備電氣安全與電磁兼容性考核試卷
- 城市配送與物流配送環(huán)節(jié)的全球物流網絡考核試卷
- 密封用填料的耐臭氧性能探討考核試卷
- 美甲店個體合作合同范本
- 水果新鮮采購合同范本
- 鐵路雨季三防培訓課件
- 土地流出合同范本
- 雪天交通安全課件
- 活動課安全課件
- 私密培訓課件目錄
- 2024年安徽省公務員錄用考試《行測》真題及答案解析
- 舞蹈學課件教學課件
- 2024年貴州省公務員考試《行測》真題及答案解析
- 絲綢之路上的民族學習通超星期末考試答案章節(jié)答案2024年
- 鐵路基礎知識題庫單選題100道及答案解析
- 四年級語文下冊第六單元【集體備課】(教材解讀+教學設計)
- 第二章 疾病概論課件
- 高壓發(fā)電機細分市場深度研究報告
- 新聞采訪與寫作課件第十五章其他報道樣式的寫作
- 解讀 國家數據局首批20個“數據要素x”典型案例-31正式版-WN8
- 《跨境直播運營》課件-跨境直播的意義和要素
評論
0/150
提交評論