首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将多个矩形添加到jframe(尝试以一种简单的方式编写2048代码)

要将多个矩形添加到JFrame并编写2048代码,可以按照以下步骤进行:

  1. 导入所需的Java类库:
代码语言:txt
复制
import javax.swing.*;
import java.awt.*;
  1. 创建一个继承自JPanel的自定义面板类,用于绘制矩形:
代码语言:txt
复制
class RectanglePanel extends JPanel {
    private int[][] board; // 存储矩形的数值
    private Color[] colors; // 存储不同数值对应的颜色

    public RectanglePanel(int[][] board) {
        this.board = board;
        this.colors = new Color[]{Color.WHITE, Color.CYAN, Color.BLUE, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.PINK, Color.MAGENTA, Color.RED, Color.GRAY};
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                int value = board[i][j];
                int x = j * 100 + 50; // 计算矩形的x坐标
                int y = i * 100 + 50; // 计算矩形的y坐标
                g.setColor(colors[value]); // 设置矩形的颜色
                g.fillRect(x, y, 100, 100); // 绘制矩形
                g.setColor(Color.BLACK);
                g.drawRect(x, y, 100, 100); // 绘制矩形的边框
                g.setColor(Color.WHITE);
                g.setFont(new Font("Arial", Font.BOLD, 40));
                g.drawString(String.valueOf(value), x + 40, y + 65); // 绘制矩形中的数值
            }
        }
    }
}
  1. 创建一个继承自JFrame的主窗口类,用于显示矩形面板:
代码语言:txt
复制
public class MainFrame extends JFrame {
    private int[][] board; // 存储矩形的数值
    private RectanglePanel rectanglePanel; // 矩形面板

    public MainFrame() {
        this.board = new int[4][4]; // 初始化矩形数值
        this.rectanglePanel = new RectanglePanel(board); // 创建矩形面板
        this.setLayout(new BorderLayout());
        this.add(rectanglePanel, BorderLayout.CENTER); // 将矩形面板添加到主窗口的中间位置
        this.setSize(500, 500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new MainFrame();
    }
}
  1. 编写2048游戏逻辑,通过监听键盘事件来控制矩形的移动和合并。这里只提供一个简单的示例,具体的游戏逻辑可以根据需求进行扩展:
代码语言:txt
复制
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class MainFrame extends JFrame {
    // ...

    public MainFrame() {
        // ...
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                super.keyPressed(e);
                int keyCode = e.getKeyCode();
                if (keyCode == KeyEvent.VK_UP) {
                    // 处理向上移动的逻辑
                } else if (keyCode == KeyEvent.VK_DOWN) {
                    // 处理向下移动的逻辑
                } else if (keyCode == KeyEvent.VK_LEFT) {
                    // 处理向左移动的逻辑
                } else if (keyCode == KeyEvent.VK_RIGHT) {
                    // 处理向右移动的逻辑
                }
                rectanglePanel.repaint(); // 重新绘制矩形面板
            }
        });
    }

    // ...
}

这样,你就可以将多个矩形添加到JFrame,并编写2048游戏的代码了。在游戏逻辑中,根据键盘事件来控制矩形的移动和合并,然后通过重新绘制矩形面板来更新界面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券