gameview.java

来自「windows自带的扫雷游戏」· Java 代码 · 共 95 行

JAVA
95
字号
package mine.view;

import mine.model.*;
import mine.*;
import mine.view.*;
import mine.listener.*;
import javax.swing.*;
import java.awt.*;
import mine.control.*;

public class GameView
    extends JPanel
    implements TimeListener, InitListener {
    //timelistener
    QQButton qqbutton = new QQButton();
    MineLeaveView mineleaveview = new MineLeaveView();
    TimeView timeview = new TimeView();
    BlockViewsPanel blockViewsPanel = new BlockViewsPanel();
    GameConfigure gameconfig = GameConfigure.getInstance();
    JFrame frame;
    GameModel gamemodel;
    JPanel statusPanel = new JPanel();
    JPanel centerPanel = new JPanel();
    PanelManager panelManager = new PanelManager();
    public GameView(JFrame frame) {
        this.frame = frame;
        init();
    }

    public void init() {
        FlowLayout fl = new FlowLayout(FlowLayout.CENTER, 0, 0);
        centerPanel.setLayout(fl);
        centerPanel.add(qqbutton);
        centerPanel.setMinimumSize(new Dimension(28, 28));
        statusPanel.setLayout(new BorderLayout());
        statusPanel.add(mineleaveview, BorderLayout.WEST);
        statusPanel.add(centerPanel, BorderLayout.CENTER);
        statusPanel.add(timeview, BorderLayout.EAST);
        statusPanel.setSize(10, 28); //只为了高度
        panelManager.addGamePanel(blockViewsPanel, statusPanel);
        this.setSize(panelManager.getSize());
        this.setLayout(null);
        this.add(panelManager);
        frame.setSize(this.getWidth() + 7, this.getHeight() + 70);
        SwingUtilities.updateComponentTreeUI(frame);
    }

    public void setModel(GameModel gm) {
        gamemodel = gm;
        qqbutton.setModelAction(gm); //button和模型的联系
        gm.setGameTimeListener(this);
        gm.setMineLeaveCountListener(mineleaveview); //剩余雷数
        gm.setInitListener(this);
        blockViewsPanel.setModel(gm);
        blockViewsPanel.setGameMouselistener(qqbutton);
    }

//----------------------------------------
    public void gameTimeChange(int timenumber) {
        timeview.gameTimeChange(timenumber);
    }

    public void gameTimeEnd(int endreason) {
        qqbutton.gameTimeEnd(endreason);
        blockViewsPanel.gameTimeEnd(endreason);
        if (endreason == 0) {
            if (gameconfig.isNewRecorder(gameconfig.getLevel(),
                                         gamemodel.getGametime())) {
                UsernameDialog ud = new UsernameDialog(frame);
                String username = ud.getUsername();
                gameconfig.setGameRecoder(gameconfig.getLevel(),
                                          gamemodel.getGametime(),
                                          username);
            }
        }



    }

    public void gameTimeStart() {
        qqbutton.gameTimeStart();
    }

    public void gameinit() {
        timeview.init();
        blockViewsPanel.init();
        mineleaveview.init();
        qqbutton.init();
        init();

    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?