要将多个矩形添加到JFrame并编写2048代码,可以按照以下步骤进行:
import javax.swing.*;
import java.awt.*;
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); // 绘制矩形中的数值
}
}
}
}
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();
}
}
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游戏的代码了。在游戏逻辑中,根据键盘事件来控制矩形的移动和合并,然后通过重新绘制矩形面板来更新界面。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云