package game.medleyPicture;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
public class MedleyGame extends JFrame {
private JLabel modelLabel;
private JPanel centerPanel;
private JButton emptyButton;
int num = 0;
public static void main(String[] args) {
try {
MedleyGame frame = new MedleyGame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
//建立窗口构造方法
public MedleyGame() {
super();
setResizable(false);
setTitle("拼图游戏");
setBounds(100, 100, 370, 525);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建面板对象,并增加边框、布局
final JPanel topPanel = new JPanel();
topPanel.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, null));
topPanel.setLayout(new BorderLayout());
getContentPane().add(topPanel, BorderLayout.NORTH);//放于上方
//创建标签放原图
modelLabel = new JLabel();
modelLabel.setIcon(new ImageIcon("image/"+ num+ "model.jpg"));
topPanel.add(modelLabel, BorderLayout.WEST);
//在右侧加个面板,添加两个按钮
JPanel eastPanel = new JPanel();
topPanel.add(eastPanel,BorderLayout.CENTER);
eastPanel.setLayout(new BorderLayout());
JButton nextButton = new JButton();
nextButton.setText("下一张");
nextButton.addActionListener(new NextButtonAction());
eastPanel.add(nextButton,BorderLayout.NORTH);
//创建按钮开局添加监听
final JButton startButton = new JButton();
startButton.setText("开局");
startButton.addActionListener(new StartButtonAction());
eastPanel.add(startButton, BorderLayout.CENTER);
//初始化中心面板,设置边框,添加按钮
centerPanel = new JPanel();
centerPanel.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, null));
centerPanel.setLayout(new GridLayout(4, 0));
getContentPane().add(centerPanel, BorderLayout.CENTER);
//初始化图片
String[][] exactnessOrder = order();
//按排列添加按钮,设置图片
for (int row=0; row<4; row++) {
for (int col=0; col<4; col++) {
final JButton button = new JButton();
button.setName(row+""+col);
button.setIcon(new ImageIcon(exactnessOrder[row][col]));
if (exactnessOrder[row][col].equals("image/"+ num+"00.jpg"))
emptyButton = button;
button.addActionListener(new ImgButtonAction());
centerPanel.add(button);
}
}
}
//初始化图片
private String[][] order() {
String[][] exactnessOrder = new String[4][4];
for (int row=0; row<4; row++) {
for (int col=0; col<4; col++) {
exactnessOrder[row][col] = "image/"+ num+ row+ col+ ".jpg";
}
}
return exactnessOrder;
}
//随机排列图片
private String[][] reorder() {
String[][] exactnessOrder = new String[4][4];
for (int row=0; row<4; row++) {
for (int col=0; col<4; col++) {
exactnessOrder[row][col] = "image/"+ num+ row+ col+ ".jpg";
}
}
String[][] stochasticOrder = new String[4][4];
for (int row=0; row<4; row++) {
for (int col=0; col<4; col++) {
while (stochasticOrder[row][col]==null) {
int r = (int) (Math.random()*4);
int c = (int) (Math.random()*4);
if (exactnessOrder[r][c] != null) {
stochasticOrder[row][col] = exactnessOrder[r][c];
exactnessOrder[r][c] = null;
}
}
}
}
return stochasticOrder;
}
//游戏时排列图片
class ImgButtonAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
String emptyName= emptyButton.getName();
char emptyRow = emptyName.charAt(0);
char emptyCol = emptyName.charAt(1);
JButton clickButton = (JButton) e.getSource();
String clickName = clickButton.getName();
char clickRow = clickName.charAt(0);
char clickCol = clickName.charAt(1);
if (Math.abs(clickRow - emptyRow) + Math.abs(clickCol - emptyCol) == 1) {
emptyButton.setIcon(clickButton.getIcon());
clickButton.setIcon(new ImageIcon("image/"+ num+ "00.jpg"));
emptyButton = clickButton;
}
}
}
//换下一张图片
class NextButtonAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (num==5) {
num=0;
} else {
++num;
}
modelLabel.setIcon(new ImageIcon("image/"+num+"model.jpg"));
String[][] exactnessOrder = order();
int i= 0;
for (int row=0; row<4; row++) {
for (int col=0; col<4; col++) {
JButton button = (JButton) centerPanel.getComponent(i++);
button.setIcon(new ImageIcon(exactnessOrder[row][col]));
if(exactnessOrder[row][col].equals("image/"+ num+ "00.jpg"))
emptyButton=button;
}
}
}
}
//开局排列图片
class StartButtonAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
String[][] stochasticOrder = reorder();
int i= 0;
for (int row=0; row<4; row++) {
for (int col=0; col<4; col++) {
JButton button = (JButton) centerPanel.getComponent(i++);
button.setIcon(new ImageIcon(stochasticOrder[row][col]));
if(stochasticOrder[row][col].equals("image/"+ num+ "00.jpg"))
emptyButton=button;
}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java拼图游戏源码.zip
共110个文件
jpg:102个
class:4个
project:1个
0 下载量 83 浏览量
2023-06-14
18:07:28
上传
评论
收藏 1.18MB ZIP 举报
温馨提示
Java拼图游戏源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
Java拼图游戏源码.zip (110个子文件)
MedleyGame.class 5KB
MedleyGame$NextButtonAction.class 2KB
MedleyGame$ImgButtonAction.class 2KB
MedleyGame$StartButtonAction.class 2KB
.classpath 301B
MedleyGame.java 5KB
3model.jpg 62KB
5model.jpg 51KB
2model.jpg 42KB
0model.jpg 42KB
4model.jpg 41KB
1model.jpg 37KB
303.jpg 26KB
310.jpg 26KB
523.jpg 25KB
102.jpg 25KB
301.jpg 25KB
313.jpg 25KB
520.jpg 25KB
521.jpg 25KB
513.jpg 25KB
320.jpg 25KB
321.jpg 24KB
530.jpg 24KB
302.jpg 24KB
222.jpg 24KB
502.jpg 24KB
322.jpg 23KB
031.jpg 23KB
213.jpg 23KB
311.jpg 23KB
030.jpg 23KB
212.jpg 23KB
103.jpg 23KB
312.jpg 23KB
323.jpg 23KB
221.jpg 23KB
510.jpg 23KB
220.jpg 23KB
511.jpg 23KB
501.jpg 23KB
120.jpg 23KB
223.jpg 23KB
230.jpg 23KB
333.jpg 23KB
512.jpg 23KB
111.jpg 23KB
532.jpg 23KB
211.jpg 23KB
101.jpg 22KB
032.jpg 22KB
423.jpg 22KB
331.jpg 22KB
210.jpg 22KB
533.jpg 22KB
413.jpg 22KB
130.jpg 22KB
202.jpg 21KB
110.jpg 21KB
421.jpg 21KB
330.jpg 21KB
112.jpg 21KB
332.jpg 21KB
430.jpg 21KB
033.jpg 21KB
021.jpg 21KB
203.jpg 21KB
231.jpg 21KB
420.jpg 21KB
201.jpg 21KB
411.jpg 20KB
410.jpg 20KB
402.jpg 20KB
002.jpg 20KB
011.jpg 20KB
433.jpg 20KB
121.jpg 20KB
531.jpg 20KB
503.jpg 20KB
432.jpg 20KB
020.jpg 20KB
131.jpg 20KB
412.jpg 20KB
401.jpg 19KB
232.jpg 19KB
422.jpg 19KB
113.jpg 19KB
012.jpg 19KB
010.jpg 19KB
522.jpg 19KB
013.jpg 19KB
001.jpg 19KB
403.jpg 18KB
023.jpg 18KB
022.jpg 18KB
400.jpg 18KB
300.jpg 18KB
100.jpg 18KB
200.jpg 18KB
003.jpg 18KB
共 110 条
- 1
- 2
资源评论
阿星先森
- 粉丝: 153
- 资源: 1453
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功