예제 #1
0
    public void OnAttackChess(int attackChess, int beAttackChess)
    {
        InputManager.ClearSelectChess();

        ChessEntity attack   = ChessManager.FindEntityByID(attackChess);
        ChessEntity beAttack = ChessManager.FindEntityByID(beAttackChess);

        if (attack == null || beAttack == null)
        {
            return;
        }

        Vector3 selfPos     = attack.transform.localPosition;
        Vector3 beAttackpos = new Vector3(ChessEntity.ChessInterval * (int)beAttack.chessObj.chess_index_x, 0, ChessEntity.ChessInterval * (int)beAttack.chessObj.chess_index_z);

        // 刚开始不能直接移动到要攻击的棋子旁边
        Vector3 pos = (beAttackpos - selfPos).normalized;

        pos *= Vector3.Distance(beAttackpos, selfPos) - ChessEntity.ChessInterval;
        pos += selfPos;
        attack.MoveTo(pos);

        // 开始释放技能
        attack.Target   = beAttack;
        beAttack.Target = attack;

        attack.UseNormalSkill();

        currentAttackChess = attack;

        fightMainUIPanel.SetStateInfoString("战斗中...");
    }
예제 #2
0
파일: Chess.cs 프로젝트: Minsteams/OurGame
 // Update is called once per frame
 void Update()
 {
     if (!ChessManager.isPlayer)
     {
         ChessManager.artificialPlayerPlayerFirst(0);
         x = ChessManager.x;
         y = ChessManager.y;
         ChessDown(Cc);
         ChessManager.isPlayer = true;
     }
     if (ChessManager.IfWin() != 0)
     {
         int judgement = ChessManager.IfWin();
         if (judgement == PLAYER)
         {
             PlayerWin();
         }
         else if (judgement == COMPUTER)
         {
             ComputerWin();
         }
         else if (judgement == appearingDraw)
         {
             DrawAppear();
         }
     }
 }
예제 #3
0
 // Use this for initialization
 void Start()
 {
     //保持棋子
     QiziMap.AddGameObject(x.ToString() + y.ToString(), gameObject);
     //初始化棋子
     ChessManager.GetInstant().InitQizi(current, new PointData(x, y, z), transform);
 }
예제 #4
0
 public void OnInputClicked(InputClickedEventData eventData)
 {
     //隐藏路线
     ChessManager.GetInstant().HidenRoad();
     ChessManager.GetInstant().ReleaseQizi();
     eventData.Use(); // Mark the event as used, so it doesn't fall through to other handlers.
 }
예제 #5
0
    //初始化逻辑棋盘和显示棋盘
    void NewRoundBeginAndInit()
    {
        ChessManager.NewRoundBeginAndInit();
        //销毁他娘的子物体
        Component[] g = GetComponentsInChildren <Transform>();
        foreach (Component a in g)
        {
            if (a != transform)
            {
                Destroy(a.gameObject);
            }
        }
        switch (Round)
        {
        case 1: ChessManager.isPlayer = false; break;

        case 2: ChessManager.isPlayer = true; break;

        case 3: ChessManager.isPlayer = false; break;

        case 4: ChessManager.isPlayer = true; break;

        case 5: ChessManager.isPlayer = false; break;
        }
    }
예제 #6
0
    private IEnumerator OnDeath()
    {
        PlayAction("Death");
        yield return(new WaitForSeconds(5));

        ChessManager.RemoveEntity(chessObj.id);
    }
 private void Start()
 {
     MainUIManager.OnStart();
     ChessManager.OnStart();
     Player1.OnStart();
     Player2.OnStart();
 }
 private void Update()
 {
     if (IsStart && !IsWin)
     {
         NowPlayer.OnUpdate();
         ChessManager.OnUpdate();
     }
 }
예제 #9
0
 public void OnFocusEnter()
 {
     //显示路线
     //   ChessManager.GetInstant().ShowRoad(current, new PointData(x, y, z));
     if (current == ChessManager.GetInstant().GetFenData().player1)
     {
         GetComponent <Renderer>().material.color = Color.red;
     }
 }
예제 #10
0
 public void OnFocusExit()
 {
     //隐藏路线
     //  ChessManager.GetInstant().HidenRoad();
     if (current == ChessManager.GetInstant().GetFenData().player1)
     {
         GetComponent <Renderer>().material.color = Color.white;
     }
 }
예제 #11
0
 public virtual void OnStart()
 {
     if(mainGameManager==null)
     {
         mainGameManager = MainGameManager.Instance;
         chessBoardManager = MainGameManager.Instance.ChessBoardManager;
         chessManager = MainGameManager.Instance.ChessManager;
     }
 }
