java 连连看,正在完善中……

关于《连连看》的算法研究和演示Demo 连连看曾经是一款非常受欢迎的游戏,同时它也是一款比较古老的游戏。看到这里你千万不要认为本篇文章打算讨论《连连看》的历史以及它取得的丰功伟绩。恰恰相反,在这篇文章中我们打算讨论该游戏背后的实现思想,包括它定义的游戏规则,以及游戏的实现算法。作为应用,我们还将利用Java代码实现一个通用的《连连看》算法,并使用Java Swing框架创建一个演示实例。 1《连连看》的游戏规则是如何定义的? 阅读详情

package guiGame;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class GameMain
{ 
 /**
  * @param args
  *            连连看游戏,Java版
  */
 public static void main(String[] args)
 {
//  Game game = new Game();
//  game.show();
  SwingUtilities.invokeLater(new Runnable()
  {
   @Override
   public void run()
   {    
    Game game = new Game();
    game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    game.setVisible(true);
   }});
 }
}

 

 

package guiGame;

/**游戏主界面
 * author javaalpha

 * date 2009年5月5日10:32:09
 */

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;

@SuppressWarnings("serial")
public class Game extends JFrame implements ActionListener
{
 Game()
 {
  this.initialize();
 }

 private JButton set = new JButton("设 置");
 private JButton help = new JButton("帮 助");
 private JButton about = new JButton("关 于");
 private JButton start = new JButton("开 始 游 戏");
 private JButton tip = new JButton("游 戏 提 示");
 private JButton bomb = new JButton("使 用 炸 弹");
 private JButton again = new JButton("重 新 再 来");
 private JButton exit = new JButton("退 出 游 戏");

 private void initialize()
 {
  this.setSize(780, 500); // 将窗体的大小设定为780*500
  this.setResizable(false); // 窗体不能改变大小
  this.setTitle("Java 连连看"); // 设置标题
  this.setLocationRelativeTo(null); // 设置窗口相对于指定组件的位置
  // this.initMenuBar();

  Border border = BorderFactory.createBevelBorder(BevelBorder.LOWERED,
    new Color(45, 92, 162), new Color(43, 66, 97), new Color(45,
      92, 162), new Color(84, 123, 200)); // 设置边框的颜色

  JPanel toolBar = new JPanel();// 游戏菜单区
  toolBar.setBackground(Color.white); // 设置背景颜色
  toolBar.setBorder(border); // 设置边框的样式
  toolBar.setPreferredSize(new Dimension(780, 40));// 设置大小
  toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));// 设置按钮为左对齐
  
  toolBar.add(set);// 添加设置按钮
  toolBar.add(help);// 添加帮助按钮
  toolBar.add(about);// 添加关于按钮
  
  set.addActionListener(this);// 添加设置事件
  help.addActionListener(this);// 添加帮助事件
  about.addActionListener(this);// 添加关于事件

  JPanel actionPanel = new JPanel();// 用户交互区
  actionPanel.setBackground(Color.yellow); // 设置背景颜色
  actionPanel.setBorder(border); // 设置边框的样式
  actionPanel.setPreferredSize(new Dimension(160, 410));// 设置大小
  
  actionPanel.add(start);// 添加开始游戏按钮
  actionPanel.add(tip);// 添加游戏提示按钮
  actionPanel.add(bomb);// 添加使用炸弹按钮
  actionPanel.add(again);// 添加重新再来按钮
  actionPanel.add(exit);// 添加退出游戏按钮
  
  start.addActionListener(this);// 添加开始游戏事件
  tip.addActionListener(this);// 添加游戏提示事件
  bomb.addActionListener(this);// 添加炸弹事件
  again.addActionListener(this);// 添加重新开始事件
  exit.addActionListener(this);// 添加退出游戏事件

  JPanel contentPanel = new JPanel();// 用户游戏区
  contentPanel.setBackground(Color.blue); // 设置背景颜色
  contentPanel.setBorder(border); // 设置边框的样式
  contentPanel.setLayout(new GridLayout());//设置布局样式
  contentPanel.setPreferredSize(new Dimension(620, 410));// 设置大小
  
