Commit dfdf2104 authored by 刘家荣's avatar 刘家荣 💬
Browse files

bugfix: 修正单例的bug,能跑了

parent 34de6e74
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -17,3 +17,19 @@ BugChess是一个在椰树精神的指导下开创的一个鲜榨项目,是一
远程协作简介戳这里[VCS.md](docs/VCS/VCS.md)

test分支可以拿来练习VCS操作

## 第二轮迭代:
AI 联机 弹幕 
### 提供接口
- J:
    - ChessClickController的AI的Timer,以及AI类的框架,猴子AI
    - AppController.connect, Client.connect,  
- Y:
  - 1
### 编写代码
- J:
    - 1
- Y:
    - 1
### 合并和debug
随缘(
 No newline at end of file
+1 −3
Original line number Diff line number Diff line
@@ -5,8 +5,6 @@ import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
        AppController.instance = new AppController();
        });
    }
}
+44 −10
Original line number Diff line number Diff line
@@ -6,7 +6,9 @@ import com.alibaba.fastjson2.JSONObject;
import model.History;
import model.game.Game;
import view.ChessGameFrame;
import view.GameStartFrame;

import javax.swing.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -30,11 +32,15 @@ public class AppController {
        try {
            read(savePath);
        } catch (IOException | JSONException e) {
            e.printStackTrace();
            savedGame = null;
            savedHistory = null;
        }
        ChessGameFrame mainFrame = new ChessGameFrame(1080, 720);
        mainFrame.setVisible(true);
    
        SwingUtilities.invokeLater(() -> {
            GameStartFrame.instance = new GameStartFrame();
            GameStartFrame.instance.setVisible(true);
        });
    }
    
    public History getSavedHistory() {
@@ -45,7 +51,13 @@ public class AppController {
        return savedGame;
    }
    
    public void switchStatus(AppStatus status1){
    /**
     * 实现不同状态的切换,START->GAME即为开始游戏,GAME->START即为返回主界面
     *
     * @param status1 要切换的目标状态
     * @param useSave 如果是进入游戏,那么是否调用存档
     */
    public void switchStatus(AppStatus status1, boolean useSave) {
        switch (this.status) {
            case START:
                switch (status1) {
@@ -54,7 +66,18 @@ public class AppController {
                    case ROOM:
                        break;
                    case GAME:
                    
                        if(useSave) {
                            Game.instance = savedGame;
                            History.instance = savedHistory;
                        }else {
                            Game.instance = new Game(true);
                            History.instance = new History(Game.instance.clone());
                        }
                        SwingUtilities.invokeLater(() -> {
                            GameStartFrame.instance.setVisible(false);
                            ChessGameFrame.instance = new ChessGameFrame(620, 895);
                            ChessGameFrame.instance.setVisible(true);
                        });
                }
                break;
            case ROOM:
@@ -65,9 +88,20 @@ public class AppController {
                        try {
                            write(savePath);
                        } catch (IOException | JSONException e) {
                        
                            e.printStackTrace();
                        }
                        try {
                            read(savePath);
                        } catch (IOException | JSONException e) {
                            e.printStackTrace();
                            savedGame = null;
                            savedHistory = null;
                        }
                        //
                        SwingUtilities.invokeLater(() -> {
                            ChessGameFrame.instance.setVisible(false);
                            GameStartFrame.instance = new GameStartFrame();
                            GameStartFrame.instance.setVisible(true);
                        });
                    case ROOM:
                        break;
                    case GAME:
+6 −1
Original line number Diff line number Diff line
@@ -34,10 +34,15 @@ public class Chessboard implements Serializable, Cloneable {
    //两个亡子堆->亡子堆组
    private SideStack[] sideStacks;

    public Chessboard(){
        this(false);
    }
    
    /**
     * 初始化整个棋盘,包括所有棋子和亡子堆
     */
    public Chessboard() {
    public Chessboard(boolean setInstance) {
        if(setInstance) Chessboard.instance = this;
        //遍历idGrid,全填-1,同时生成一个locationList包含每一个主棋盘的点位
        ArrayList<Site> siteList = new ArrayList<>();
        for (int i = 0; i < ROW_SIZE; i++) {
+9 −0
Original line number Diff line number Diff line
@@ -35,6 +35,15 @@ public class Game implements Cloneable{
        return currentColor;
    }
    
    public Game(){
        this(false);
    }
    
    public Game(boolean setInstance){
        if(setInstance) Game.instance = this;
        this.chessboard = new Chessboard(setInstance);
    }
    
    public Step resolveFlip(Chess chess){
        chess.setReversal(true);
        currentColor = currentColor == ChessColor.BLACK ? ChessColor.RED : ChessColor.BLACK;
Loading