예제 #12
0
    public void OnInputClicked(InputClickedEventData eventData)
    {
        int x = int.Parse(transform.name);
        int y = int.Parse(transform.parent.name);

        ChessManager.GetInstant().CheckAndMove(new PointData(x, y));
        //隐藏路线
        ChessManager.GetInstant().HidenRoad();
        eventData.Use(); // Mark the event as used, so it doesn't fall through to other handlers.
    }
예제 #13
0
    /// <summary>
    /// OnSourceLost
    /// </summary>
    public void OnSourceLost(SourceStateEventData eventData)
    {
        RemoveSourceIdFromHandMap(eventData.SourceId);
        UpdateStateMachine();
        eventData.Use();

        //移动棋子
        QiziScript qiziScrip = HostTransform.GetComponent <QiziScript>();
        PointData  start     = new PointData(qiziScrip.x, qiziScrip.y, qiziScrip.z);

        ChessManager.GetInstant().CheckAndMove(start, HostTransform.position);
    }
예제 #14
0
    public static void HideAllPath()
    {
        for (int idx = 0; idx <= 8; idx++)
        {
            for (int idz = 0; idz <= 9; idz++)
            {
                points[idx][idz].SetActive(false);
            }
        }

        ChessManager.SetUnCanAttackClick();
    }
예제 #15
0
 private void Awake()
 {
     gameManager       = this;
     chessboardVisible = true;
     isWhitePlayer     = true;
     AIPlaying         = false;
     round             = 1;//默认第一局是round1
     gameOver          = false;
     SetBools();
     SetInts();
     SetAIDifficulty();
 }
    private void Awake()
    {
        Instance          = this;
        ChessBoardManager = GameObject.Find("ChessBoard").GetComponent <ChessBoardManager>();
        ChessManager      = GameObject.Find("ChessManager").GetComponent <ChessManager>();
        MainUIManager     = GameObject.Find("UIRoot").GetComponent <MainUIManager>();

        switch (PlayerInfo.gameModel)
        {
        case PlayerInfo.GameModel.ManMachine:
            bool playerFirst = PlayerInfo.isPlayerFirst;
            Player1 = new Player().OnInit(playerFirst ? ChessType.White: ChessType.Black);
            switch (PlayerInfo.aiLevel)
            {
            case PlayerInfo.AILevel.Primary:
                Player2 = new AILevelOne();
                break;

            case PlayerInfo.AILevel.Intermediate:
                Player2 = new AILevelTwo();
                break;

            case PlayerInfo.AILevel.Senior:
                Player2 = new AILevelThree();
                break;

            default:
                break;
            }
            Player2.OnInit(playerFirst ? ChessType.Black : ChessType.White);
            NowPlayer = playerFirst? Player1:Player2;
            break;

        case PlayerInfo.GameModel.DoubleMan:
            Player1   = new Player().OnInit(ChessType.White);
            Player2   = new Player().OnInit(ChessType.Black);
            NowPlayer = Player1;
            break;

        case PlayerInfo.GameModel.Net:
            Debug.Log("还没有做");
            break;

        default:
            break;
        }

        ChessBoardManager.OnAwake();
        ChessManager.OnAwake();
        MainUIManager.OnAwake();
        Player1.OnAwake();
        Player2.OnAwake();
    }
예제 #17
0
        public void PawnPromoted_GoodWorkflow_Success()
        {
            LocalChessManager = new ChessManager();
            CurrentGid        = LocalChessManager.GetNewGame();
            int nextPlayer;

            nextPlayer = Play(1, 1, 2, 1, 3).NextPlayerToPlay;
            nextPlayer = Play(2, 1, 7, 1, 5).NextPlayerToPlay;
            nextPlayer = Play(1, 2, 1, 3, 3).NextPlayerToPlay;
            nextPlayer = Play(2, 1, 5, 1, 4).NextPlayerToPlay;
            nextPlayer = Play(1, 3, 3, 1, 4).NextPlayerToPlay;
            nextPlayer = Play(2, 1, 8, 1, 5).NextPlayerToPlay;
            nextPlayer = Play(1, 1, 4, 3, 3).NextPlayerToPlay;
            nextPlayer = Play(2, 1, 5, 2, 5).NextPlayerToPlay;
            nextPlayer = Play(1, 1, 3, 1, 4).NextPlayerToPlay;
            nextPlayer = Play(2, 2, 5, 3, 5).NextPlayerToPlay;
            nextPlayer = Play(1, 1, 4, 1, 5).NextPlayerToPlay;
            nextPlayer = Play(2, 3, 5, 2, 5).NextPlayerToPlay;
            nextPlayer = Play(1, 1, 5, 1, 6).NextPlayerToPlay;
            nextPlayer = Play(2, 2, 5, 3, 5).NextPlayerToPlay;
            nextPlayer = Play(1, 1, 6, 1, 7).NextPlayerToPlay;
            nextPlayer = Play(2, 3, 5, 2, 5).NextPlayerToPlay;
            var grid = Play(1, 1, 7, 1, 8);

            Assert.AreEqual(9, grid.NumberLines);
            var extraPawn = grid.PawnLocations.Where(p => p.Coord.y == 9);

            Assert.AreEqual(4, extraPawn.Count());
            Assert.AreEqual(1, grid.MoveNumber);
            Assert.AreEqual(1, grid.NextPlayerToPlay);
            //Choice of taking ... A queen!
            Grid ToReturn = LocalChessManager.Play(CurrentGid, new Move()
            {
                PlayerNumber = 1, Positions = new List <Pawn> {
                    new Pawn("", 1, 9)
                }
            });

            CurrentGid = ToReturn;

            nextPlayer = Play(2, 2, 5, 3, 5).NextPlayerToPlay;
            Assert.AreEqual(1, grid.NextPlayerToPlay);
            grid = Play(1, 1, 8, 1, 2);
            Assert.AreEqual(2, grid.NextPlayerToPlay);
            var newQueen = grid.PawnLocations.Where(p => p.Coord.x == 1 && p.Coord.y == 2).FirstOrDefault();

            Assert.IsNotNull(newQueen);
        }
