求助:一个java小游戏编程实例,主要的界面做出来,但是游戏的中按钮怎么走得方法不知道怎么写。

这个游戏取之于《机械迷城》中的一个mini游戏如图

一共六个按钮,向下三个在上,向上三个在下,游戏结果要向按钮右边所示才算成功,
游戏规则如按钮左边所示,①点击按钮可移向相邻空位(不过向上箭头的只能向上移,向下箭头只能向下移),②点击按钮要隔一个按钮移,必须两个相邻按钮箭头相对,这样一直移动直至右边所示的结果,才算成功。
求这个游戏的方法怎么编写,只要按钮移动的方法,用java编写,
谢谢各位大侠了!!!!如果回答的好,我可以加分,我还有很多分。。。。

第1个回答  2011-12-31
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Game1 extends javax.swing.JFrame {

public Game1() {
initComponents();
}

private void initComponents() {

jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏.jpg"));
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏.jpg"));
jButton2.setText("jButton2");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

jButton3.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏.jpg"));
jButton3.setText("jButton3");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});

jButton4.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏2.jpg"));
jButton4.setText("jButton4");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});

jButton5.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏1.jpg")); // NOI18N
jButton5.setText("jButton5");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});

jButton6.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏1.jpg")); // NOI18N
jButton6.setText("jButton6");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});

jButton7.setIcon(new javax.swing.ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏1.jpg")); // NOI18N
jButton7.setText(" ");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(132, 132, 132)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addComponent(jButton3, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addComponent(jButton4, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addComponent(jButton5, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
.addComponent(jButton6, 0, 0, Short.MAX_VALUE)
.addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 69, Short.MAX_VALUE))
.addContainerGap(199, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(101, 101, 101)
.addComponent(jButton7)
.addGap(29, 29, 29)
.addComponent(jButton6)
.addGap(30, 30, 30)
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton4)
.addGap(18, 18, 18)
.addComponent(jButton3)
.addGap(18, 18, 18)
.addComponent(jButton2)
.addGap(18, 18, 18)
.addComponent(jButton1))
);

pack();
}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if(a==0)
{
if(a!=b)
{
if(b==2)
{
jButton2.setIcon(f1);
jButton1.setIcon(f3);
a=2;
b=0;
}
else
{
if(c==2)
{
jButton3.setIcon(f1);
jButton1.setIcon(f3);
c=0;
a=2;
}

}
}
}

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if(b==0)
{
if(b!=c)
{
if(c==2)
{
jButton3.setIcon(f1);
jButton2.setIcon(f3);
b=2;
c=0;
}
else
{
if(d==2)
{
jButton4.setIcon(f1);
jButton2.setIcon(f3);
d=0;
b=2;
}
}
}
}
if(b==1)
{

if(a==2)
{
jButton1.setIcon(f2);
jButton2.setIcon(f3);
b=2;
a=1;
}
}
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
if(c==0)
{
if(c!=d)
{
if(d==2)
{
jButton4.setIcon(f1);
jButton3.setIcon(f3);
c=2;
d=0;
}
else
{
if(e==2)
{
jButton5.setIcon(f1);
jButton3.setIcon(f3);
e=0;
c=2;
}
}
}
}
if(c==1)
{
if(b==0&&a==2)
{
jButton1.setIcon(f2);
jButton3.setIcon(f3);
c=2;
a=1;
}
if(b==2)
{
jButton2.setIcon(f2);
jButton3.setIcon(f3);
c=2;
b=1;
}
}
}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
if(d==0)
{
if(d!=e)
{
if(e==2)
{
jButton5.setIcon(f1);
jButton4.setIcon(f3);
d=2;
e=0;
}
else
{
if(f==2)
{
jButton6.setIcon(f1);
jButton4.setIcon(f3);
f=0;
d=2;
}
}
}
}
if(d==1)
{
if(c==0&&b==2)
{
jButton2.setIcon(f2);
jButton4.setIcon(f3);
d=2;
b=1;
}
if(c==2)
{
jButton3.setIcon(f2);
jButton4.setIcon(f3);
d=2;
c=1;
}
}
}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
if(e==0)
{
if(e!=f)
{
if(f==2)
{
jButton6.setIcon(f1);
jButton5.setIcon(f3);
e=2;
f=0;
}
else
{
if(g==2)
{
jButton7.setIcon(f1);
jButton5.setIcon(f3);
g=0;
e=2;
}
}
}
}
if(e==1)
{
if(d==0&&c==2)
{
jButton3.setIcon(f2);
jButton5.setIcon(f3);
e=2;
c=1;
}
if(d==2)
{
jButton4.setIcon(f2);
jButton5.setIcon(f3);
e=2;
d=1;
}
}}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
if(f==0&&g==2)
{
jButton7.setIcon(f1);
jButton6.setIcon(f3);
f=2;
g=0;
}
if(f==1&&e==2)
{
jButton5.setIcon(f2);
jButton6.setIcon(f3);
f=2;
e=1;
}
if(f==1&&e==0&&d==2)
{
jButton4.setIcon(f2);
jButton6.setIcon(f3);
d=1;
f=2;
}
}

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
if(g==1&&f==2)
{
jButton6.setIcon(f2);
jButton7.setIcon(f3);
g=2;
f=1;
}
if(g==1&&f==0&&e==2)
{
jButton5.setIcon(f2);
jButton7.setIcon(f3);
g=2;
e=1;
}

}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Game1().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
// End of variables declaration
int a=0;int b=0;int c=0;int d=2;int e=1;int f=1;int g=1;
String s="C:\\Users\\Administrator\\Desktop\\游戏.jpg";
String s1="C:\\Users\\Administrator\\Desktop\\游戏1.jpg";
String s2="C:\\Users\\Administrator\\Desktop\\游戏2.jpg";
ImageIcon f1=new ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏.jpg");
ImageIcon f2=new ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏1.jpg");
ImageIcon f3=new ImageIcon("C:\\Users\\Administrator\\Desktop\\游戏2.jpg");

}//我对“点击按钮要隔一个按钮移,必须两个相邻按钮箭头相对”的理解是两个箭头相对的按钮后要有空位才可以移动,不知道是不是对的,而且我不会把按钮做成圆形,你可以用你的界面,如果我理解不对,里面的方法思想应该可以解决移动问题,还有,向下的按钮图案我存为
游戏.jpg;向上的我存为游戏1.jpg;空位按钮我存为游戏2.jpg追问

