java仿QQ连连看游戏

网友投稿 244 2023-01-15


java仿QQ连连看游戏

关于这个项目,真的是花了很多心思在上面,从开始构思,到最后完成,真的是花了整整一个月。大概是11月初开始学java swing的时候有的想法,然后开始构思整个思路,相关算法讨论以及调试。

最开始先对连连看基础算法进行测试,就用一般的二维数组,然后就用控制台输入两个点的坐标进行删除,这一步就调试了我整整一个星期,基础算法搞完了 终于开始设计界面了,反正也不知道那时候花了多长时间才把界面给设计好,反正还设计的特别丑(至今也如此)。

功能如下:

运行程序后有背景音乐

菜单栏有:重新开始,提示,炸弹,排行榜等功能。

还有关闭背景音乐,设置游戏等级,查看游戏帮助这几项功能

游戏有得分以及倒计时功能。

其实这游戏做的就是仿qq连连看,连图片和背景声音http://都是来自qq连连看。

本篇博客不是教程,但提供源码,这只是写给自己看,说说自己关于写这个游戏的领悟而已。

由于是刚开始接触java GUI就开始动手写游戏,结果好多东西都在走弯路,后来才知道明明可以用awt swt 等等插件进行拖拽式编程,我还傻傻的一个代码一个代码的敲出程序界面,还一个像素一个像素的调试来使得整体界面美观, 不过总体来说现在多走点弯路,以后就少走点弯路了嘛,教训总是要吸取的,只有把常见的bug都经历了一遍,以后开发才会有意的绕开那些bug。

最让人头疼的就是java线程那一块,之前一直没接触过这种东西,学校的课又迟迟没上到那,最终还是得花个时间好好的看了下线程,由于开发那个游戏的时候我还没开始写博客,因此也没将那个项目的细节写进来。看来以后开发项目还是要吧细节以及思路都记下来,免得以后工作了自己都不知道自己写的什么意思。

程序运行界面如下:

仿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.NORTHwkonTlBV);

// }

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.*;

/**

*

Title: Kyodai

*

Description: 连连看JAVA版

*

Copyright: Copyright (c) 2004

*

Company: wuhantech.com

* @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));

thihttp://s.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();

}

}

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:研发管理平台和产品区别(研发平台作用)
下一篇:Java生成随机时间的简单随机算法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~