评论

收藏

[Java] java仿QQ连连看游戏

编程语言 编程语言 发布于:2021-10-06 11:11 | 阅读数:210 | 评论:0

这篇文章主要为大家详细介绍了java仿QQ连连看游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
关于这个项目,真的是花了很多心思在上面,从开始构思,到最后完成,真的是花了整整一个月。大概是11月初开始学java swing的时候有的想法,然后开始构思整个思路,相关算法讨论以及调试。
最开始先对连连看基础算法进行测试,就用一般的二维数组,然后就用控制台输入两个点的坐标进行删除,这一步就调试了我整整一个星期,基础算法搞完了 终于开始设计界面了,反正也不知道那时候花了多长时间才把界面给设计好,反正还设计的特别丑(至今也如此)。
功能如下:
运行程序后有背景音乐
菜单栏有:重新开始,提示,炸弹,排行榜等功能。
还有关闭背景音乐,设置游戏等级,查看游戏帮助这几项功能
游戏有得分以及倒计时功能。
其实这游戏做的就是仿qq连连看,连图片和背景声音都是来自qq连连看。
本篇博客不是教程,但提供源码,这只是写给自己看,说说自己关于写这个游戏的领悟而已。
由于是刚开始接触java gui就开始动手写游戏,结果好多东西都在走弯路,后来才知道明明可以用awt swt 等等插件进行拖拽式编程,我还傻傻的一个代码一个代码的敲出程序界面,还一个像素一个像素的调试来使得整体界面美观, 不过总体来说现在多走点弯路,以后就少走点弯路了嘛,教训总是要吸取的,只有把常见的bug都经历了一遍,以后开发才会有意的绕开那些bug。
最让人头疼的就是java线程那一块,之前一直没接触过这种东西,学校的课又迟迟没上到那,最终还是得花个时间好好的看了下线程,由于开发那个游戏的时候我还没开始写博客,因此也没将那个项目的细节写进来。看来以后开发项目还是要吧细节以及思路都记下来,免得以后工作了自己都不知道自己写的什么意思。
程序运行界面如下:
DSC0000.jpg

DSC0001.jpg

仿qq连连看代码比较多,不方便帖上来,于是我打包发送然后留下传送门去领取。
传送门如下: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){ //构造函数
 
 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("   分数");
// content = new jlabel("这是显示排行内容的窗口");
 
 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[] = {"名次","姓名","分数"};
 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] = "分数";
 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("关闭");
 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();
  }
  }
 }
 }
 
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家
原文链接:https://blog.csdn.net/chance2015/article/details/50453246

关注下面的标签,发现更多相似文章