麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

java仿QQ連連看游戲

2024-07-14 08:43:29
字體:
供稿:網(wǎng)友

關(guān)于這個(gè)項(xiàng)目,真的是花了很多心思在上面,從開始構(gòu)思,到最后完成,真的是花了整整一個(gè)月。大概是11月初開始學(xué)java swing的時(shí)候有的想法,然后開始構(gòu)思整個(gè)思路,相關(guān)算法討論以及調(diào)試。

最開始先對(duì)連連看基礎(chǔ)算法進(jìn)行測試,就用一般的二維數(shù)組,然后就用控制臺(tái)輸入兩個(gè)點(diǎn)的坐標(biāo)進(jìn)行刪除,這一步就調(diào)試了我整整一個(gè)星期,基礎(chǔ)算法搞完了 終于開始設(shè)計(jì)界面了,反正也不知道那時(shí)候花了多長時(shí)間才把界面給設(shè)計(jì)好,反正還設(shè)計(jì)的特別丑(至今也如此)。

功能如下:

運(yùn)行程序后有背景音樂 
菜單欄有:重新開始,提示,炸彈,排行榜等功能。 
還有關(guān)閉背景音樂,設(shè)置游戲等級(jí),查看游戲幫助這幾項(xiàng)功能 
游戲有得分以及倒計(jì)時(shí)功能。

其實(shí)這游戲做的就是仿qq連連看,連圖片和背景聲音都是來自qq連連看。

本篇博客不是教程,但提供源碼,這只是寫給自己看,說說自己關(guān)于寫這個(gè)游戲的領(lǐng)悟而已。

由于是剛開始接觸java GUI就開始動(dòng)手寫游戲,結(jié)果好多東西都在走彎路,后來才知道明明可以用awt swt 等等插件進(jìn)行拖拽式編程,我還傻傻的一個(gè)代碼一個(gè)代碼的敲出程序界面,還一個(gè)像素一個(gè)像素的調(diào)試來使得整體界面美觀, 不過總體來說現(xiàn)在多走點(diǎn)彎路,以后就少走點(diǎn)彎路了嘛,教訓(xùn)總是要吸取的,只有把常見的bug都經(jīng)歷了一遍,以后開發(fā)才會(huì)有意的繞開那些bug。

最讓人頭疼的就是java線程那一塊,之前一直沒接觸過這種東西,學(xué)校的課又遲遲沒上到那,最終還是得花個(gè)時(shí)間好好的看了下線程,由于開發(fā)那個(gè)游戲的時(shí)候我還沒開始寫博客,因此也沒將那個(gè)項(xiàng)目的細(xì)節(jié)寫進(jìn)來??磥硪院箝_發(fā)項(xiàng)目還是要吧細(xì)節(jié)以及思路都記下來,免得以后工作了自己都不知道自己寫的什么意思。

程序運(yùn)行界面如下:

java,QQ連連看,游戲

java,QQ連連看,游戲

仿QQ連連看代碼比較多,不方便帖上來,于是我打包發(fā)送然后留下傳送門去領(lǐng)取。

傳送門如下:Java編寫連連看

部分代碼:

RankingBar.java

