diff --git a/scr/tetris/NextBlockPanel.java b/scr/tetris/NextBlockPanel.java deleted file mode 100644 index 6f1cbc3..0000000 --- a/scr/tetris/NextBlockPanel.java +++ /dev/null @@ -1,96 +0,0 @@ -package tetris; - -import javax.swing.*; -import java.awt.*; - -public class NextBlockPanel extends JPanel { - private Block nextBlock; - private GamePanel gamePanel; - private JLabel scoreLabel; - private final ResourceManager resManager = ResourceManager.getInstance(); - - public NextBlockPanel() { - setPreferredSize(new Dimension(200, 600)); - setLayout(new BorderLayout()); - initUI(); - } - - public void setGamePanel(GamePanel gamePanel) { - this.gamePanel = gamePanel; - } - - private static final int[] SPEED_LEVELS = {800, 400, 200}; - - private void initUI() { - JPanel previewPanel = new JPanel() { - @Override - protected void paintComponent(Graphics g) { - super.paintComponent(g); - if (nextBlock == null) return; - - int[][] shape = nextBlock.getShape(); - int startX = (getWidth() - shape[0].length * 30) / 2; - int startY = (getHeight() - shape.length * 30) / 2; - - for (int i = 0; i < shape.length; i++) { - for (int j = 0; j < shape[i].length; j++) { - if (shape[i][j] == 1) { - int type = nextBlock.getType(); - Image blockImage = resManager.getBlockImage(type); - if (blockImage != null) { - g.drawImage(blockImage, startX + j * 30, startY + i * 30, 29, 29, this); - } - } - } - } - } - - @Override - public Dimension getPreferredSize() { - return new Dimension(150, 150); - } - }; - previewPanel.setBorder(BorderFactory.createTitledBorder("下一个方块")); - - scoreLabel = new JLabel("得分: 0", SwingConstants.CENTER); - scoreLabel.setFont(new Font("微软雅黑", Font.BOLD, 16)); - - JPanel controlPanel = new JPanel(new GridLayout(4, 1, 0, 10)); - controlPanel.setBorder(BorderFactory.createEmptyBorder(20, 10, 20, 10)); - - JComboBox combo = new JComboBox<>(new String[]{"简单", "中等", "困难"}); - JButton restartBtn = new JButton("重新开始"); - - combo.addActionListener(e -> { - int index = combo.getSelectedIndex(); - gamePanel.setFallSpeed((index >= 0 && index < SPEED_LEVELS.length) ? SPEED_LEVELS[index] : 500); - gamePanel.requestFocusInWindow(); - }); - - restartBtn.addActionListener(e -> { - gamePanel.newGame(); - updateScore(); - gamePanel.requestFocusInWindow(); - }); - - controlPanel.add(scoreLabel); - controlPanel.add(new JLabel("难度设置:")); - controlPanel.add(combo); - controlPanel.add(restartBtn); - - add(previewPanel, BorderLayout.CENTER); - add(controlPanel, BorderLayout.SOUTH); - - setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - revalidate(); - } - - public void setNextBlock(Block block) { - nextBlock = block; - repaint(); - } - - public void updateScore() { - SwingUtilities.invokeLater(() -> scoreLabel.setText("得分: " + gamePanel.getScore())); - } -} \ No newline at end of file