You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
52 lines
1.6 KiB
package tetris;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.WindowAdapter;
|
|
import java.awt.event.WindowEvent;
|
|
|
|
public class Tetris extends JFrame {
|
|
private final ResourceManager resManager = ResourceManager.getInstance();
|
|
private CardLayout cardLayout = new CardLayout();
|
|
private JPanel container = new JPanel(cardLayout);
|
|
|
|
public Tetris() {
|
|
initUI();
|
|
resManager.playPrepareMusic();
|
|
}
|
|
|
|
private void initUI() {
|
|
setTitle("俄罗斯方块");
|
|
setSize(510, 650);
|
|
setResizable(false);
|
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
|
|
NextBlockPanel rightPanel = new NextBlockPanel();
|
|
GamePanel gamePanel = new GamePanel(rightPanel);
|
|
rightPanel.setGamePanel(gamePanel);
|
|
|
|
PreparePanel preparePanel = new PreparePanel(() -> {
|
|
cardLayout.show(container, "game");
|
|
resManager.playBackgroundMusic(); // 只需调用这个方法即可
|
|
gamePanel.requestFocusInWindow();
|
|
});
|
|
|
|
container.add(preparePanel, "prepare");
|
|
container.add(createGameContainer(gamePanel, rightPanel), "game");
|
|
|
|
add(container);
|
|
setLocationRelativeTo(null);
|
|
setVisible(true);
|
|
}
|
|
|
|
private JPanel createGameContainer(GamePanel gamePanel, NextBlockPanel rightPanel) {
|
|
JPanel panel = new JPanel(new BorderLayout());
|
|
panel.add(gamePanel, BorderLayout.CENTER);
|
|
panel.add(rightPanel, BorderLayout.EAST);
|
|
return panel;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
SwingUtilities.invokeLater(Tetris::new);
|
|
}
|
|
} |