`

拼图小游戏

阅读更多
配置JDK,附件 game.jar可双击运行

package javaapplication1;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.*;

public class Games extends JFrame implements ActionListener {
private JButton buttons[][];// 存储按键的数组

private Container container;// 一个容器

private GridLayout layout;// 布局方式为GridLayout

private int count = 0, is[] = new int[8];// count的作用是计算按键移动的次数,is[]储存一个随机产生的1到8数字数组

public Games() {
super("Numeric Sliding Puzzle");// 设置标题
}

public void initGraph(int intX,int intY){

   layout = new GridLayout(intX, intY);// 3行3列
   container = getContentPane();// 该容器的布局方式,及其重要,否则产生空引用异常
   container.setBackground(Color.WHITE);
   container.setLayout(layout);// 将该布局方式作用于容器
   buttons = new JButton[intX][intY];// 给按键数组分配储存空间
   int locate1, locate2;// locate1用来指示当前产生的元素 locate2用来指示locate1之前的元素
   for (locate1 = 0; locate1 < intX*intY-1; locate1++) {// 该方法作用是产生1到8这8个数,随机分配给数组,即无序排列
    int g = new Random().nextInt(intX*intY-1) + 1;// 随机产生一个空白按键,即不显示的那个
    is[locate1] = g;
    for (locate2 = locate1 - 1; 0 <= locate2; locate2--) {
     if (is[locate1] == is[locate2])
      break;
    }

    if (locate2 != -1)
     locate1--;
   }
   int temp = 0;
   int r = new Random().nextInt(intX);// 随机产生一个0到3的数,代表空白按键的行
   int l = new Random().nextInt(intY);// 随机产生一个0到3的数,代表空白按键的列
   for (int i = 0; i < intX; i++) {
    for (int j = 0; j < intY; j++) {
     if (r == i && l == j) {// 空白按键设置为9,不显示
      buttons[i][j] = new JButton(String.valueOf(intX*intY));
      container.add(buttons[i][j]);
      buttons[i][j].setVisible(false);
     } else {
      buttons[i][j] = new JButton("" + is[temp++]);// 将数组数组的值作为显示的8个按键的名字
      container.add(buttons[i][j]);
     }
     buttons[i][j].setBackground(Color.black);
     buttons[i][j].setForeground(Color.WHITE);
     buttons[i][j].setFont(getFont());
    
    
     buttons[i][j].addActionListener(this);// 注册监听事件
    }
   }
   setSize(300, 300);// 设置显示容器区域大小
   setVisible(true);
 
}


public Font getFont(){
Font fnB = new Font ("Arial",Font.BOLD,30);
return fnB;
}

public void actionPerformed(ActionEvent event) {// 事件处理,由于计算量小该处将所有按键单独分析
   JButton b = (JButton) event.getSource();
   if (b == buttons[0][0]) {
    if (buttons[0][1].getText().equals("9")) {
     buttons[0][1].setText("" + buttons[0][0].getText());
     buttons[0][1].setVisible(true);
     buttons[0][0].setText("9");
   //  buttons[0][0].setFont()
     buttons[0][0].setVisible(false);
     count++;
    } else if (buttons[1][0].getText().equals("9")) {
     buttons[1][0].setText("" + buttons[0][0].getText());
     buttons[1][0].setVisible(true);
     buttons[0][0].setText("9");
     buttons[0][0].setVisible(false);
     count++;
    }
   }

   else if (b == buttons[0][1]) {
    if (buttons[0][0].getText().equals("9")) {
     buttons[0][0].setText("" + buttons[0][1].getText());
     buttons[0][0].setVisible(true);
     buttons[0][1].setText("9");
     buttons[0][1].setVisible(false);
     count++;
    } else if (buttons[0][2].getText().equals("9")) {
     buttons[0][2].setText("" + buttons[0][1].getText());
     buttons[0][2].setVisible(true);
     buttons[0][1].setText("9");
     buttons[0][1].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[0][1].getText());
     buttons[1][1].setVisible(true);
     buttons[0][1].setText("9");
     buttons[0][1].setVisible(false);
     count++;
    }

   } else if (b == buttons[0][2]) {
    if (buttons[0][1].getText().equals("9")) {
     buttons[0][1].setText("" + buttons[0][2].getText());
     buttons[0][1].setVisible(true);
     buttons[0][2].setText("9");
     buttons[0][2].setVisible(false);
     count++;
    } else if (buttons[1][2].getText().equals("9")) {
     buttons[1][2].setText("" + buttons[0][2].getText());
     buttons[1][2].setVisible(true);
     buttons[0][2].setText("9");
     buttons[0][2].setVisible(false);
     count++;
    }

   } else if (b == buttons[1][0]) {
    if (buttons[0][0].getText().equals("9")) {
     buttons[0][0].setText("" + buttons[1][0].getText());
     buttons[0][0].setVisible(true);
     buttons[1][0].setText("9");
     buttons[1][0].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[1][0].getText());
     buttons[1][1].setVisible(true);
     buttons[1][0].setText("9");
     buttons[1][0].setVisible(false);
     count++;
    } else if (buttons[2][0].getText().equals("9")) {
     buttons[2][0].setText("" + buttons[1][0].getText());
     buttons[2][0].setVisible(true);
     buttons[1][0].setText("9");
     buttons[1][0].setVisible(false);
     count++;
    }

   } else if (b == buttons[1][1]) {
    if (buttons[0][1].getText().equals("9")) {
     buttons[0][1].setText("" + buttons[1][1].getText());
     buttons[0][1].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    } else if (buttons[1][0].getText().equals("9")) {
     buttons[1][0].setText("" + buttons[1][1].getText());
     buttons[1][0].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    } else if (buttons[1][2].getText().equals("9")) {
     buttons[1][2].setText("" + buttons[1][1].getText());
     buttons[1][2].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    } else if (buttons[2][1].getText().equals("9")) {
     buttons[2][1].setText("" + buttons[1][1].getText());
     buttons[2][1].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    }

   } else if (b == buttons[1][2]) {
    if (buttons[0][2].getText().equals("9")) {
     buttons[0][2].setText("" + buttons[1][2].getText());
     buttons[0][2].setVisible(true);
     buttons[1][2].setText("9");
     buttons[1][2].setVisible(false);
     count++;
    } else if (buttons[2][2].getText().equals("9")) {
     buttons[2][2].setText("" + buttons[1][2].getText());
     buttons[2][2].setVisible(true);
     buttons[1][2].setText("9");
     buttons[1][2].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[1][2].getText());
     buttons[1][1].setVisible(true);
     buttons[1][2].setText("9");
     buttons[1][2].setVisible(false);
     count++;
    }

   } else if (b == buttons[2][0]) {
    if (buttons[1][0].getText().equals("9")) {
     buttons[1][0].setText("" + buttons[2][0].getText());
     buttons[1][0].setVisible(true);
     buttons[2][0].setText("9");
     buttons[2][0].setVisible(false);
     count++;
    } else if (buttons[2][1].getText().equals("9")) {
     buttons[2][1].setText("" + buttons[2][0].getText());
     buttons[2][1].setVisible(true);
     buttons[2][0].setText("9");
     buttons[2][0].setVisible(false);
     count++;
    }
   }

   else if (b == buttons[2][1]) {
    if (buttons[2][0].getText().equals("9")) {
     buttons[2][0].setText("" + buttons[2][1].getText());
     buttons[2][0].setVisible(true);
     buttons[2][1].setText("9");
     buttons[2][1].setVisible(false);
     count++;
    } else if (buttons[2][2].getText().equals("9")) {
     buttons[2][2].setText("" + buttons[2][1].getText());
     buttons[2][2].setVisible(true);
     buttons[2][1].setText("9");
     buttons[2][1].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[2][1].getText());
     buttons[1][1].setVisible(true);
     buttons[2][1].setText("9");
     buttons[2][1].setVisible(false);
     count++;
    }

   } else if (b == buttons[2][2]) {
    if (buttons[2][1].getText().equals("9")) {
     buttons[2][1].setText("" + buttons[2][2].getText());
     buttons[2][1].setVisible(true);
     buttons[2][2].setText("9");
     buttons[2][2].setVisible(false);
     count++;
    } else if (buttons[1][2].getText().equals("9")) {
     buttons[1][2].setText("" + buttons[2][2].getText());
     buttons[1][2].setVisible(true);
     buttons[2][2].setText("9");
     buttons[2][2].setVisible(false);
     count++;
    }
   }
   if (buttons[0][0].getText().equals("1")// 假如1到8已经排列完成,则执行该语句
     && buttons[0][1].getText().equals("2")
     && buttons[0][2].getText().equals("3")
     && buttons[1][0].getText().equals("4")
     && buttons[1][1].getText().equals("5")
     && buttons[1][2].getText().equals("6")
     && buttons[2][0].getText().equals("7")
     && buttons[2][1].getText().equals("8")) {
   int  option=   JOptionPane.showConfirmDialog(Games.this, "would you like to play again ? ", "提示 ",JOptionPane.YES_NO_CANCEL_OPTION);
   if(option==JOptionPane.NO_OPTION) {
  System.exit(0);
   }else if(option==JOptionPane.YES_OPTION){
   this.dispose();
   new Games().initGraph(3, 3); 
   }else if(option==JOptionPane.CANCEL_OPTION){
   return ;
   }
   }

}

/*public void inputParam(){
  JFrame  jframe = new JFrame("请输入行数和列数");
  jframe.setSize(300, 300);
  jframe.setLayout(new FlowLayout());
  jframe.setBackground(Color.blue);
  jframe.setResizable(false);
  jframe.setVisible(true);
 
 
  JPanel jpanel=new JPanel();
  jpanel.setLayout(new FlowLayout());
  jpanel.setVisible(true);

  jframe.add(jpanel);
 
  JTextField jt = new JTextField();
  jt.setBackground(Color.WHITE);
  jt.setSize(600, 20);
  jt.setVisible(true);
 
  jpanel.add(jt);
 

 
}
*/
public static void main(String[] args) {
   Games game = new Games();
   game.initGraph(3,3);
}

}



分享到:
评论

相关推荐

    python课程设计用pyqt5做的拼图小游戏源码.zip

    python课程设计用pyqt5做的拼图小游戏源码python课程设计用pyqt5做的拼图小游戏源码python课程设计用pyqt5做的拼图小游戏源码python课程设计用pyqt5做的拼图小游戏源码python课程设计用pyqt5做的拼图小游戏源码...

    Python写简单的拼图小游戏完整项目

    **Python编程:构建拼图小游戏** 在Python编程领域,创建一个拼图小游戏是一个经典且有趣的实践项目,尤其适合初学者提升编程技能。本项目利用Python的图形用户界面(GUI)库,如Tkinter或Pygame,来实现一个交互式...

    canvas拼图小游戏

    综上所述,创建一个canvas拼图小游戏涉及多个步骤,从图像处理到用户交互,再到游戏逻辑的实现。熟练掌握Canvas API和JavaScript是成功构建此类游戏的关键。在提供的`puzzle.html`文件中,你可以找到具体的游戏实现...

    android拼图小游戏源代码

    【Android拼图小游戏源代码详解】 对于初学者来说,学习Android开发是一个有趣且充满挑战的过程。这个"android拼图小游戏源代码"是一个很好的起点,它可以帮助你了解Android Studio的使用,掌握基本的Android编程...

    c++编写的拼图小游戏(含源代码)

    《C++实现的拼图小游戏详解》 在编程领域,C++是一种强大的、面向对象的编程语言,广泛应用于系统软件、应用软件、游戏开发等多个领域。本篇文章将深入解析一个用C++编写的拼图小游戏,它包含了丰富的功能,如背景...

    博主推荐html好看的拼图小游戏(源码)

    【博主推荐】html好看的拼图小游戏(附源码) 拼图资源来自,最近比较火得电视剧《且试天下》,觉得挺不错得一部剧,喜欢里面得角色,所以拿来当资源了,拼出来得成就感还是不错的。 拼图分为四个等级,分别是九宫格、...

    拼图小游戏(VB 代码)

    在“拼图小游戏”项目中,VB被用来实现游戏逻辑、界面设计以及用户交互。 【事件驱动编程】 事件驱动编程是VB的核心特性之一,它基于用户或系统的动作触发代码执行。例如,在拼图游戏中,当用户点击按钮或完成拼图...

    python 华容道拼图小游戏

    《Python实现华容道拼图小游戏详解》 华容道,一种源于中国古代的益智游戏,如今被编程爱好者们用代码赋予了新的生命。本文将详细介绍如何使用Python的pygame模块来编写一个华容道拼图小游戏,同时涉及os、random和...

    java-拼图小游戏(黑马)

    java-拼图小游戏(黑马)

    简单3*3拼图小游戏

    《3*3拼图小游戏——Java编程实现解析》 在编程世界中,小游戏开发是学习新语言和技术的一个有趣途径。本文将围绕一个简单的3*3拼图小游戏进行讲解,该游戏由Java语言编写,旨在帮助开发者熟悉面向对象编程、事件...

    android拼图小游戏

    【Android拼图小游戏详解】 Android拼图小游戏是一种常见的休闲娱乐应用程序,它主要基于Android平台开发,旨在提供一种轻松、有趣的拼图体验。这种游戏通常包括将一张完整的图像分割成若干块,然后玩家需要通过...

    拼图小游戏原代码拼图小游戏原代码

    【标题】: "拼图小游戏原代码解析与开发详解" 【描述】: 拼图小游戏,也称为拼图游戏或拼板游戏,是一种深受各年龄段玩家喜爱的智力挑战活动。这种游戏通常涉及到将一幅完整的图像分割成多个部分,然后玩家需要通过...

    java 拼图小游戏

    Java 拼图小游戏源代码分析 Java 拼图小游戏是一个使用 Java 语言编写的拼图游戏,游戏界面包括一个 4x4 的游戏面板、一个预览面板和三个按钮:开始、预览和设置。游戏使用 Java 的 AWT 库来实现图形用户界面。 ...

    一个拼图小游戏C#源码

    这是一个基于C#编程语言开发的拼图小游戏源代码项目,非常适合初学者学习和理解C#编程以及游戏开发的基础知识。这个项目提供了四个不同的难度等级——容易、中等、难、极难,使得游戏体验多样化,同时也增加了挑战性...

    android 拼图小游戏

    android 拼图 小游戏 源码android 拼图 源码 小游戏android 拼图 源码 小游戏android 拼图 源码 小游戏android 拼图 小游戏android 拼图 小游戏

    安卓 拼图小游戏

    在安卓平台上,开发一款拼图小游戏涉及到众多的编程技术和设计原则。下面将详细解析这款应用的知识点,包括但不限于用户界面设计、游戏逻辑实现、计时功能以及结果展示。 首先,我们要构建用户界面(UI)。在安卓...

    用java编写拼图小游戏

    在本项目中,我们主要探讨的是如何使用Java编程语言来创建一个拼图小游戏。这个程序不仅包含基本的拼图逻辑,还集成了音乐播放功能,为用户提供了丰富的游戏体验。以下将详细介绍涉及的关键知识点。 1. **Java编程...

    java拼图小游戏

    【Java拼图小游戏详解】 Java拼图小游戏是一种常见的编程练习,它可以帮助初学者理解面向对象编程、事件处理、图形用户界面(GUI)设计等基础知识。在这个项目中,我们将深入探讨如何利用Java语言来开发这样一个...

    h5拼图小游戏

    《H5拼图小游戏开发详解》 在当今的数字化时代,HTML5(简称H5)作为新一代的网页标准,以其强大的交互性和丰富的媒体支持,深受开发者喜爱。本篇文章将深入探讨一个基于H5和jQuery实现的简单拼图小游戏的开发过程...

Global site tag (gtag.js) - Google Analytics