import java.awt.*;import javax.swing.border.*;import java.net.*;import javax.swing.text.html.*;import javax.swing.event.*;import javax.swing.*;import java.awt.event.*;public class RankingBar extends JFrame{ JButton confirm,cancel,test; JPanel top,center,bottom; JLabel name,score,content; JTable table; Object t[][]; String strname; int uscore; RankingBar(String strname,int uscore){ //構(gòu)造函數(shù)  this.strname = strname; this.uscore = uscore; top = new JPanel(); center = new JPanel(); bottom = new JPanel();  confirm = new JButton("確定"); cancel = new JButton("取消");// // name = new JLabel("      姓名");// score = new JLabel("   分?jǐn)?shù)");// content = new JLabel("這是顯示排行內(nèi)容的窗口");  table = new JTable(10,2);  init_windows(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation( (int) (screenSize.width - 420) / 2,     (int) (screenSize.height - 360) / 2); this.setResizable(false); this.setSize(new Dimension(250, 250)); this.setTitle("排行榜");  setVisible(true); this.setResizable(false);//禁止用戶改變窗體大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void init_windows() {  // setLayout(new BorderLayout()); //上部初始化// top_init();  //中間初始化 center_init();  //底部初始化 bottom_init();   }private void center_init() { //初始化中間  JTable table; Object t[][]; Object sname[] = {"名次","姓名","分?jǐn)?shù)"}; int cnt = 0; String s[] = {"1","2","3","4","5","6","7","8","9","10"}; t = new Object[11][3];  t[0][0] = "排名"; t[0][1] = "姓名"; t[0][2] = "分?jǐn)?shù)"; for(int i = 1;i < 11;i++){ for(int j = 0;j < 3;j++){ if(j == 1){ t[i][j] = "null"; } else if(j == 0){ t[i][j] = s[cnt++]; } else{ t[i][j] = "0"; } } } t[1][1] = strname; t[1][2] = "" + uscore + ""; table = new JTable(t,sname); add(table,BorderLayout.CENTER); table.enable(false); }//private void top_init() { //初始化上端// // top.setLayout(new GridLayout());// top.add(name);// top.add(score);// add(top,BorderLayout.NORTH);// }private void bottom_init() { //底部初始化  bottom.add(confirm); confirm.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent e) {   setVisible(false);  }  }); bottom.add(cancel); cancel.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent e) {   System.exit(0);  }  }); add(bottom,BorderLayout.SOUTH);  }//public static void main(String arg[]){//// new RankingBar("吳承潛",100);// } }

help.java

import java.net.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import javax.swing.text.html.*;/** * <p>Title: Kyodai</p> * <p>Description: 連連看JAVA版</p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: www.wuhantech.com</p> * @author ZhangJian * @version 1.0 */public class Help extends JDialog implements HyperlinkListener { JScrollPane ScrollPane = new JScrollPane(); JEditorPane HelpPane = new JEditorPane(); Border border1; JPanel Panel1 = new JPanel(); JButton Close = new JButton(); Border border2; public Help(JFrame frame) throws HeadlessException { super(frame, true); try {  jbInit(); } catch (Exception e) {  e.printStackTrace(); } Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation( (int) (screenSize.width - 420) / 2,      (int) (screenSize.height - 360) / 2); this.setResizable(false); this.setSize(new Dimension(420, 360)); this.setTitle("游戲幫助"); setVisible(true); this.setResizable(false);//禁止用戶改變窗體大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }// public static void main(String args[]){// new Help(null);// }  private void jbInit() throws Exception { border2 = BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.lightGray,1),BorderFactory.createEmptyBorder(2,10,2,10)); this.setSize(new Dimension(420, 360)); this.setTitle("Help"); border1 = BorderFactory.createEmptyBorder(); URLClassLoader urlLoader = (URLClassLoader)this.getClass().getClassLoader(); URL url = null; url = urlLoader.findResource("help.htm"); HelpPane.setPage(url); HelpPane.setEditable(false); HelpPane.addHyperlinkListener(this); ScrollPane.setHorizontalScrollBarPolicy(JScrollPane.           HORIZONTAL_SCROLLBAR_NEVER); ScrollPane.setVerticalScrollBarPolicy(JScrollPane.           VERTICAL_SCROLLBAR_AS_NEEDED); ScrollPane.setBorder(border1); Close.setBackground(Color.white); Close.setBorder(border2); Close.setActionCommand("jButton1"); Close.setText("關(guān)閉"); Close.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent e) {  setVisible(false);  } }); Panel1.setBackground(Color.white); this.getContentPane().add(ScrollPane, BorderLayout.CENTER); this.getContentPane().add(Panel1, BorderLayout.SOUTH); ScrollPane.getViewport().add(HelpPane, null); Panel1.add(Close, null); } public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {  JEditorPane pane = (JEditorPane) e.getSource();  if (e instanceof HTMLFrameHyperlinkEvent) {  HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent) e;  HTMLDocument doc = (HTMLDocument) pane.getDocument();  doc.processHTMLFrameHyperlinkEvent(evt);  }  else {  try {   pane.setPage(e.getURL());  }  catch (Throwable t) {   t.printStackTrace();  }  } } }}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一级电影免费看 | 天天透天天狠天天爱综合97 | 欧美一级毛片欧美一级成人毛片 | 日本在线观看视频网站 | 久久人人做 | 国产成人自拍av | 欧美日韩在线中文字幕 | 黄色免费在线网站 | 韩国19禁在线 | 日韩黄色三级视频 | 99国语露脸久久精品国产ktv | 久久人人做 | 日韩色视频 | 午色影院 | 国产免费一区二区三区网站免费 | 精品午夜久久 | 久久成人激情视频 | 日韩精品免费看 | 最污网站 | 手机av在线电影 | 国产1区2区3区中文字幕 | 国产成人精品二区 | 亚洲情视频 | 91 在线视频观看 | 香蕉久草视频 | 精国产品一区二区三区 | 午夜精品久久久久久中宇 | 舌头伸进添的我好爽高潮网站 | 国产成人精品免高潮在线观看 | 91精品国产综合久久久欧美 | 欧美精品免费一区二区三区 | 久色亚洲 | 欧美77| 在线播放亚洲 | 97风流梦电影 | 成人免费福利视频 | 日韩大片在线永久观看视频网站免费 | 黄色羞羞视频在线观看 | 一边吃奶一边摸下娇喘 | 一区二区三级视频 | 亚洲国产精品500在线观看 |