[java]代码库/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

package 数字版连连看;

/**

*

* @author ZSL

*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

/**

* Java数字版连连看

*

*/

public class Lianliankan implements ActionListener {

JFrame mainFrame;

Container thisContainer;

JPanel centerPanel, southPanel, northPanel;

JButton diamondsButton[][] = new JButton[6][5];// 游戏按钮数组

JButton exitButton, resetButton, newlyButton; // 退出,重列,重新开始按钮

JLabel fractionLable = new JLabel("0"); // 分数标签

JButton firstButton, secondButton; // 分别记录两次被选中的按钮

int grid[][] = new int[8][7];// 储存游戏按钮位置

static boolean pressInformation = false; // 判断是否有按钮被选中

int x0 = 0, y0 = 0, x = 0, y = 0, fristMsg = 0, secondMsg = 0, validateLV; // 游戏按钮的位置坐标

int i, j, k, n;// 消除方法控制

public void init() {

mainFrame = new JFrame("Java数字版连连看");

thisContainer = mainFrame.getContentPane();

thisContainer.setLayout(new BorderLayout());

centerPanel = new JPanel();

southPanel = new JPanel();

northPanel = new JPanel();

thisContainer.add(centerPanel, "Center");

thisContainer.add(southPanel, "South");

thisContainer.add(northPanel, "North");

centerPanel.setLayout(new GridLayout(6, 5));

for (int cols = 0; cols < 6; cols++) {

for (int rows = 0; rows < 5; rows++) {

diamondsButton[cols][rows] = new JButton(

String.valueOf(grid[cols + 1][rows + 1]));

diamondsButton[cols][rows].addActionListener(this);

centerPanel.add(diamondsButton[cols][rows]);

}

}

exitButton = new JButton("退出");

exitButton.addActionListener(this);

resetButton = new JButton("重列");

resetButton.addActionListener(this);

newlyButton = new JButton("再来一局");

newlyButton.addActionListener(this);

southPanel.add(exitButton);

southPanel.add(resetButton);

southPanel.add(newlyButton);

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable

.getText())));

northPanel.add(fractionLable);

mainFrame.setBounds(280, 100, 500, 450);

mainFrame.setVisible(true);

}

public void randomBuild() {

int randoms, cols, rows;

for (int twins = 1; twins <= 15; twins++) {

randoms = (int) (Math.random() * 25 + 1);

for (int alike = 1; alike <= 2; alike++) {

cols = (int) (Math.random() * 6 + 1);

rows = (int) (Math.random() * 5 + 1);

while (grid[cols][rows] != 0) {

cols = (int) (Math.random() * 6 + 1);

rows = (int) (Math.random() * 5 + 1);

}

this.grid[cols][rows] = randoms;

}

}

}

public void fraction() {

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable

.getText()) + 100));

}

public void reload() {

int save[] = new int[30];

int n = 0, cols, rows;

int grid[][] = new int[8][7];

for (int i = 0; i <= 6; i++) {

for (int j = 0; j <= 5; j++) {

if (this.grid[i][j] != 0) {

save[n] = this.grid[i][j];

n++;

}

}

}

n = n - 1;

this.grid = grid;

while (n >= 0) {

cols = (int) (Math.random() * 6 + 1);

rows = (int) (Math.random() * 5 + 1);

while (grid[cols][rows] != 0) {

cols = (int) (Math.random() * 6 + 1);

rows = (int) (Math.random() * 5 + 1);

}

this.grid[cols][rows] = save[n];

n--;

}

mainFrame.setVisible(false);

pressInformation = false; // 这里一定要将按钮点击信息归为初始

init();

for (int i = 0; i < 6; i++) {

for (int j = 0; j < 5; j++) {

if (grid[i + 1][j + 1] == 0)

diamondsButton[i][j].setVisible(false);

}

}

}

public void estimateEven(int placeX, int placeY, JButton bz) {

if (pressInformation == false) {

x = placeX;

y = placeY;

secondMsg = grid[x][y];

secondButton = bz;

pressInformation = true;

} else {

x0 = x;

y0 = y;

fristMsg = secondMsg;

firstButton = secondButton;

x = placeX;

y = placeY;

secondMsg = grid[x][y];

secondButton = bz;

if (fristMsg == secondMsg && secondButton != firstButton) {

xiao();

}

}

}

