package StoneGame;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
public class MainStoneFrame extends JFrame implements KeyListener {
int HangZuoBiao;
int LieZuoBiao;
int[][] nums = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,0}
};
JFrame jf=new JFrame();
public MainStoneFrame() {
this.addKeyListener(this);
CreateFrame();
DislocateNums();
UseBlocks();
jf.setVisible(true);
}
public void CreateFrame() {
jf.setSize(514,595);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setTitle("石头迷阵 作者:yydslsy");
jf.setAlwaysOnTop(true);
jf.setLocationRelativeTo(null);
jf.setLayout(null);
}
public void DislocateNums() {
Random r=new Random();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
int n=r.nextInt(4);
int m=r.nextInt(4);
int temp=nums[i][j];
nums[i][j]=nums[n][m];
nums[n][m]=temp;
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if(nums[i][j]==0){
HangZuoBiao=i;
LieZuoBiao=j;
}
}
}
System.out.println(HangZuoBiao);
System.out.println(LieZuoBiao);
}
public void UseBlocks() {
super.getContentPane().removeAll();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
JLabel jlPicture=new JLabel(new ImageIcon("D:\\BaiduNetdiskDownload\\image\\"+nums[i][j]+".png"));
jlPicture.setBounds(50 + 100 * j, 90 + 100 * i, 100, 100);
jf.getContentPane().add(jlPicture);
}
}
JLabel jlBackGround=new JLabel(new ImageIcon("D:\\BaiduNetdiskDownload\\image\\background.png"));
jlBackGround.setBounds(26,30,450,484);
jf.getContentPane().add(jlBackGround);
super.getContentPane().repaint();
}
public void move(int code) {
if(code==37){
int temp=nums[HangZuoBiao][LieZuoBiao];
nums[HangZuoBiao][LieZuoBiao]=nums[HangZuoBiao][LieZuoBiao+1];
nums[HangZuoBiao][LieZuoBiao+1]=temp;
LieZuoBiao++;
}else if(code==38){
int temp=nums[HangZuoBiao][LieZuoBiao];
nums[HangZuoBiao][LieZuoBiao]=nums[HangZuoBiao+1][LieZuoBiao];
nums[HangZuoBiao+1][LieZuoBiao]=temp;
HangZuoBiao++;
}else if(code==39){
int temp=nums[HangZuoBiao][LieZuoBiao];
nums[HangZuoBiao][LieZuoBiao]=nums[HangZuoBiao][LieZuoBiao-1];
nums[HangZuoBiao][LieZuoBiao-1]=temp;
LieZuoBiao--;
}else if(code==40){
int temp=nums[HangZuoBiao][LieZuoBiao];
nums[HangZuoBiao][LieZuoBiao]=nums[HangZuoBiao-1][LieZuoBiao];
nums[HangZuoBiao-1][LieZuoBiao]=temp;
HangZuoBiao--;
}
}
@Override
public void keyReleased(KeyEvent e) {
int code=e.getKeyCode();
move(code);
UseBlocks();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
@Override public void keyTyped(KeyEvent e) {
}
@Override public void keyPressed(KeyEvent e) {
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
}
这是我想编写的一个数字华容道小游戏,这是其中的一个类,但是,在上下左右过后进行的刷新操作却失败了,帮帮我,悬赏1关注,球球了,或者认为代码有什么改进的也可以讲