예제 #18
0
    public void ExportGame()
    {
        if (!hasGameEnded)
        {
            return;
        }

        ChessManager manager = chessManagerObject.GetComponent <ChessManager>();

        string[] pgnHeading = manager.ExportGameInPGNFormat();

        if (pgnHeading != null)
        {
            myScoreSheet.ExportGameAsPGN(pgnHeading[0], pgnHeading[1], pgnHeading[2], pgnHeading[3], pgnHeading[4], pgnHeading[5], pgnHeading[6], terminationString);
        }
    }
예제 #19
0
    private void Update()
    {
        FenData fen = ChessManager.GetInstant().GetFenData();

        if (fen.player1 == fen.current)
        {
            //什么都不干
        }
        else
        {
            //锁定棋盘
            //没完 lock游戏画面
            //电脑走棋
            ChessManager.GetInstant().DianNaoZouQi();
        }
    }
예제 #20
0
    void Start()
    {
        GameEventManager.CreateInstance();
        LayerManager.CreateInstance();
        TimerManager.CreateInstance();
        GUIManager.CreateInstance();
        GameStateManager.CreateInstance();
        EmitNumberManager.CreateInstance();

        InputManager.CreateInstance();
        ChessManager.CreateInstance();
        ChessPathManager.CreateInstance();

        GameObject reporter = transform.Find("Reporter").gameObject;

        reporter.SetActive(HasReporter);
    }
예제 #21
0
 public void OnInputClicked(InputClickedEventData eventData)
 {
     if (current == ChessManager.GetInstant().GetFenData().player1)
     {
         // Increase the scale of the object just as a response.
         PointData point = new PointData(x, y, z);
         //隐藏路线
         ChessManager.GetInstant().HidenRoad();
         ChessManager.GetInstant().SetSelected(point);
         ChessManager.GetInstant().ShowRoad(current, point);
     }
     else
     {
         PointData point = new PointData(x, y, z);
         ChessManager.GetInstant().CheckAndMove(point);
     }
     eventData.Use(); // Mark the event as used, so it doesn't fall through to other handlers.
 }
예제 #22
0
    private void Awake()
    {
        Instance = this;
        allGrids = new Grids[colNum, rowNum];

        for (int i = 0; i < colNum; i++)
        {
            for (int j = 0; j < rowNum; j++)
            {
                allGrids[i, j] = transform.GetChild(j * colNum + i).GetComponent <Grids>();
            }
        }


        foreach (var v in allGrids)
        {
            v.InitGrid(chess);
        }
    }
예제 #23
0
 public static ChessManager GetNewInstant()
 {
     chessManager = new ChessManager();
     return(chessManager);
 }
예제 #24
0
 public void setChessManager(ChessManager manager)
 {
     chessManager = manager;
 }
예제 #25
0
    private void OnReady()
    {
        Ready = true;

        ChessManager.AddEntity(this);
    }
예제 #26
0
 // Use this for initialization
 void Start()
 {
     //初始化棋盘路线
     ChessManager.GetNewInstant().HidenRoad();
 }
예제 #27
0
 public AIIOManager(ChessManager cm, ChessAI p1, ChessAI p2)
 {
     chessManager = cm;
     player1      = p1;
     player2      = p2;
 }
예제 #28
0
 void Start()
 {
     main      = GameObject.Find("Main Camera").GetComponent <ChessManager>();
     pawnAtEnd = false;
     Target    = new Vector3(-100f, -100f, -100f);
 }
예제 #29
0
 public void ResetQiPan()
 {
     //锁定棋盘,电脑走棋。
     ChessManager.GetInstant().ResetQiPan();
 }
예제 #30
0
 void Start()
 {
     main = GameObject.Find("Main Camera").GetComponent <ChessManager>();
 }