//  contentPanel.add(new JButton("a"));
//  contentPanel.add(new JButton("a"));
//  contentPanel.add(new JButton("a"));
//  contentPanel.add(new JButton("a"));
//  contentPanel.add(new JButton("a"));
//  contentPanel.add(new JButton("a"));
//  contentPanel.add(new JButton("a"));
  

  JPanel bottomPanel = new JPanel();// 用户帮助区
  bottomPanel.setBackground(Color.white);// 设置背景颜色
  bottomPanel.setBorder(border);// 设置边框的样式
  bottomPanel.setPreferredSize(new Dimension(780, 30));// 设置大小
  bottomPanel.add(new Label("请点击开始按钮,开始游戏"));

  this.getContentPane().add(toolBar, BorderLayout.NORTH);// 添加菜单板块
  this.getContentPane().add(actionPanel, BorderLayout.EAST);// 添加右侧控制板块
  this.getContentPane().add(contentPanel, BorderLayout.CENTER);// 添加中间核心区域板块
  this.getContentPane().add(bottomPanel, BorderLayout.SOUTH);// 添加底部板块
 }

 @Override
 public void actionPerformed(ActionEvent e)
 {
  if (e.getSource() == set)// 显示设置对话框
  {

  } else if (e.getSource() == help)// 显示帮助对话框
  {

  } else if (e.getSource() == about)// 显示关于对话框
  {
   String s = "作者:javaalpha  copyright:2009-4-30";
   JOptionPane.showMessageDialog(this, s, "关于",
     JOptionPane.INFORMATION_MESSAGE);
   return;
  } else if (e.getSource() == start)// 开始游戏事件
  {

  } else if (e.getSource() == tip)// 提示事件
  {

  } else if (e.getSource() == bomb)// 炸弹事件
  {

  } else if (e.getSource() == again)// 重新开始事件
  {

  } else if (e.getSource() == exit)// 退出事件
  {
   System.exit(0);
  }

 }
}

 

简单的界面实习了,具体内容正在实现……

用Java写的连连看小游戏——步骤分析 很多人写游戏都是从连连看或者五子棋这类的简单小游戏入手的,最近我也尝试着写了一个连连看,想要再梳理一遍其中的思路。 连连看的规则 连连看要求在一定范围内找到两个特征一样并且能够通过空白的通道在两折(直角)以内相连的东西,连续点击两个东西之后消除。 通常我们会选择用图片来进行匹配,这样更直观有趣。 如何存储连连看的数据 使用二维数组进行存储,每一个数组元素对应一个位置上的图片种类。 例如我们分别用1... 阅读详情

相关推荐

基于Java的连连看游戏设计与实现(含源文件)

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于Java的连连看游戏设计与实现 毕业设计(论文)要求及原始数据(资料): 1.简述Java游戏开发现状和走向; 2.了解图形用户界面的概念; 3.熟练掌握Java的事件处理机制; 4.掌握Java小程序的工作原理和使用方法; 5.了解AWT的基本体系结构,掌握窗口的基本原理; 6. 掌握几种布局管理器的使用方法; 7. 了解Sw...

【完整】 7695

java游戏优化_用 JAVA 开发游戏连连看(之六)优化:让程序运行更稳定、更高...

