コード例 #1
0
        public void OnMouseUp(object sender, MouseEventArgs e)
        {
            if (holdChess != null)
            {
                DeskCell cell = gamePage.Game.Desk.GetCellByMouse(e.Location);
                if (cell != null)
                {
                    this.InvokeEx(() =>
                    {
                        Point from = holdChess.Cell.Index;
                        if (gamePage.Game.Move(holdChess, cell.Index))
                        {
                            gamePage.Game.SwapPlayers();
                            socket.Send(Packet.MoveChessPacket(new ChessMoveData(from, cell.Index, ContenderPlayer.Name)));

                            if (IsEndGame)
                            {
                                socket.Send(Packet.EndGamePacket());
                                gamePage.Game.GameState = Game.State.Finish;
                                Page = selectContenderPage;
                                UpdateContendersList();
                                MessageBox.Show("Game over");
                            }
                            if (IsCheck)
                            {
                                MessageBox.Show("Check");
                            }
                        }
                        gamePage.GameControl.Repaint();
                        holdChess = null;
                    });
                }
            }
        }
コード例 #2
0
        public void OnMouseMove(object sender, MouseEventArgs e)
        {
            DeskCell cell = gamePage.Game.Desk.GetCellByMouse(e.Location);

            if (cell != null)
            {
                select.HoveredCell = cell;
                select.DrawingHovered.Rectangle = cell.Rectangle;

                if (holdChess != null)
                {
                    holdChess.Sprite.Position = new PointF(e.X - holdDiff.X, e.Y - holdDiff.Y);
                }
                gamePage.GameControl.Repaint();
            }
        }
コード例 #3
0
        public void OnMouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            DeskCell cell = gamePage.Game.Desk.GetCellByMouse(e.Location);

            if (cell != null)
            {
                Chess chess = cell.Chess;
                if (IsMyChess(chess) && IsMyMove())
                {
                    holdChess = chess;
                    holdDiff  = new PointF(e.X - chess.Sprite.Position.X, e.Y - chess.Sprite.Position.Y);
                }
                gamePage.GameControl.Repaint();
            }
        }
コード例 #4
0
ファイル: Desk.cs プロジェクト: WesternCivilization/Chess
        private void LoadCells()
        {
            GameColor currentType;

            for (int j = 0; j < 8; ++j)
            {
                currentType = (j % 2 == 0)
                    ?   GameColor.Black
                    :   GameColor.White;

                for (int i = 0; i < 8; ++i)
                {
                    cells[i, j] = new DeskCell(this, currentType, new Point(i, j));

                    currentType = (currentType == GameColor.Black)
                        ?   GameColor.White
                        :   GameColor.Black;
                }
            }
        }