九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > DOC文檔下載  

Java拼圖游戲面向?qū)ο笳n程設(shè)計(jì)報(bào)告.doc

  • 資源ID:9333780       資源大?。?span id="24d9guoke414" class="font-tahoma">398.50KB        全文頁(yè)數(shù):11頁(yè)
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

Java拼圖游戲面向?qū)ο笳n程設(shè)計(jì)報(bào)告.doc

姓 名Name學(xué) 號(hào)Student No.20137045班 級(jí)Class代碼總行數(shù)Code Lines222項(xiàng)目名稱(chēng)Item1實(shí)驗(yàn)?zāi)康谋敬握n程設(shè)計(jì)旨在通過(guò)一個(gè)完整項(xiàng)目的開(kāi)發(fā),鞏固面向?qū)ο蟪绦蛟O(shè)計(jì)、軟件工程、數(shù)據(jù)庫(kù)技術(shù)等課程的相關(guān)知識(shí),加深學(xué)生對(duì)Java語(yǔ)言的理解,尤其是對(duì)面向?qū)ο笏枷?、Java編碼規(guī)范、JDBC訪問(wèn)數(shù)據(jù)庫(kù)的理解,使學(xué)生進(jìn)一步掌握環(huán)境構(gòu)建、代碼編寫(xiě)、文檔閱讀與理解、文檔編寫(xiě)、軟件測(cè)試、發(fā)行與部署等技能,進(jìn)一步提高學(xué)生的學(xué)習(xí)能力、理解能力、表達(dá)能力及溝通能力。2實(shí)驗(yàn)內(nèi)容本次課程設(shè)計(jì)選定的實(shí)驗(yàn)項(xiàng)目是使用JAVA語(yǔ)言編寫(xiě)一個(gè)拼圖游戲并實(shí)現(xiàn)其基本功能。不用自己手動(dòng)切割圖片,再進(jìn)行加載。而是應(yīng)用類(lèi)方法在內(nèi)存中進(jìn)行圖片切割和加載,方便了用戶的使用。 利用了Graphics中的public abstract boolean drawImage()方法把 img 中由 (sx1, sy1)(sx2, sy2)指定的矩形區(qū)域畫(huà)到 observer 中由(dx1, dy1)(dx2, dy2)指定的矩形區(qū)域內(nèi)進(jìn)行構(gòu)思拼圖游戲的具體實(shí)現(xiàn)。 導(dǎo)入了一個(gè)可播放背景音樂(lè)的jar包,在玩游戲時(shí)可以欣賞背景音樂(lè)。3.類(lèi)圖4.運(yùn)行界面圖1、游戲初始界面圖2、游戲運(yùn)行界面圖3、拼圖成功界面5.關(guān)鍵代碼(要求在類(lèi)的定義以及方法定義的前面給出相關(guān)描述信息)/定義一個(gè)Pintu類(lèi)public class Jpgsaw extends JFrameprivate Image image, buff; /原始圖片,緩存圖片 private int map = 0, 1, 2, 3, 4, 5, 6, 7, 8 ; /定義數(shù)組map,給分割后的圖片標(biāo)號(hào) private Point point = new Point(2, 2); /記錄第九塊圖片位置 private int sx; /分割后每一個(gè)圖片的寬度 private int sy; /分割后每一個(gè)圖片的高度 private Canvas canvas; /加載圖片容器,定義可以顯式定位子元素使用坐標(biāo)是相對(duì) Canvas 區(qū)域的區(qū)域,繪制圖形 private Graphics gs; /gs畫(huà)出Canvas圖片坐標(biāo) private Graphics gb; /gb畫(huà)出buff圖像 private boolean isRunning = false; /游戲是否正在進(jìn)行 private JButton start = new JButton("開(kāi)始新的游戲"); / 按鈕1 private JButton show = new JButton("顯示正確圖片"); /按鈕2 private JTextArea showStep = new JTextArea("顯示步驟");/設(shè)置步驟顯示 private JPanel panel = new JPanel(); /一般輕量級(jí)面板容器,裝在上面2個(gè)按鈕 private int steps = 0; / 記錄移動(dòng)的步驟 public Jpgsaw(String title) /構(gòu)造方法,初始化變量 super(title);/調(diào)用了當(dāng)前類(lèi)Jpgsaw的父類(lèi)JFrame的構(gòu)造方法 try /異常拋出 image = ImageIO.read(new File("gg.jpg"); /裝載圖片 catch (IOException e) /捕獲自定義的異常 e.printStackTrace(); initScreen(); /用此方法來(lái)初始化canvas,由于canvas 初始化較復(fù)雜,所以單獨(dú)寫(xiě)一個(gè)方法 buff = new BufferedImage(715, 381, BufferedImage.TYPE_INT_BGR);/Image的一個(gè)子類(lèi),BufferedImage生成的圖片在內(nèi)存里有一個(gè)圖像緩沖區(qū),利用這個(gè)緩沖區(qū)我們可以很方便的操作這個(gè)圖片 gb = buff.getGraphics();/存在于Image類(lèi)中,存在于緩沖器中的圖片,設(shè)置坐標(biāo) sx = image.getWidth(this) / 3;/圖片分割后每一個(gè)圖片的寬度 sy = image.getHeight(this) / 3;/圖片分割后每一個(gè)圖片的高度 setLayout(new BorderLayout();/設(shè)置此布局方法,加入控件 add(panel, BorderLayout.SOUTH);/布置容器的邊框布局,它可以對(duì)容器組件進(jìn)行安排,并調(diào)整其大小 add(canvas, BorderLayout.CENTER); panel.setLayout(new GridLayout(1, 4);/把組件按指定的幾行幾列分開(kāi),添加其他組件時(shí),會(huì)按添加的順序挨個(gè)添加到該組件上 panel.add(start); panel.add(show); panel.add(showStep); showStep.setEditable(false);/步驟默認(rèn)false,使調(diào)用這個(gè)函數(shù)的控件不能被編輯 showStep.setFont(new Font("黑體", Font.PLAIN, 16);/設(shè)置字體 setSize(720, 425); setResizable(false);/表示生成的窗體大小,不可改變大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/執(zhí)行關(guān)閉按鈕,關(guān)閉窗體 /具體實(shí)現(xiàn)Canvas,進(jìn)行初始化 void initScreen() canvas = new Canvas() public void paint(Graphics g) /覆寫(xiě)canvas的paint 方法 gs = getGraphics(); /得到Canvas的Graphics if (isRunning) drawScreen();/運(yùn)行,調(diào)用此方法 else g.drawImage(image, 0, 0, this);/在指定的位置使用原始物理大小繪制指定的 Image g.setColor(Color.gray);/設(shè)置前景顏色,變?yōu)榛疑?; canvas.addMouseListener(new MouseAdapter() /添加鼠標(biāo)事件監(jiān)聽(tīng)器 /覆寫(xiě)mousePressed 方法,實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊時(shí),圖片移動(dòng) public void mousePressed(MouseEvent me) if (!isRunning) return; / 如果未運(yùn)行,說(shuō)明圖片未分割,直接返回 int x = me.getX() / sx;/判斷鼠標(biāo)點(diǎn)擊的圖片在map中的編號(hào) int y = me.getY() / sy; int fx = (int) point.getX();/記錄第九塊圖片(未顯示圖片)的位置 int fy = (int) point.getY(); int canMove = Math.abs(fx - x) + Math.abs(fy - y); / 如鼠標(biāo)點(diǎn)擊位置與第九塊圖片(可移動(dòng)的位置)相鄰,則canMove 必為 1 if (canMove != 1 ) return; / canMove 不為1,不能移動(dòng)圖片 mapfxfy = mapxy; /點(diǎn)擊圖片坐標(biāo) 賦給第九塊圖片 mapxy = 8; /第九塊圖片給掉 點(diǎn)擊圖片 point.setLocation(x, y); /point 坐標(biāo)改變 drawScreen(); /重繪屏幕,實(shí)現(xiàn)圖片移動(dòng) showStep.setText("移動(dòng)步驟:" + +steps); /步驟加一 ); /為Start按鈕添加事件 start.addActionListener(new ActionListener() SuppressWarnings("deprecation")public void actionPerformed(ActionEvent ae) initMap(); drawScreen(); isRunning = true; steps = 0; showStep.setText("移動(dòng)步驟:" + steps); show.setLabel("顯示正確圖片"); ); /為show按鈕添加事件 show.addActionListener(new ActionListener() SuppressWarnings("deprecation")public void actionPerformed(ActionEvent ae) if (show.getLabel().equals("繼續(xù)游戲") drawScreen(); isRunning = true; show.setLabel("顯示正確圖片"); else gs.drawImage(image, 0, 0, canvas); isRunning = false; show.setLabel("繼續(xù)游戲"); ); /容器內(nèi)游戲運(yùn)行時(shí)圖片的顯示方法 void initMap() long time = System.nanoTime();/得到系統(tǒng)當(dāng)前時(shí)間 作為隨機(jī)數(shù)種子 java.util.Random rnd = new java.util.Random(time); int temp, x1, y1, x2, y2; /隨機(jī)交換圖片 for (int i = 0; i < 100; i+) x1 = rnd.nextInt(3); x2 = rnd.nextInt(3); y1 = rnd.nextInt(3); y2 = rnd.nextInt(3); temp = mapx1y1; mapx1y1 = mapx2y2; mapx2y2 = temp; outer: /標(biāo)記8號(hào)圖片(即空白圖片) for (int i = 0; i < 3; i+) for (int j = 0; j < 3; j+) if (mapij = 8) point.setLocation(i, j); break outer;/跳轉(zhuǎn)到帶有空白標(biāo)號(hào)的行 /把整個(gè)canvas上的所有對(duì)象都繪制一遍 void drawScreen() int sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2; int t1, t2; gb.setColor(Color.white); gb.clearRect(0, 0, sx * 3, sy * 3);/清空整個(gè)緩沖區(qū)圖片 for (int x = 0; x < 3; x+)/圖片在橫行的顯示 for (int y = 0; y < 3; y+)/圖片在列上的顯示 if(mapxy != 8) / 目的地址 dx1 = x * sx; dy1 = y * sy; / 移動(dòng)的左上角坐標(biāo) dx2 = dx1 + sx - 1; dy2 = dy1 + sy - 1; / 移動(dòng)的右下角坐標(biāo) / 源地址 t1 = mapxy % 3 ; t2 = mapxy / 3 ; sx1 = t1 * sx; sy1 = t2 * sy; / 移動(dòng)的左上角圖標(biāo) sx2 = sx1 + sx - 1; sy2 = sy1 + sy - 1; / 移動(dòng)的右下角坐標(biāo) gb.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, Color.white, canvas);/繪制緩沖區(qū)圖片 gs.drawImage(buff, 0, 0, canvas);/將緩沖區(qū)圖片繪制到 canvas 上 /主方法,實(shí)現(xiàn)Jpgsaw類(lèi)的使用,運(yùn)行游戲 public static void main(String args) Jpgsaw pintu = new Jpgsaw("JpgsawGame"); new Thread().start();/新建一個(gè)ThreadStart對(duì)象并傳入一個(gè)方法給線程調(diào)用 pintu.setVisible(true);/最后調(diào)用,避免組件不顯示,利用線程設(shè)置組件可見(jiàn) /*播放背景音樂(lè)*/public class PlayMe public static void playMe() try String file = "/JpgSaw/JpgsawGame/src/test.mp3" /音樂(lè)文件路徑 FileInputStream fis = new FileInputStream(file); /路徑設(shè)置 BufferedInputStream bis = new BufferedInputStream(fis);/帶有緩沖區(qū)的輸入流 new Player(bis).play(); /jar包中定義好的播放方法 catch (Exception e) System.out.print("ERROR " + e); 6上機(jī)調(diào)試及問(wèn)題分析1、圖片的存放位置出現(xiàn)錯(cuò)誤,圖片引用路徑報(bào)錯(cuò)。通過(guò)修改路徑,放至同一文件夾下,圖片插入成功。2、圖片導(dǎo)入后,無(wú)法自動(dòng)分開(kāi)圖片。上網(wǎng)查詢邏輯算法,得到新的圖片分區(qū)。3、由于圖片為隨機(jī)打亂,如果拼的時(shí)間較長(zhǎng),只好重新開(kāi)始游戲。4、代碼中:new Thread(pintu).start();報(bào)錯(cuò),pintu方法未定義。去掉pintu,改為:new Thread().start();程序運(yùn)行正常。5、圖片引入之后,分開(kāi)的圖片,沒(méi)有空白處。使用private Canvas canvas; /加載圖片容器,解決了去掉去片中的一塊。6、不足之處,音樂(lè)播放一遍后自動(dòng)關(guān)閉。7心得體會(huì)及建議本次實(shí)訓(xùn)鞏固了我對(duì)前續(xù)課程所學(xué)的知識(shí),加深了我對(duì)Java的理解,尤其是對(duì)面向?qū)ο笏枷?、Java編程思想、Java編程規(guī)范、Java API文檔的理解,讓我進(jìn)一步掌握了環(huán)境構(gòu)建、代碼編寫(xiě)、文檔閱讀與理解、文檔編寫(xiě)等技能,進(jìn)一步提高了學(xué)習(xí)能力、理解能力、表達(dá)能力、溝通能力。由于知識(shí)和能力的限制,雖然有悉心準(zhǔn)備和精心設(shè)計(jì)修改制作,本程序設(shè)計(jì)仍然難免有很多不足和不完善之處。會(huì)更加努力使本程序不斷改進(jìn),日臻完善。通過(guò)這次的實(shí)訓(xùn)我個(gè)人的實(shí)際操作能力得到了很大一步的提高,并且在思考問(wèn)題方面也比以前考慮的更全面。這次實(shí)訓(xùn)我感覺(jué)非常的充足,在這次的實(shí)訓(xùn)中,學(xué)到了許多知識(shí),自己不會(huì)的問(wèn)題通過(guò)老師、同學(xué)的講解和查詢資料,得到了解決,從中也學(xué)到了許多相關(guān)的知識(shí),擴(kuò)大了自己的知識(shí)面,對(duì)我自己來(lái)說(shuō)是一個(gè)提高和鍛煉的機(jī)會(huì),對(duì)以后的學(xué)會(huì)添加了信心。在本次實(shí)訓(xùn)過(guò)程中遇到很多編程技術(shù)層次的問(wèn)題,老師和同學(xué)都給予了耐心的指導(dǎo),在此表示由衷的感謝。通過(guò)實(shí)訓(xùn),我認(rèn)識(shí)到自己還有很多的知識(shí)沒(méi)學(xué)好,基礎(chǔ)知識(shí)沒(méi)理清,而且許多東西,還要去翻書(shū),去上網(wǎng)搜索。而且遇到一些小錯(cuò)誤運(yùn)行不出來(lái),就會(huì)煩躁不安,覺(jué)得有些自暴自棄或者抱怨項(xiàng)目的變態(tài),以后要克服,盡量保持一顆良好的心態(tài),這次實(shí)訓(xùn)給我留下了深刻的影響,感謝這次實(shí)訓(xùn)帶給我的進(jìn)步。成 績(jī)Score教師簽字 日期

注意事項(xiàng)

本文(Java拼圖游戲面向?qū)ο笳n程設(shè)計(jì)報(bào)告.doc)為本站會(huì)員(jian****018)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!