之六)优化:让程序运行更稳定、更高效改善游戏的合理性到目前为止,我们的游戏基本上算是完成了,为了使程序更合理,我们还需要将整个程序从头再理一遍,看看有没有改进的地方。首先,在变量的使用上,由于很多地方会使用相同的数据,因此,将变量定义为 public static 可以减少不必要的重复定义,如颜色、使用的图片等。其次,由于 JAVA 的特性,我们可以对程序进行简单的修改(如使类从 JApplet ...

weixin_30388485的博客 203

老Java程序员花2天写了个连连看,我竟连不过我女儿,我了个去!

引言: 最近做小游戏有点上瘾,这一不小心翻到了个连连看,二话不说找到素材,就撸了起来,期间在我加入背景音乐的时候,被女儿听到了,她多次到我身边跟我说要给她玩这个游戏,不然她就捣乱,不让我写代码,讲实话我写代码正投入的时候,如果换做我老婆,我肯定一把推开,但是我女儿,只好展现我作为父亲慈祥的一面,我跟她说做完给你玩,如果连的过爸爸,就给你玩多几盘,但是现在不能,等我做完我们来比赛,她这才答应不捣乱,打断我写代码的思路,我要抓狂的,不知各位亲在你全身心投入写代码的时候,女票、媳妇捣乱你会怎么做呢?欢迎就此话题留

编程界明世隐的博客 5万+

连连看游戏的设计与实现——基于JAVA语言的小游戏

Java小游戏实现-连连看小游戏(免费源码)。说明:本篇博客主要讲述练练看游戏的设计与实现。前半部分为分析与类和属性的说明,后半部分为程序的实现与程序代码。第一次写小游戏,仍存在许多问题,也借鉴了优快云前辈的代码想法,如有不妥,还望多批评指正。 (一)总体设计与类图 主界面显示类MainShow和游戏显示类GameShow继承窗口类JFrame,主界面显示类MainShow通过监听器类Listener创建游戏显示类GameShow...

狂点Engineer 1万+

Java仿QQ连连看

Java swing写的仿QQ连连看的整个工程代码

连连看算法 连连看算法

连连看算法 一 连连看的要求 二 任意两点能否连通 三 地图无解提示 四 连接提示功能 五 道具问题 六 地图问题

Java游戏开发——连连看

游戏介绍:       “连连看”是一款来源于我国台湾的桌面小游戏,主要考验的是玩家们的眼力,在有限的时间内,只要能把所有能连接的相同图案,两个两个的找出来,每找到一对,它们就会自动消失,只要能把所有的图案全部消完即可获得胜利。所谓能够连接,是指无论横向还是纵向,从一个图案到另一个图案之间的连线拐角不能超过两个(中间的直线不超过三根),其中连线不能从尚未消去的图案上经过。 本次开发的连连看游戏...

墨染秦月的博客 2万+

连连看java程序开发完整版

1:两个目标是相同的 2:两个目标之间连接线的折点不超过两个。(连接线由x轴和y轴的平行线组成) 那么分析一下连接的情况可以看到,一般分三种情况 1:直线相连 2:一个折点 3:两个折点 可以发现,如果有折点,每个折点必定有且至少有一个坐标(x或者y)是和其中一个目标点是相同的,也就是说,折点必定在两个目标点所在的x方向或y方向的直线上。 所以设计思路就是: 假设目标点 p1 , p2 ,如果有两个折点分别为z1 , z2 那么,所要进行的是 1:如果验证p1 , p2 直线连线,则连接成立 2:搜索以p1,p2的x,y方向四条直线(可能某两条直线会重合)上的有限点,每次取两点作为z1,z2 ,验证p1到z1/z1到z2/z2到p2 是否都能直线相连 ,是则连接成立。(如果z1=z2也就是只有一个折点喽,对判断没影响)

基于Java的连连看游戏设计与实现

连连看超详细设计开发文档,可用于毕设或自主娱乐研发

weixin_74268571的博客 9994

基于java的连连看游戏设计与实现

基于java的连连看游戏设计与实现的部分文档和部分代码

java 版连连看(300行代码)

java 版文字连连看算法查找路线是最快的,代码简单易懂,很合适初学者提高面向对象思想,可以添加一些附加功能

猿创征文|JAVA 实现《连连看》游戏

连连看

毅慎的博客 2万+

连连看(Flex版)

连连看,包括自动求解功能,可以生成连连看布局,当玩家在玩连连看的时候出现死局时,会自动变换布局,保证始终有解

【Java小游戏】小动物连连看由易到难

本文开发的连连看小游戏,记录了从0到1的开发过程,简单易懂,代码可直接运行。完成一个小动物连连看的小游戏,主要的设计框架主要包括:1、首先完成界面的初始化工作;2、获取点击事件,判断两次点击是否满足消除条件;3、方块消除完毕弹窗游戏结束,开启下一局;实现过程中需要的图片可以去获取(免费的)

weixin_52641852的博客 1764

基于Java的连连看小游戏

基于Java的连连看小游戏的设计与实现,主要运用GUI组件实现

连连看java源代码

java开发的连连看小游戏,框架完整,适合初学者学习!

上一篇: 此小程序用于输入两个坐标,输出他们之间的距离
下一篇: s = br.readLine();//这行怎么读取不到内容???
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值