根据游侠网查询显示,当我们点击动能的时候,会弹出下拉框比如说更换图片逻辑,可以重新游戏更换一局游戏,或者是重新登陆、关闭游戏。
拼图小游戏就是由一张完整的图片分割成若干张图片并分散在不同位置,需重新组合成原本的样子。
import java.awt.BorderLayout
import java.awt.Color
import java.awt.FlowLayout
import java.awt.Font
import java.awt.GridLayout
import java.awt.Image
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.image.BufferedImage
import javax.swing.GroupLayout.Alignment
import javax.swing.Icon
import javax.swing.ImageIcon
import javax.swing.JButton
import javax.swing.JCheckBoxMenuItem
import javax.swing.JFileChooser
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JMenu
import javax.swing.JMenuBar
import javax.swing.JMenuItem
import javax.swing.JOptionPane
import javax.swing.JPanel
public class Jigsaw implements ActionListener {
private JFrame frame
private JPanel panel
private JButtonx[] button
private JPanel panel_right
private int level = 4
private JMenuBar menubar
private ImageIcon imageicon
private Image image
private BufferedImage bufferedimage
private BufferedImage[] image_button
private JLabel label
private JPanel panel_left
private ImageIcon[] icon_button
private JMenu menu1
private JMenuItem menuitem1_1
private JMenu menu2
private JCheckBoxMenuItem menuitem2_1
private JCheckBoxMenuItem menuitem2_2
private JCheckBoxMenuItem menuitem2_3
private int x=400
private int y=400
private JMenuItem menuitem1_2
private JFileChooser jfc
private String name="src/pic/1.jpg" //起始图片位置,请自行设置
private JPanel panel_menu
private JLabel label1_1
private JLabel label1_2
private JLabel label1_3
private JLabel label2_1
private JLabel label2_2
private JLabel label2_3
public void reset() {
frame = new JFrame("拼图")
panel = new JPanel()
panel_left = new JPanel()
panel_right = new JPanel()
panel.setLayout(new GridLayout(0, 2))
menubar = new JMenuBar()
menubar.setLayout(new BorderLayout())
panel_menu=new JPanel()
panel_menu.setLayout(null)
menu1 = new JMenu("开始游戏")
menuitem1_1=new JMenuItem("重新开始")
menuitem1_2=new JMenuItem("选择图片")
menu2=new JMenu("等级选择")
menuitem2_1=new JCheckBoxMenuItem("低级(3)")
menuitem2_2=new JCheckBoxMenuItem("高级(4)")
menuitem2_3=new JCheckBoxMenuItem("自定义")
imageicon = new ImageIcon(name)
image = imageicon.getImage()
bufferedimage=new BufferedImage(252, 405, BufferedImage.TYPE_INT_RGB)
bufferedimage.getGraphics().drawImage(image,0,0,252,405,null)
imageicon.setImage(bufferedimage)
label=new JLabel(imageicon)
panel_left.setLayout(new FlowLayout(FlowLayout.CENTER,0,0))
panel_left.add(label)
panel.add(panel_left)
jfc=new JFileChooser()
label1_1=new JLabel("您已经走了")
label1_1.setBounds(30, 0, 80, 25)
label1_2=new JLabel("0")
label1_2.setForeground(Color.RED)
label1_2.setBounds(120, 0, 40, 25)
label1_2.setFont(new Font("黑体",Font.BOLD,20))
label1_3=new JLabel("步")
label1_3.setBounds(160, 0, 30, 25)
label2_1=new JLabel("时间")
label2_1.setBounds(220, 0, 50, 25)
label2_2=new JLabel("0")
label2_2.setForeground(Color.RED)
label2_2.setBounds(280, 0, 40, 25)
label2_2.setFont(new Font("黑体",Font.BOLD,20))
label2_3=new JLabel("秒")
label2_3.setBounds(330, 0, 30, 25)
panel_right.setLayout(new GridLayout(level, level))
button = new JButtonx[level * level]
image_button=new BufferedImage[level*level]
for (int i = 0i <level*level/*-1*/i++) {
image_button[i]=new BufferedImage(252/level, 405/level, BufferedImage.TYPE_INT_RGB)
image_button[i].getGraphics().drawImage(bufferedimage, 0,0,252/level,405/level,(i%level)*(252/level), (i/level)*(405/level), (i%level+1)*(252/level), (i/level+1)*(405/level),null)
}
icon_button=new ImageIcon[level * level]
for (int i = 0i <level * leveli++) {
button[i] = new JButtonx()
icon_button[i]=new ImageIcon(image_button[i],i+"")
button[i].setIcon(icon_button[i])
button[i].num=i
button[i].addActionListener(this)
panel_right.add(button[i])
}
button[level*level-1].setVisible(false)
panel.add(panel_right)
menuitem1_1.addActionListener(this)
menuitem1_2.addActionListener(this)
menuitem2_1.addActionListener(this)
menuitem2_2.addActionListener(this)
menuitem2_3.addActionListener(this)
menu1.add(menuitem1_1)
menu1.add(menuitem1_2)
menu2.add(menuitem2_1)
menu2.add(menuitem2_2)
menu2.add(menuitem2_3)
menubar.add(menu1,BorderLayout.WEST)
menubar.add(menu2,BorderLayout.EAST)
menubar.add(panel_menu)
panel_menu.add(label1_1)
panel_menu.add(label1_2)
panel_menu.add(label1_3)
panel_menu.add(label2_1)
panel_menu.add(label2_2)
panel_menu.add(label2_3)
frame.setJMenuBar(menubar)
frame.add(panel)
frame.setBounds(x, y, 508+4, 459+5)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setResizable(false)
frame.setVisible(true)
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==menuitem1_1)
{
for (int i = 0i <level*leveli++)
button[i].setVisible(true)
int a[]=new int [level*level]
int index=level*level
for (int i = 0i <level*leveli++) {
a[i]=i
}
for (int i = 0i <level*leveli++) {
int x=(int)(Math.random()*index)
int temp=a[x]
a[x]=a[index-1]
a[index-1]=temp
button[i].setIcon(icon_button[a[index-1]])
if(a[index-1]==level*level-1)button[i].setVisible(false)
index--
}
win()
}
else if(e.getSource()==menuitem1_2){if(jfc.showOpenDialog(panel)==0)name=jfc.getSelectedFile().getAbsolutePath()frame.setVisible(false)x=frame.getX()y=frame.getY()reset()}
else if(e.getSource()==menuitem2_1){level=4frame.setVisible(false)x=frame.getX()y=frame.getY()reset()}
else if(e.getSource()==menuitem2_2){level=5frame.setVisible(false)x=frame.getX()y=frame.getY()reset()}
else if(e.getSource()==menuitem2_3)try {level=Integer.parseInt(JOptionPane.showInputDialog(frame,"请输入行数:"))frame.setVisible(false)x=frame.getX()y=frame.getY()reset()} catch (Exception e2) {}
else
{
JButtonx but=(JButtonx)e.getSource()
if(but.isVisible())
{
if(but.num-level>=0)judgemengt(but.num,but.num-level)
if(but.num+level<=level*level-1)judgemengt(but.num,but.num+level)
if(but.num%level-1>=0)judgemengt(but.num,but.num-1)
if(but.num%level+1<=level-1)judgemengt(but.num,but.num+1)
}
win()
}
}
public void judgemengt(int i,int j)
{
if(button[j].isVisible()==false)
{
Icon icontemp_button=button[j].getIcon()
button[j].setIcon(button[i].getIcon())
button[i].setIcon(icontemp_button)
button[j].setVisible(true)
button[i].setVisible(false)
}
}
public void win()
{
int i
for (i = 0i <level*level-1i++) {
if(button[i].num!=Integer.parseInt(button[i].getIcon().toString()))break
}
if(i==level*level-1)
{
JOptionPane.showMessageDialog(frame,"YOU WIN")
}
}
public static void main(String[] args) {
Jigsaw a=new Jigsaw()
a.reset()
}
}
class JButtonx extends JButton
{
int num
}