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

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

功能如下:

运行程序后有背景音乐

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

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

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

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

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

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

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

程序运行界面如下:

仿QQ连连看代码比较多,不方便帖上来,于是我打包发送然后留下传送门去领取。

部分代码:

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

/**

*

Title: Kyodai

*

Description: 连连看JAVA版

*

Copyright: Copyright (c) 2004

*

Company: www.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));

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();

}

}

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

qq连连看java版_java仿QQ连连看游戏相关推荐

  1. 发现一个优秀的Java版国人仿曹操传游戏

    终于又看见有国人用Java写J2ME以外的游戏了,先让偶们一起为作者的开创精神而叫声好吧! 该作者博客如下:http://www.cnblogs.com/egria ,http://salin.jav ...

  2. 发现一个优秀的Java版国人仿曹操传游戏 1

    终于又看见有国人用Java写J2ME以外的游戏了,先让偶们一起为作者的开创精神而叫声好吧! 该作者博客如下:http://www.cnblogs.com/egria,http://salin.java ...

  3. 像素鸟java版_JAVA 像素鸟小游戏源码(支持俩人一起玩)

    [实例简介] [实例截图] 双人 像素鸟如下: [核心代码] package Flappybirid_1; import java.awt.image.BufferedImage; import ja ...

  4. Java+Swing+mysql仿QQ聊天工具

    Java+Swing+mysql仿QQ聊天工具 一.系统介绍 二.功能展示 1.用户登陆 2.好友列表 3.好友聊天 4.服务器日志 三.系统实现 四.其它 1.其他系统实现 2.获取源码 一.系统介 ...

  5. java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)

    既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后,就想做点什么项目锻炼下自己的技能.凑巧的是,我一个同样学java的朋友在做一个仿qq的项目,不过他做的实在太丑了. 然后他想让我也 ...

  6. java如何开发游戏大厅_java仿qq游戏大厅的设计与实现

    摘要:由于生活节奏的越来越快,人们越来越少的外出游玩.现在的人们为了生活,为了工作,为了家庭无时无刻不在紧张的环境中度过.而一些简单的小游戏则成为了人们放松的主要方式,本文用java语言开发了客户端/ ...

  7. java qq 源代码_Java 仿QQ聊天源代码

    Java 仿QQ聊天源代码介绍,本源码实现了群聊和私聊. 截图如下: 代码文件清单如下: Client.java.ClientThread.java.Server.java.ServerThread. ...

  8. java 浏览器 qq_手机QQ浏览器java版正式发布:支持www页面

    8月25日,腾迅发布了java平台的手机QQ浏览器1.1 Build0065.该版本在UI上继承了手机QQ浏览器一贯简洁大方的设计风格,能够支持打开wap和www页面,并支持一键登录QQ农场和牧场.接 ...

  9. java仿qq群聊_[转载]仿QQ聊天室群聊的练习心得

    javase的学习即将告一段落,作为最后的一个项目练习,仿聊天室的程序编写让我很是头疼了一阵子.说起来还是自己java基础不牢的缘故导致的,虽然整体框架都已经很清晰了但是实际编写过程中却依然磕磕绊绊, ...

  10. qq邮箱格式的Java代码_Java实现QQ邮件发送

    首先我们需要两个jar包,点击下面即可下载这两个包: 我们这里采用QQ邮箱发送邮件为例,代码如下: package ddd; import java.util.Properties; import j ...

最新文章

  1. 958毕业,苦学Java,竟被二本毕业生吊打!网友:确实厉害!
  2. FAIR 训练 AI 玩拳击,效果堪比真人比赛,试探+周旋+爆头
  3. Nature:盐粒大小的相机,可以拍出清晰彩色照片,未来或可应用到手机
  4. 人造卫星为什么会绕着地球转而不是停在太空中或者越飞越远.掉进地球的卫星为什么烧不完....
  5. zlib-1.2.11手册
  6. 五千的手机和两三千的手机使用起来有什么不一样?有必要买贵的吗?
  7. 波士顿动力叒来秀:机器狗玩“抖音”,步伐风骚,姿态妖娆
  8. python拦截tcp数据包_发送低级原始tcp数据包python
  9. 工具开发:勿以善小而不为
  10. vue-cli 可视化工具
  11. VLAN Trunk
  12. 简单的方法破解百度网盘上带密码的学习视频资源
  13. 四十八种微信公众号加人方法
  14. Excel如何将多个工作簿数据合并到一起
  15. jupyter连接失败
  16. 2021毓英中学高考成绩查询,泉州知名中学2020高考成绩喜报龙虎榜
  17. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型
  18. 如何实现团队高效协作?
  19. Trizol法提取RNA实验步骤
  20. mongoose 更新保存数据的时候自动插入__v

热门文章

  1. 关于驻波比(VSWR)的详细解析
  2. Centos7配置软RAID+LVM
  3. html新年倒计时特效,js实现新年倒计时效果
  4. mysql 3306端口入侵_3306端口入侵流程
  5. matlab查看剪贴板图片,怎么把图片,txt文档复制到剪贴板中?
  6. 计算机机房岗位管理制度,机房管理规定-机房管理制度.doc
  7. 我们从UNIX之父丹尼斯身上学到了什么
  8. 软件工程——软件维护总结
  9. 软件工程(软件维护)
  10. 项目管理工具_Project 基础教程