public void xiao() { // 相同的情况下能不能消去。仔细分析,不一条条注释

if ((x0 == x && (y0 == y + 1 || y0 == y - 1))

|| ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // 判断是否相邻

remove();

} else {

for (j = 0; j < 7; j++) {

if (grid[x0][j] == 0) { // 判断第一个按钮同行哪个按钮为空

if (y > j) { // 如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边

for (i = y - 1; i >= j; i--) { // 判断第二按钮左侧直到第一按钮中间有没有按钮

if (grid[x][i] != 0) {

k = 0;

break;

} else {

k = 1;

} // K=1说明通过了第一次验证

}

if (k == 1) {

linePassOne();

}

}

if (y < j) { // 如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边

for (i = y + 1; i <= j; i++) { // 判断第二按钮左侧直到第一按钮中间有没有按钮

if (grid[x][i] != 0) {

k = 0;

break;

} else {

k = 1;

}

}

if (k == 1) {

linePassOne();

}

}

if (y == j) {

linePassOne();

}

}

if (k == 2) {

if (x0 == x) {

remove();

}

if (x0 < x) {

for (n = x0; n <= x - 1; n++) {

if (grid[n][j] != 0) {

k = 0;

break;

}

if (grid[n][j] == 0 && n == x - 1) {

remove();

}

}

}

if (x0 > x) {

for (n = x0; n >= x + 1; n--) {

if (grid[n][j] != 0) {

k = 0;

break;

}

if (grid[n][j] == 0 && n == x + 1) {

remove();

}

}

}

}

}

for (i = 0; i < 8; i++) { // 列

if (grid[i][y0] == 0) {

if (x > i) {

for (j = x - 1; j >= i; j--) {

if (grid[j][y] != 0) {

k = 0;

break;

} else {

k = 1;

}

}

if (k == 1) {

rowPassOne();

}

}

if (x < i) {

for (j = x + 1; j <= i; j++) {

if (grid[j][y] != 0) {

k = 0;

break;

} else {

k = 1;

}

}

if (k == 1) {

rowPassOne();

}

}

if (x == i) {

rowPassOne();

}

}

if (k == 2) {

if (y0 == y) {

remove();

}

if (y0 < y) {

for (n = y0; n <= y - 1; n++) {

if (grid[i][n] != 0) {

k = 0;

break;

}

if (grid[i][n] == 0 && n == y - 1) {

remove();

}

}

}

if (y0 > y) {

for (n = y0; n >= y + 1; n--) {

if (grid[i][n] != 0) {

k = 0;

break;

}

if (grid[i][n] == 0 && n == y + 1) {

remove();

}

}

}

}

}

}

}

public void linePassOne() {

if (y0 > j) { // 第一按钮同行空按钮在左边

for (i = y0 - 1; i >= j; i--) { // 判断第一按钮同左侧空按钮之间有没按钮

if (grid[x0][i] != 0) {

k = 0;

break;

} else {

k = 2;

} // K=2说明通过了第二次验证

}

}

if (y0 < j) { // 第一按钮同行空按钮在与第二按钮之间

for (i = y0 + 1; i <= j; i++) {

if (grid[x0][i] != 0) {

k = 0;

break;

} else {

k = 2;

}

}

}

}

public void rowPassOne() {

if (x0 > i) {

for (j = x0 - 1; j >= i; j--) {

if (grid[j][y0] != 0) {

k = 0;

break;

} else {

k = 2;

}

}

}

if (x0 < i) {

for (j = x0 + 1; j <= i; j++) {

if (grid[j][y0] != 0) {

k = 0;

break;

} else {

k = 2;

}

}

}

}

public void remove() {

firstButton.setVisible(false);

secondButton.setVisible(false);

fraction();

pressInformation = false;

k = 0;

grid[x0][y0] = 0;

grid[x][y] = 0;

}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == newlyButton) {

int grid[][] = new int[8][7];

this.grid = grid;

randomBuild();

mainFrame.setVisible(false);

pressInformation = false;

init();

}

if (e.getSource() == exitButton)

System.exit(0);

if (e.getSource() == resetButton)

reload();

for (int cols = 0; cols < 6; cols++) {

for (int rows = 0; rows < 5; rows++) {

if (e.getSource() == diamondsButton[cols][rows])

estimateEven(cols + 1, rows + 1, diamondsButton[cols][rows]);

}

}

}

