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

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

JAVA拼圖游戲課程設(shè)計.doc

  • 資源ID:6686272       資源大小:4.43MB        全文頁數(shù):44頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

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

JAVA拼圖游戲課程設(shè)計.doc

學(xué)年論文(JAVA面向?qū)ο蟪绦蛟O(shè)計 2015-2016 第二學(xué)期)題目: JAVA課程設(shè)計 作者: 陳炳宏 所在學(xué)院: 信息科學(xué)與工程學(xué)院 專業(yè)年級: 信息安全14-1 指導(dǎo)教師: 楊晴雯 職稱: 副教授 2016年6月 4 日基于JAVA的拼圖游戲的設(shè)計摘要 拼圖游戲是一款非常經(jīng)典的小游戲,因為它比較簡單有趣,老少皆宜。拼圖游戲的設(shè)計對每一個Java語言設(shè)計者進(jìn)行語言提高和進(jìn)階都是一個很好的鍛煉機會。拼圖游戲的設(shè)計比較復(fù)雜,它涉及面廣、牽涉方面多,如果不好好考慮和設(shè)計,將難以成功開發(fā)出這個游戲。在這個游戲的設(shè)計中,牽涉到圖形界面的顯示與更新、數(shù)據(jù)的收集與更新,并且在這個游戲的開發(fā)中,還要應(yīng)用類的繼承機制以及一些設(shè)計模式。因此,如何設(shè)計和開發(fā)好這個拼圖游戲,對于提高Java開發(fā)水平和系統(tǒng)的設(shè)計能力有極大的幫助。在設(shè)計開發(fā)過程中,需要處理好各個類之間的繼承關(guān)系,還要處理各個類相應(yīng)的封裝,并且還要協(xié)調(diào)好各個模塊之間的邏輯依賴關(guān)系和數(shù)據(jù)通信關(guān)系。關(guān)鍵詞:拼圖游戲 Java語言 開發(fā)The design of JAVA software based on the puzzleAbstract:Jigsaw puzzle is a very classic game, because it is easy and fun, both old and young, are more suitable.Jigsaw design language for each Java language designers to improve and advance is an excellent exercise opportunities. Puzzle design is more complex, its scope, and involves many more, if you do not think and design, would be difficult to successfully developed this game. In the design of the game involves display of the graphical interface and updating, data is collected and updated, and in the development of this game, class inheritance mechanism, and some design patterns you want to apply. Therefore, how to design and develop this jigsaw puzzle, for raising the level of Java development, and system design capabilities are of great help. During the process of design and development, you need to handle the inheritance relationships between the classes, also have to deal with each type of appropriate packaging, and also to coordinate the various logical dependencies between modules and data communication.Keywords:Jigsaw puzzle Java language develop 目錄一、需求分析41.程序分析42.執(zhí)行方式43.程序執(zhí)行的命令包括44.測試數(shù)據(jù)5二、概要設(shè)計71.拼圖游戲流程圖72.設(shè)計思路73.主要類文件說明8三、詳細(xì)設(shè)計91.建立MenuFrame菜單首頁類92.建立CardFrame首頁說明類103.建立ShowImage目標(biāo)圖顯示類114.建立Grades分?jǐn)?shù)記錄類115.建立split原圖劃分類移動點擊事件類126.建立ButtonClick拼圖移動點擊事件類137.建立Gameover判斷游戲結(jié)束類148.建立Puzzle拼圖游戲主類14四、調(diào)試分析161.程序的運行162.游戲測試16五、用戶手冊171.游戲三個狀態(tài)172.游戲菜單選項183.游戲提示框20六、測試結(jié)果22七、附錄(源碼)24課程設(shè)計題目:基于JAVA的拼圖游戲1、 需求分析1.程序分析本游戲是一個Java語言的拼圖游戲,在eclipse上使用JAVA語言編寫并且利用Java Swing設(shè)計顯示。拼圖中有一個格子是空的,其他格子內(nèi)隨機放置由目標(biāo)圖片切割成的若干個小圖片,圖片按照不同難度結(jié)合目標(biāo)圖片分辨率進(jìn)行切割。用戶通過點擊空位置中周圍的任何非空圖塊來移動非空圖塊到空位置,一直重復(fù)直到拼回目標(biāo)圖片的樣子后游戲成功,記錄名次分?jǐn)?shù)。2.執(zhí)行方式 在開始游戲之前,可以選擇游戲等級后再點擊“開始”菜單里的“新游戲”,進(jìn)行拼圖游戲,被打亂的目標(biāo)圖片依次設(shè)置到拼圖中的各個按鈕中,利用按鈕的點擊事件,點擊可移動的,設(shè)置按鈕背景圖片為空,臨近按鈕設(shè)置背景圖片為剛點擊按鈕背景圖片,重復(fù)以往,直到方塊一行一行的按圖片的原始樣子拼好即可完成該游戲。游戲拼完后,會彈出一個“信息”框,顯示你玩游戲所用的步數(shù)與時間,點擊“確定”后,會彈出一個“輸入”框,可以在里面輸入游戲者的姓名,單擊“確定”后會彈出游戲的記錄框。3.程序執(zhí)行的命令包括(1) 菜單開始: 包括菜單項新游戲,游戲記錄,退出游戲,顯示背景圖片;(2) 菜單選擇: 包括菜單項等級選擇和背景圖片選擇,其中等級選擇包括難、中、易三個子菜單項,背景圖片包含已添加到images文件夾下的圖片菜單項;(3) 菜單關(guān)于: 包含幫助和關(guān)于兩個菜單項;(4) 按鈕點擊事件: 用于接收按鈕圖片移動請求并做出相應(yīng)移動;(5) 游戲記錄存儲: 游戲結(jié)束后,在不同難度下,如果打破紀(jì)錄的記錄會被寫入Game.rc文件中;(6) panel面板顯示:用于不同頁面間的切換顯示;4.測試數(shù)據(jù) (1) 目標(biāo)圖片如圖1:圖1 目標(biāo)圖片 (2) 難度:難度易游戲如圖2:圖2 難度易游戲圖片(3) 難度普通游戲如圖3:圖3 難度普通游戲圖片(4) 難度難游戲如圖4: 圖4 難度難游戲圖片 2、 概要設(shè)計1. 拼圖游戲流程圖游戲結(jié)束窗體顯示圖片放置動作事件的監(jiān)聽事件響應(yīng)是否開始游戲拼圖完整 圖5 JAVA拼圖游戲框架圖2. 設(shè)計思路為實現(xiàn)上述游戲功能,首先需要寫出MenuFrame首頁,在該布局里添加基礎(chǔ)選項和標(biāo)簽,并添加到程序首頁布局上,然后CardFrame繼承MeauFrame并設(shè)置程序說明和焦點事件以完成暫停繼續(xù),接著設(shè)計ShowImage類用于顯示原來圖像,設(shè)計Grades類來記錄游戲者游戲信息以及最終成績并借助Arg傳遞到Game.rc文件中,其中包含Data類用來輔助Grades保存數(shù)據(jù),設(shè)計split類來劃分圖塊,接著設(shè)計ButtonClick來實現(xiàn)圖片的點擊移動事件,其中引用point類輔助設(shè)置移動,并引用設(shè)計GameOver實現(xiàn)游戲過程中的計時、暫停、結(jié)束等功能并返回,最后設(shè)計Puzzle主類繼承于CarFrame類用于添加上述各種點擊事件并調(diào)用相關(guān)功能,包括在模板顯示由split類劃分的傳到拼圖矩陣后的整個拼圖圖塊,最后完善整個功能需要。3. 主要類文件說明本程序包含8個主要模塊:1) ButtonClick.class該類主要是實現(xiàn)鼠標(biāo)事件,讓玩家在用鼠標(biāo)點擊能夠移動拼圖的小圖片,移動到周圍空格的地方2) CardFrame.class該類主要實現(xiàn),初始界面的相關(guān)提示信息。3)GameOver.class 該類主要實現(xiàn)游戲過程中的計時、暫停、結(jié)束等功能,游戲結(jié)束時的信息。4) split.class 該類主要實現(xiàn)圖片的提取與切割的功能。5)Grades.class 該類主要實現(xiàn)成績記錄的初始化,在拼圖成功后可記錄游戲者姓名的功能,并直接提取等級、步數(shù)與時間等信息的功能。保存成績記錄信息,以便游戲者查看。6)MenuFrame.class 該類主要實現(xiàn)有主菜單與子菜單的功能。并設(shè)置相關(guān)的快捷鍵功能。7)Puzzle.class 該類是該游戲程序的主程序,從游戲界面大小到游戲過程中出現(xiàn)的所有信息框等相關(guān)功能都到了實現(xiàn),調(diào)用相關(guān)類實現(xiàn)其功能。8)ShowImage.class 該類用于新建窗口顯示目標(biāo)圖像。3、 詳細(xì)設(shè)計1.建立MenuFrame菜單首頁類菜單首頁的建立完成了以下設(shè)計,設(shè)置主頁菜單結(jié)構(gòu)、設(shè)置菜單位于桌面位置和退出方式、設(shè)置快捷鍵、點擊事件選擇難度,默認(rèn)普通、添加開始子菜單點擊事件好快捷鍵、添加難度選擇子菜單項并調(diào)用點擊事件、添加文件選擇點擊事件、關(guān)于菜單設(shè)置、圖片預(yù)覽點擊事件設(shè)置更新,很好的構(gòu)建了整個游戲的架構(gòu),下面列出該類的菜單結(jié)構(gòu)和一些重要的方法代碼:(省略非關(guān)鍵代碼,可在文末源代碼查看)public abstract class MenuFrameextends JFrame/設(shè)置主頁菜單結(jié)構(gòu) . private JMenu m = new JMenu("開始(B)").; private JMenu mm = new JMenu("等級(L)").;public MenuFrame()/設(shè)置菜單位于桌面位置和退出方式super("拼圖游戲");addMenu();.this.getToolkit().getScreenSize().width/3 - this.getWidth()/3;private void addMenu()/設(shè)置快捷鍵m0.setMnemonic(B);initMenuBegin() .private void menuLevelClick(String nm)/點擊事件選擇難度,默認(rèn)普通type = 3;if (nm.equals("困難").private void initMenuBegin()/添加開始子菜單點擊事件好快捷鍵JMenuItem mI = new JMenuItem("新游戲(N)").; mI0.setMnemonic(N); .mI0.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)menuNewClick(););mI1,mI2.m0.add(mI0);.private void initMenuLevel()/添加難度選擇子菜單項并調(diào)用點擊事件JRadioButtonMenuItem mi = new JRadioButtonMenuItem("困難").; for (int i = 0; i < 3; i+) mii.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JRadioButtonMenuItem mi = (JRadioButtonMenuItem)e.getSource(); menuLevelClick(mi.getText(););.public void initMenuBackground()/添加文件選擇點擊事件.File list = bkg.listFiles();int j = 0;for (int i = 0; i < list.length; i+)if (!listi.isFile() | listi.isHidden()continue;mi = new JRadioButtonMenuItem(listi.getName();mi.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e).private void initMenuAbout()/關(guān)于菜單設(shè)置JMenuItem mI = new JMenuItem("幫助(H)"),new JMenuItem("關(guān)于(A)").mI0.addActionListener(new ActionListener().public void updateMenuBegin()/圖片預(yù)覽點擊事件設(shè)置更新if (!update)m0.remove(2);return;JMenuItem mi = new JMenuItem("圖片預(yù)覽(S)");mi.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)menuShowClick(););.2. 建立CardFrame首頁說明類 首頁說明類繼承于首頁菜單類,并加以完善,并且設(shè)置了聚集事件,以完成暫停和繼續(xù)完成,最后定義聚焦事件為無限次。下面列出該類的說明結(jié)構(gòu)和一些重要的方法代碼:(省略非關(guān)鍵代碼,可在文末源代碼查看)public abstract class CardFrame extends MenuFrame/繼承于首頁菜單類,并加以完善.public CardFrame()/設(shè)置首頁提示標(biāo)簽.JLabel label;label = new JLabel("請輸入你的圖片到");label.setBounds(10, 15, 190, 30);.JButton button = new JButton("繼 續(xù)");button.addActionListener(new ActionListener()/設(shè)置聚集事件,以完成暫停和繼續(xù)public void actionPerformed(ActionEvent e)FrameGetFocus(););panel1.add(button, BorderLayout.CENTER);con.add(panel0, "游戲");con.add(panel1, "暫停");card.show(con, "游戲");this.addWindowListener(new WindowAdapter()public void windowDeactivated(WindowEvent e)FrameLostFocus(););protected void nextCard()/完成無限次聚焦事件card.next(con);protected abstract void FrameLostFocus();protected abstract void FrameGetFocus();3. 建立ShowImage目標(biāo)圖顯示類 目標(biāo)圖片顯示類主要調(diào)用前面選擇的目標(biāo)圖片,并且新建標(biāo)簽顯示出來。public class ShowImage extends JFrame/調(diào)用前面選擇的目標(biāo)圖片,新建標(biāo)簽顯示出來public ShowImage(String fn)super("預(yù)覽");Container c = getContentPane();c.setLayout(new FlowLayout();String path = Arg.path + "/" + fn;ImageIcon image = new ImageIcon(path);c.add(new JLabel(image);setDefaultCloseOperation(HIDE_ON_CLOSE);setSize(image.getIconWidth()+10, image.getIconHeight()+30);setVisible(true);4. 建立Grades分?jǐn)?shù)記錄類分?jǐn)?shù)紀(jì)錄類實現(xiàn)了以下功能:首先用Data來新建數(shù)組,然后構(gòu)造方法,用于后面接收前面穿過來的難度,接著新建文檔用于存放記錄,并且初始化成績排名讀取文件現(xiàn)有的記錄,然后判斷該難度下游戲結(jié)束后,時間和步數(shù)是否最少,是否打破紀(jì)錄,接著顯示更新后的排名,最后調(diào)用顯示現(xiàn)有記錄下面列出該類的存儲顯示結(jié)構(gòu)和一些重要的方法代碼:(省略非關(guān)鍵代碼,可在文末源代碼查看)class Data/用Data來新建數(shù)組public String name;public int time;public int step;public class Gradesprivate Puzzle app;private Data data = .;public Grades(Puzzle m)/構(gòu)造方法,用于后面接收前面穿過來的難度app = m;private void creatData()/新建文檔用于存放記錄,并且初始化成績排名tryFile file = new File(Arg.rc);if (file.exists()return;file.createNewFile();PrintStream fout = new PrintStream(Arg.rc); .fout.close();catch (Exception e).private void readData()/讀取文件現(xiàn)有的記錄tryFile file = new File(Arg.rc);Scanner cin = new Scanner(file);data0.name = cin.next();.catch (Exception e)JOptionPane.showMessageDialog(null, Arg.rc + " cant read!");public void set(int t, int s)/用于改難度下游戲結(jié)束后,時間和步數(shù)是否最少,是否打破紀(jì)錄int type = app.getTypee();creatData();readData();if (t > datatype.time | (t = datatype.time && s >= datatype.step)return;datatype.name = JOptionPane.showInputDialog(null,"你打破了記錄!n請輸入你的名字。");try/顯示更新后的排名PrintStream f = new PrintStream(Arg.rc);f.printf("%s %d %dn", data0.name, data0.time, data0.step);.catch (Exception e).show();public void show()/調(diào)用顯示現(xiàn)有記錄trycreatData();readData();.JOptionPane.showMessageDialog(null, title+h+n+e);catch (Exception e).5.建立split原圖劃分類移動點擊事件類 原圖花分類里,首先按照難度不同,根據(jù)不同的尺寸進(jìn)行原圖劃分判斷如果沒被劃分過,則對圖案劃分并返回,接著新建圖片文件夾,并返回已建立,最后引用選中的圖片文件夾里的圖片,并且根據(jù)難度不同,對圖片進(jìn)行劃分,并且寫入到圖片數(shù)組 BufferedImage中去。public class Split/建立劃分類,按照難度不同,根據(jù)不同的尺寸進(jìn)行原圖劃分public static final int HARD = 0;public static final int NORMAL = 1;public static final int EASY = 2;public static final String pvo = "png"public static final int level = 100, 160, 200;.public static Split get()/判斷如果沒被劃分過,則對圖案劃分并返回.public boolean set(String fn)/新建圖片文件夾,并返回已建立filename = fn;path = Arg.path + "/" + filename;File file = new File(path);return file.exists();public BufferedImage divid(int type)/引用選中的圖片文件夾里的圖片,并且根據(jù)難度不同,對圖片進(jìn)行劃分,并且寫入到圖片數(shù)組 BufferedImage中去。tryBufferedImage image = ImageIO.read(new File(path);int len = leveltype;int cal = image.getWidth() / len;int row = image.getHeight() / len;BufferedImage subimage = new BufferedImagerowcal;for (int i = 0; i < row; i+)for (int j = 0; j < cal; j+)subimageij = image.getSubimage(j*len, i*len, len, len);return subimage;.6.建立ButtonClick拼圖移動點擊事件類 ButtonClick拼圖移動點擊事件類先將按鈕點擊事件鏈接接口,然后判斷點擊的非空按鈕周圍是否為空,如果為空就先把該非空按鈕設(shè)置圖案為空,然后將空白的按鈕設(shè)置為剛才的圖案,并且判斷是否成功。public class ButtonClick implements ActionListener/按鈕點擊事件鏈接接口private JButton button;private point pint;private int row;private int cal;private int matrix;private GameOver gOver;private boolean end;public ButtonClick(JButton b, point p, int m, int r, int c, GameOver g) button = b;pint = p;matrix = m;row = r;cal = c;gOver = g;end = false;public void actionPerformed(ActionEvent e)/判斷點擊的非空按鈕周圍是否為空,如果為空就先把該非空按鈕設(shè)置圖案為空if (end | !pint.neighbor(row, cal) return;int r = pint.getRow();int c = pint.getCal();buttonrc.setIcon(buttonrowcal.getIcon();buttonrowcal.setIcon(null);pint.set(row, cal);int t = matrixrc;matrixrc = matrixrowcal;matrixrowcal = t;end = gOver.judge();7.建立Gameover判斷游戲結(jié)束類public class GameOver/引入游戲結(jié)束標(biāo)志,暫停標(biāo)志,和圖片矩陣等private boolean gameOver;private boolean stop;private int matrix; .public GameOver (Puzzle frm)/構(gòu)造方法Main = frm;public void start(int m)/開始方法,對數(shù)據(jù)初始化gameOver = false;matrix = m;step = 0;Date d = new Date();now = d.getTime();stop = false;countTime = 0;public boolean judge()/比對原來的拼圖,判斷現(xiàn)在的拼圖是否與目標(biāo)圖案一樣,一樣則返回結(jié)束標(biāo)志if (gameOver)return true;step+;int c = 1;for (int i = 0; i < matrix.length; i+)for (int j = 0; j < matrixi.length; j+)if (matrixij != (c+)return false;.return (gameOver = true);public void pause()/暫停就停止計時Date d = new Date();if (stop)now = d.getTime();else countTime += d.getTime() - now;stop = !stop;public int getStep()/返回耗費步數(shù)return step;public long getTime()/返回耗費時間return countTime / 1000;8.建立Puzzle拼圖游戲主類 拼圖游戲主類繼承于首頁說明類,首先利用構(gòu)造方法,用于顯示拼圖界面,接著調(diào)用以下不同方法:調(diào)用游戲開始方法、調(diào)用游戲結(jié)束方法,并且顯示時間和步數(shù)、調(diào)用失去焦點方法,然后暫停游戲、調(diào)用獲得焦點方法,然后繼續(xù)游戲。接著調(diào)用以下點擊事件:選擇圖片點擊事件、并且調(diào)用顯示拼圖界面、記錄顯示點擊事件,顯示當(dāng)前記錄、目標(biāo)圖片顯示點擊事件,顯示目標(biāo)圖片標(biāo)簽、退出游戲點擊事件、幫助點擊事件、版本信息點擊事件,并顯示。最后建立拼圖主程序?qū)ο筮\行。 public class Puzzle extends CardFrame/繼承于首頁說明類.public Puzzle()/構(gòu)造方法,用于顯示拼圖界面start = false;this.setSize(200 + fWidth, 200 + fHeight);this.setVisible(true);private void startGame()/調(diào)用游戲開始方法if (start)return;start = true;updateMenuBegin();public void endGame()/調(diào)用游戲結(jié)束方法,并且顯示時間和步數(shù)updateMenuBegin();initMenuBackground();start = false;JOptionPane.showMessageDialog(null,"時間:" + gOver.getTime() + "sn" +"步數(shù):" + gOver.getStep();Grades g = new Grades(this);g.set(int)gOver.getTime(), gOver.getStep();protected void FrameLostFocus()/調(diào)用失去焦點方法,然后暫停游戲。if (start && index)nextCard();if (gOver != null) gOver.pause();index = false;protected void FrameGetFocus()/調(diào)用獲得焦點方法,然后激素游戲。nextCard();if (gOver != null) gOver.pause();index = true;public void menuNewClick()/選擇圖片點擊事件,并且調(diào)用顯示拼圖界面Split sp = Split.get();BufferedImage image;if (!sp.set(getFilename() | (image = sp.divid(getTypee() = null)JOptionPane.showMessageDialog(null, "圖片不存在!n請重新選擇"); startGame();.Matrix matrix = new Matrix(button, panel0, len, gOver);matrix.init(image);this.setSize(cal * len + fWidth, row * len + fHeight);this.setVisible(true);public void menuGradesClick()/記錄顯示點擊事件顯示當(dāng)前記錄Grades g = new Grades(this);g.show();public void menuShowClick()/目標(biāo)圖片顯示點擊事件,顯示目標(biāo)圖片標(biāo)簽new ShowImage(getFilename();public void menuExitClick()/退出游戲點擊事件System.exit(0);public void menuHelpClick()/幫助點擊事件.JOptionPane.showMessageDialog(null, help0 + help1);public void menuAboutClick()/版本信息點擊事件,并顯示.JOptionPane.showMessageDialog(null, version + author + email);public static void main(String argv)/建立拼圖主程序?qū)ο驪uzzle app = new Puzzle();4、 調(diào)試分析1.程序的運行將文件Arg.java,ButtonClick.java,CardFrame.java,GameOver.java,Grades.java,Matrix.java,MenuFrame.java,point.java,Puzzle.java,ShowImage.java,Split.java及background保存到同一個文件夾中。利用javac命令對文件進(jìn)行編譯,使用命令如下:Javac Puzzle.java,之后,利用java命令執(zhí)行程序,使用命令如下:Java Puzzle,便得到拼圖程序運行界面?;蛘咧苯釉贓clipse上運行。2.游戲測試 (1)游戲測試中第一個難題就是上傳到游戲中目標(biāo)圖片不能進(jìn)行很好的劃分,后來在計算了圖片的大小后,設(shè)置劃分大小,解決了這一個問題,但是只能適配這一個分辨率下的圖片,以后可以增加分類劃分。(2)本程序的模塊劃分很合理,思路很清晰,布局簡介,盡可能的簡化操作。各類之間的繼承和相互調(diào)用關(guān)系,使得程序各類利用率很高,幾乎沒有重復(fù)之處,可視性和可調(diào)性更多。并且界面操作簡介方便。(3)本程序的主程序同功能程序的銜接十分自然,算法效率高。(4)本實習(xí)作業(yè)采用JAVA圖形界面游戲的一般設(shè)計方法,將程序劃分為八個主要類:使得設(shè)計時思路清晰,實現(xiàn)時調(diào)試順利,各類具有較好的可重用性,我也確實得到了一次良好的程序設(shè)計訓(xùn)練。5、 用戶手冊1.游戲三個狀態(tài)1)游戲初始狀態(tài) 當(dāng)游戲剛運行時,會出現(xiàn)如下界面,本游戲中已經(jīng)存在了三張圖片,如過游戲者想拼自己感興趣的圖片的話,可以將自己的圖片放入到“background”(背景圖片)文件夾中,再進(jìn)行“選擇”->“背景圖片”中選擇你自己的圖片,然后選擇“等級”->“困難”或“普通”或“簡單”,進(jìn)行等級選擇,最后選擇“開始”->“新游戲”就可以拼自己想拼的圖了。初始窗口如圖6所示: 圖6 游戲初始窗口2)游戲進(jìn)行狀態(tài) 當(dāng)游戲者選擇好圖片與等級后,就可以進(jìn)行拼圖游戲了及進(jìn)入游戲的進(jìn)行圖 圖7 游戲進(jìn)行狀態(tài)態(tài)。如圖7所示:3)游戲暫停狀態(tài) 當(dāng)游戲者,在游戲過程中半途暫停游戲的話,將出現(xiàn)如圖8所示的游戲暫停狀態(tài)的界面。當(dāng)游戲者又想繼續(xù)游戲時,直接單擊界面上的“繼續(xù)”字樣,就可以繼續(xù)游戲了。 圖8 游戲暫停狀態(tài)2. 游戲菜單選項1)“開始”菜單。包括了,“新游戲”、“成績記錄”、“圖片預(yù)覽”、“退出游戲”。如圖9所示。 “新游戲”:單擊可以開始游戲,如圖10所示游戲進(jìn)行狀態(tài)。 “成績記錄”:單擊可以查看游戲者的游戲最佳成績記錄。如圖8所示。初始的成績記錄。 “圖片預(yù)覽”:在游戲過程中可以單擊預(yù)覽圖片,對照著拼,如圖11所示。 “退出游戲”:游戲者要結(jié)束游戲可直接單擊退出游戲。 圖9 游戲開始菜單 圖10 游戲最佳成績記錄 圖11 目標(biāo)圖片預(yù)覽2)“選擇”菜單。包括了,“等級”、“背景圖片”。如圖12所示。當(dāng)運行 圖12 選擇菜單游戲時,如果沒有把“background”這個文件夾放入主程序的目錄下,在運行游戲選擇背景圖片時,將沒有圖片可選,這是可以按照“初始狀態(tài)”界面上的提示進(jìn)行操作。若正常的有“background”在主程序路徑下的話,運行游戲選擇背景圖片的話,就可以選擇圖片了,界面如圖13所示。 “等級”:在游戲者開始游戲之前,要進(jìn)行游戲等級選擇,共有困難、普通、簡單三種選擇。其圖片的切割塊數(shù),會根據(jù)選擇的等級不同,而有所不同。 “背景圖片”:這里保存了所要拼的所有圖片。在游戲前要進(jìn)行選擇。 圖13 選擇菜單 3)“關(guān)于”菜單。包括了“幫助”、“關(guān)于”兩個下拉菜單。 “幫助”:在游戲時,可以單擊查看游戲的簡單規(guī)則。 “關(guān)于”:可查看該游戲的版本、作者、與作者的Email的相關(guān)信息 3.游戲提示框1)提示信息窗口 當(dāng)游戲者運行游戲時,如果沒有把“background”這個文件夾放入主程序的目錄下,在運行游戲選擇背景圖片時,將沒有圖片可選,若此時直接“開始”->“新游戲”,將會彈出如下提示信息框。界面如圖14所示。圖14 提示信息框2)拼圖成功界面,若選擇abc.jpg圖片拼圖時,若拼圖成功,界面如圖15所示。圖15 拼圖成功3)成績記錄輸入框 當(dāng)游戲者完成拼圖游戲后,將出現(xiàn)一個成績記錄框(“輸入”框),輸入游戲者的姓名。如圖16所示。輸入后單擊確定按鈕,將彈出總的成績記錄框。 圖16 輸入名字 如圖17所示: 圖17 成績記錄框6、 測試結(jié)果(1) 易破紀(jì)錄測試結(jié)果如圖18,輸入記錄如圖19,最終成績記錄如圖20:圖片18 易難度破紀(jì)錄圖圖片19輸入易記錄圖圖片20最終成績記錄圖(2)普通破紀(jì)錄測試結(jié)果如圖21,輸入記錄如圖22,最終成績記錄如圖23:圖片21 普通破紀(jì)錄測試結(jié)果圖圖片22 普通輸入紀(jì)錄圖圖片23 最終成績記錄圖(3)困難游戲過程和顯示圖片如圖24:圖24 困難難度游戲進(jìn)行圖7、 附錄(源碼)Arg.javapublic interface Argpublic static final String path = "background"public static final String rc = "Game.rc"ButtonClick.javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JOptionPane;public class ButtonClick implements ActionListenerprivate JButton button;private point pint;private int row;private int cal;private int matrix;private GameOver gOver;private boolean end;public ButtonClick(JButton b, point p, int m, int r, int c, GameOver g)button = b;pint = p;matrix = m;row = r;cal = c;gOver = g;end = false;public void actionPerformed(ActionEvent e)if (end | !pint.neighbor(row, cal)return;int r = pint.getRow();int c = pint.getCal();buttonrc.setIcon(buttonrowcal.getIcon();buttonrowcal.setIcon(null);pint.set(row, cal);int t = matrixrc;matrixrc = matrixrowcal;matrixrowcal = t;end = gOver.judge();CardFrame.javaimport java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowAdapter;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;public abstract class CardFrame extends MenuFrameprivate CardLayout card;private Container con;protected JPanel panel = new JPanel(), new JPanel();public CardFrame()con = this.getContentPane();card = new CardLayout();con.setLayout(card);panel0.setLayout(null);JLabel label;label = new JLabel("請輸入你的圖片到");label.setBounds(10, 15, 190, 30);panel0.add(label);label = new JLabel(""背景圖片"文件夾。n");label.setBounds(10, 30, 190, 45);panel0.add(label);label = new JLabel("單擊"選擇->背景圖片"");label.setBounds(10, 50, 190, 65);panel0.add(label);label = new JLabel("選擇圖片。n");label.setBounds(10, 65, 190, 80);panel0.add(label);label = new JLabel("接著, 單擊 "開始->新游戲" 可以");label.setBounds(10, 85, 190, 100);panel0.add(label);label = new JLabel("開始游戲。");label.setBounds(10, 100, 190, 115);panel0.add(label);panel1.setLayout(new BorderLayout();JButton button = new JButton("繼 續(xù)");button.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)FrameGetFocus(););panel1.add(button, BorderLayout.CENTER);con.add(panel0, "游戲");con.add(panel1, "暫停");card.show(con, "游戲");this.addWindowListener(new WindowAdapter()public void windowDeactivated(WindowEvent e)FrameLostFocus(););protected void nextCard()card.next(con);protected abstract void FrameLostFocus();protected abstract void FrameGetFocus();GameOver.javaimport java.util.Date;public class GameOverprivate boolean

注意事項

本文(JAVA拼圖游戲課程設(shè)計.doc)為本站會員(xin****828)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




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

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

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


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