坑的地方

JLabel色块要调透明

方向键要用press方法

主界面

package game;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import java.awt.Color;

public class Game extends JFrame implements KeyListener{

    private JPanel contentPane;
    Block[][] block1=new Block[4][4];//色块
    GameSrc game=new GameSrc();//游戏类
    int[][] pane=new int[4][4];//游戏类的数据
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Game frame = new Game();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Game() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new GridLayout(4, 4, 5, 5));
        
        game.newgame();
        pane=game.getPane();
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                block1[i][j]=new Block();
                block1[i][j].setValue(pane[i][j]);
                contentPane.add(block1[i][j]);
            }
        }
        this.addKeyListener(this);

    }

    @Override
    public void keyTyped(KeyEvent e) {}

    @Override
    public void keyPressed(KeyEvent e) {
        // TODO 自动生成的方法存根
        if(e.getKeyCode()==KeyEvent.VK_LEFT){
            game.left();
            pane=game.getPane();
            for(int i=0;i<4;i++){
                for(int j=0;j<4;j++){
                    block1[i][j].setValue(pane[i][j]);
                }
            }
            if(game.gameOver()==1){
                JOptionPane.showMessageDialog(this, "you lose");
            }
        }
        else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
            game.right();
            pane=game.getPane();
            for(int i=0;i<4;i++){
                for(int j=0;j<4;j++){
                    block1[i][j].setValue(pane[i][j]);
                }
            }
            if(game.gameOver()==1){
                JOptionPane.showMessageDialog(this, "you lose");
            }
        }
        else if(e.getKeyCode()==KeyEvent.VK_DOWN){
            game.low();
            pane=game.getPane();
            for(int i=0;i<4;i++){
                for(int j=0;j<4;j++){
                    block1[i][j].setValue(pane[i][j]);
                }
            }
            if(game.gameOver()==1){
                JOptionPane.showMessageDialog(this, "you lose");
            }
        }
        else if(e.getKeyCode()==KeyEvent.VK_UP){
            game.up();
            pane=game.getPane();
            for(int i=0;i<4;i++){
                for(int j=0;j<4;j++){
                    block1[i][j].setValue(pane[i][j]);
                }
            }
            if(game.gameOver()==1){
                JOptionPane.showMessageDialog(this, "you lose");
            }
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO 自动生成的方法存根
        
    }

}
View Code

相关文章:

  • 2022-01-16
  • 2022-12-23
  • 2021-12-08
  • 2022-12-23
  • 2021-12-12
  • 2021-07-13
  • 2021-09-23
猜你喜欢
  • 2022-12-23
  • 2021-08-25
  • 2021-09-11
  • 2021-11-08
  • 2021-10-04
相关资源
相似解决方案