public static void main(String[] args) {

Lianliankan llk = new Lianliankan();

llk.randomBuild();

llk.init();

}

}

连连看java代码_连连看 - java代码库 - 云代码相关推荐

  1. java图书信息添加代码_图书 - java代码库 - 云代码

    [java]代码库package com.mahe; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt. ...

  2. 如何使用java代码生成_使用Java成功生成代码的7个技巧

    如何使用java代码生成 作为介绍,最近我有点安静,部分原因是我一直在忙于Chronicle-FIX的工作 . 这是Chronicle-Enterprise套件中的一个新的超低延迟库,我们证明了该库可 ...

  3. java服务器代码_简单java服务器

    [java]代码库import java.io.InputStream; import java.io.OutputStream; import java.net.*; public class Ch ...

  4. java存档_存档 Java 代码 - Java 入门教程

    目标 了解如何在 Eclipse 中创建 JAR 文件 能够将第三方代码导入您的 Java 应用程序 创建 JAR 现在您已经了解了如何编写 Java 应用程序,您可能想知道如何打包它们,以便其他开发 ...

  5. java计分系统编程代码_使用Java代码对实时系统进行编程

    由于许多重要原因,Java语言在实时系统中的使用并不广泛. 这些包括Java语言设计固有的不确定性性能影响,例如动态类加载,以及Java Runtime Environment(JRE)本身,例如垃圾 ...

  6. java调用序列_基于JAVA的苹果序列号接口调用代码实例

    [java]代码库import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; ...

  7. java cxf服务端代码_【JAVA】 cxf 生成 webservice 服务端代码

    CXF Apache CXF = Celtix + XFire.CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding . ...

  8. java调节音量代码_用Java调用VC音量控制程序_java

    前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...

  9. java空心正方形代码_从Java中的用户输入绘制空心星号正方形/矩...

    我正在尝试创建一个程序,要求用户提供正方形/矩形的宽度和长度尺寸,然后使用#符号将其绘制出来.我几乎了解了,除了我似乎不太了解矩形的右边以正确打印出来- 这是我的代码: import java.uti ...

最新文章

  1. 不用鼠标,只用键盘,你还能操作自如吗?
  2. tcpip详解--端口号
  3. Recyclerview 出现 java.lang.IndexOutOfBoundsException: Inconsistency detected 异常
  4. 一位数据科学家的私房工具清单
  5. mysql for centos下载_python数据分析之路——centos下载并配置mysql与navicat的使用
  6. android r文件错误,Android R文件丢失异常原因汇总
  7. SAP Cloud Platform integration上创建一个最简单的iFlow
  8. 干货:从0到1搭建「推荐策略产品」的深度思考
  9. 为什么python打开pygame秒关闭后在运行_当我运行Python程序时,pygame窗口打开片刻,然后退出 - python...
  10. shell取mysql数据_通过shell读取mysql数据——20120417
  11. 边框回归的损失函数_CVPR 2019:精确目标检测的不确定边界框回归
  12. linux下的c语言编程实验4,实验四-Linux下的C语言编程
  13. (day9)357. 计算各个位数不同的数字个数
  14. 百度云搜索引擎森林战士_纯干货:网盘搜索引擎整理
  15. C#中IntPtr打印输出
  16. 初学Python目前我认为较容易理解的求100以内质数(素数)的方法。
  17. PNP三极管限流电路分析
  18. phpstudy下载、安装、配置、网站部署、卸载
  19. unity android gyro,Unity - 陀螺仪 - 仅绕一轴旋转
  20. 计算机桌面图标怎样缩小,win10系统桌面图标太大如何缩小?win10系统将桌面图标缩小的方法...

热门文章

  1. 高德地图android4,Android高德之旅(4)我的位置
  2. 不是ESD保护二极管难买,是你没找到对的方法
  3. 《Cloud Native Infrastructure》CHAPTER 7 (1)
  4. Alpha预乘-混合与不混合[转]
  5. luogu P1007 独木桥
  6. 关于php 高并发解决的一点思路
  7. 分类图 Class Diagram
  8. Visual Studio 字体抗锯齿插件 Text Sharp
  9. 变长结构体的临时笔记
  10. oracle数据库应用与开发习题,《Oracle数据库应用》练习题及答案.docx