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

联机记录

parent 1bb3d978
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -55,6 +55,13 @@ AI 联机 弹幕
    - 游戏界面的数据输出(player 和 visitor 的 list, 以及scores
    - roomFrame(选择 room 的 frame 或 panel)

### 合并和debug

随缘(
 No newline at end of file
### 合并和debug x1

- J
  - 修改Responser传递状态和人数
  - AppController状态切换的拆分
  - 错误检查
  - 弹窗选择模式
- Y
  - RoomFrame 的 createRoom refresh
  - SideStack不显示的问题
 No newline at end of file
+56 −15
Original line number Diff line number Diff line
@@ -4,12 +4,11 @@ import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONException;
import com.alibaba.fastjson2.JSONObject;
import model.History;
import model.game.Game;
import model.dataType.GameType;
import model.game.Game;
import view.Frame.AppFrame;
import view.GameForm;
import view.RoomsForm;
import view.StartForm;
import view.Frame.ChessGameFrame;
import view.RoomFrame;

import javax.swing.*;
import java.awt.event.WindowAdapter;
@@ -70,26 +69,67 @@ public class AppController {
    public void switchStatus(AppStatus status1, boolean useSave) {
        boolean success = true; //切换过程没有遇到任何问题阻止,哪里有问题就把它改成false
        switch (this.status) {
            case START: //从开始界面离开
                SwingUtilities.invokeLater(() -> {
                    AppFrame.instance.setVisible(false);
                });
                switch (status1) {
                    case START:
                        break;  //????????能进到这里的都不是一般人
                    case ROOM:  //进入房间界面
                        SwingUtilities.invokeLater(() -> {
                            RoomFrame.instance = new RoomFrame();
                            RoomFrame.instance.setVisible(true);
                        });
                        break;
                    case GAME:  //进入游戏界面
                        SwingUtilities.invokeLater(() -> {
                            ChessGameFrame.instance = new ChessGameFrame();
                            ChessGameFrame.instance.setVisible(true);
                        });
                        if (useSave) {
                            Game.instance = savedGame;
                            History.instance = savedHistory;
                        } else {
                            Game.instance = new Game(GameType.LOCAL_2P);
                            History.instance = new History(Game.instance.clone());
                        }
                        break;
                }
                break;
            case ROOM:
                SwingUtilities.invokeLater(() -> {
                    RoomFrame.instance.setVisible(false);
                });
                switch (status1) {
                    case START:
                        SwingUtilities.invokeLater(() -> {
                            AppFrame.instance = new AppFrame();
                            AppFrame.instance.setVisible(true);
                        });
                        break;
                    case ROOM:
                        break;
                    case GAME:
                    case GAME:  //进入游戏界面
                        SwingUtilities.invokeLater(() -> {
                            ChessGameFrame.instance = new ChessGameFrame();
                            ChessGameFrame.instance.setVisible(true);
                        });
                        if (useSave) {
                            Game.instance = savedGame;
                            History.instance = savedHistory;
                        } else {
                            Game.instance = new Game(GameType.LOCAL_2P, true);
                            Game.instance = new Game(GameType.LOCAL_2P);
                            History.instance = new History(Game.instance.clone());
                        }
                        //TODO 传ip port 开Client
                        break;
                }
                break;
            case ROOM:
                break;
            case GAME:
                SwingUtilities.invokeLater(() -> {
                    RoomFrame.instance.setVisible(false);
                });
                switch (status1) {
                    case START:
                        try {
@@ -112,15 +152,16 @@ public class AppController {
                }
                break;
        }
        AppFrame.instance.setContentPane(switch (status1){
            case START -> new StartForm().rootPanel;
            case ROOM -> new RoomsForm().rootPanel;
            case GAME -> new GameForm().rootPanel;
        });
//        AppFrame.instance.setContentPane(switch (status1){
//            case START -> new StartForm().rootPanel;
//            case ROOM -> new RoomsForm().rootPanel;
//            case GAME -> new GameForm().rootPanel;
//        });
        if (success) {
            this.status = status1;
        }
    }
    
    public void switchStatus(AppStatus status1) {
        this.switchStatus(status1, false);
    }
+1 −1
Original line number Diff line number Diff line
package controller;

import io.vavr.Tuple3;
import model.game.dataType.Msg;
import model.dataType.Msg;
import view.Frame.AppFrame;

import javax.swing.*;
+13 −7
Original line number Diff line number Diff line
@@ -3,13 +3,15 @@ import java.util.ArrayList;
import java.util.List;

public class Room {
    public final static List<Room> roomList = new ArrayList<>();
    //public final static List<Room> roomList = new ArrayList<>();
    
    public Room(String ip, int playerPort, int watcherPort, Account host) {
    public Room(String ip, int playerPort, int watcherPort, Account host, boolean isPlaying, int watcherNum) {
        this.ip = ip;
        this.playerPort = playerPort;
        this.watcherPort = watcherPort;
        this.host = host;
        this.isPlaying = isPlaying;
        this.watcherNum = watcherNum;
    }
    
    public String ip;
@@ -20,10 +22,14 @@ public class Room {
    
    public Account host;
    
    public static List<Room> getRoomList() {
        return roomList;
    }
    public boolean isPlaying;
    
    public int watcherNum;
//
//    public static List<Room> getRoomList() {
//        return roomList;
//    }
    public String toString(){
        return this.name + this.host + this.url;
        return this.host.getName() + "的房间";
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -54,6 +54,10 @@ public class SideStack implements Serializable, Cloneable {
            if (idGrid[i][x] < Chessboard.ID_DIVISION)
                c++;
            i++;
            if(i == ROW_SIZE){
                i--;
                break;
            }
        }
        return idGrid[i][x];
    }
Loading