非常感谢!
我得慢慢看看,还有能不能把按钮的图片发给我

追答

那按钮图片就是你发的图我用截图工具截下来的图片

追问

哦,那谢谢,不过我自己的思路跟你得有点不一样,看你得有点看不懂。
点击按钮要隔一个按钮移,必须两个相邻按钮箭头相对”的理解是两个箭头相对的按钮后要有空位才可以移动,你得理解是对的,我没有说清楚。
这个步骤,我的思路是怎样判断它相邻的按钮的方向是与之相反的,然后在隔一个跳。我自己写得代码可以给你。

本回答被提问者采纳
第2个回答  2011-12-31
这个好像不太容易啊
第3个回答  2011-12-30
你可以使它摇晃

求助:一个java小游戏编程实例,主要的界面做出来,但是游戏的中按钮怎么走...
这个游戏取之于《机械迷城》中的一个mini游戏如图一共六个按钮,向下三个在上,向上三个在下,游戏结果要向按钮右边所示才算成功,游戏规则如按钮左边所示,①点击按钮可移向相邻空位... 这个游戏取之于《机械迷城》中的一个mini游戏如图一共六个按钮,向下三个在上,向上三个在下,游戏结果要向按钮右边所示才算成功,...

求一个简单的Java小游戏的代码
import java.awt.event.*;public class lianliankan implements ActionListener { JFrame mainFrame; \/\/主面板 Container thisContainer;JPanel centerPanel,southPanel,northPanel; \/\/子面板 JButton diamondsButton[][] = new JButton[6][5];\/\/游戏按钮数组 JButton exitButton,resetButton,newlyButton...

急求用JAVA编写的图形化界面拼图小游戏代码!
(1)如何实现图片移动 使用带图片的按钮(button =new button(getImage(Array[2][4]))),然后通过单击事件来更改按钮的图片来源。 把被点击的按钮的图片路径更新到空白按钮,并且把被点击的按钮图片更新的成空白。其实就是变换两个的二维数组成员的值。更新Array2中的值,然后重绘按钮 如 Array[2...

如何用java实现一个贪吃蛇小游戏?
1、设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。2、所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面...

java编程 设计如下图所示的窗口,完成猜数小游戏的设计。
\/\/code 1:按钮buttonEnter增加ActionEvent事件监视器,监视器为当前窗口 buttonGetNumber.addActionListener(WindowButton.this);\/\/code 2:按钮buttonGetNumber增加ActionEvent事件监视器,监视器为当前窗口 Box boxH1 = Box.createHorizontalBox();boxH1.add(new JLabel("获取1-100之间的随机数:"));boxH...

java小游戏(让你的闲暇时光更有趣)
操作步骤 1.打开2048游戏网站或下载2048游戏应用程序。2.点击“开始游戏”按钮,游戏开始。3.使用方向键控制数字的移动,相同数字会合并成一个更大的数字。4.当出现2048这个数字时,游戏胜利。贪吃蛇 贪吃蛇是一款非常经典的游戏,它的规则也非常简单,玩家需要控制一条蛇去吃食物,每吃一个食物就会变长...

Java写的模拟鼠标的游戏辅助,运行时没法在游戏界面正常点击
方法一: Robot, 比较初级和粗糙, 功能弱小, 只能前台运行.方法二: JNI\/JNA技术, 调用windows API ,或者调用c语言代码. 可以完成 !!!强烈推荐该方法,可以后台运行, 特别是JNA, 简化了JNI, 用起来很方便 方法三: JACOB 技术, 目前比较成熟的就是大漠插件, java可以使用JACOB技术,来调用他 有些...

本人需要用JAVA编写一个推箱子的小游戏 源代码有了 但是缺少做推箱子这...
import javax.swing.JLabel;import javax.swing.JPanel;public class Txz { public static void main(String[] args) { JFrame frame = new JFrame("������1.0");\/\/����frame.setBounds(100, 20, 20 * 48 ...

用JAVA编一个小游戏或者其他程序
要用JAVA做一个小项目,类别不限,随便什么程序都行,不用太复杂。最好有注释。谢谢。这个有点太简单了。毕竟是一个小项目啊。谁发个有图形界面的?有没有可玩性强一点的,类似贪吃蛇... 要用JAVA做一个小项目,类别不限,随便什么程序都行,不用太复杂。最好有注释。谢谢。这个有点太简单了。毕竟是一个小项目...

计算机编程语言是不是都可以做游戏?
可以的,任何的编程语言基本都是可以做游戏的。但是游戏又分很多种,比如说做界面的可能是一种语言,后端的逻辑有可能是一种语言。比如说微信小程序中的游戏前端是用JavaScript去做的。而后端的一些逻辑可能是一些Java,PHP等后盾意愿去做的。

相似回答