Java求助
  • 板块灌水区
  • 楼主yydslsy
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/9/3 15:08
  • 上次更新2023/11/2 22:54:48
查看原帖
Java求助
709534
yydslsy楼主2023/9/3 15:08
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关注,球球了,或者认为代码有什么改进的也可以讲

2023/9/3 15:08
加载中...