Example #1
0
        private bool isPlayerCloseEnoughToBall()
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();
            double    playerDistanceToBall;

            if (clientId == 1)
            {
                playerDistanceToBall = GamePlay.calculateDistance(gameState.PictureHomePlayer1X, gameState.PictureHomePlayer1Y,
                                                                  gameState.PictureBallX, gameState.PictureBallY);
                if (playerDistanceToBall > 80.0)
                {
                    return(false);
                }
            }
            else
            {
                playerDistanceToBall = GamePlay.calculateDistance(gameState.PictureAwayPlayer1X, gameState.PictureAwayPlayer1Y,
                                                                  gameState.PictureBallX, gameState.PictureBallY);
                if (playerDistanceToBall > 80.0)
                {
                    return(false);
                }
            }
            return(true);
        }
Example #2
0
        public void doCommand()
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();

            // Ha a játékos rúgni szeretne ÉS a játékos elég közel van a labdához, akkor végrehajtódik
            // a labda mozgatása.
            if (kick && isPlayerCloseEnoughToBall())
            {
                // A paraméter meghatározza a labda mozgatásának mértékét. Az 1 a labdavezetés, a nagyobb rúgás.
                if (clientId == 1)
                {
                    doKicking(kickForce, gameState.PictureHomePlayer1X, gameState.PictureHomePlayer1Y);
                }
                else
                {
                    doKicking(kickForce, gameState.PictureAwayPlayer1X, gameState.PictureAwayPlayer1Y);
                }
            }

            // Ha a mozgás nem fér bele a játéktérbe, akkor nem hajtódik végre a játékos mozgatása.
            if (isPlayerMovingValid())
            {
                doPlayerMoving();
            }
        }
Example #3
0
 public void moveGoalKeeper()
 {
     // Ha a labda a 16-oson belül van, akkor a kapus elindul az irányába, hogy elrúgja azt.
     if (isBallCloseToGoal())
     {
         GameState gameState            = SingletonGameState.GetInstance().GetGameState();
         double    moveX                = gameState.PictureBallX - positionX;
         double    moveY                = gameState.PictureBallY - positionY;
         double    playerDistanceToBall = GamePlay.calculateDistance(positionX, positionY, gameState.PictureBallX, gameState.PictureBallY);
         if (playerDistanceToBall > 10)
         {
             positionX += (Int32)(2 * moveX / playerDistanceToBall);
             positionY += (Int32)(2 * moveY / playerDistanceToBall);
         }
         else
         {
             doKicking(40);
         }
     }
     else
     {
         if (this.id == 1)
         {
             positionX = 70;
             positionY = 249;
         }
         else
         {
             positionX = 708;
             positionY = 249;
         }
     }
 }
Example #4
0
        private bool isBallCloseToGoal()
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();

            if (gameState.PictureBallX > westBorder && gameState.PictureBallX < eastBorder &&
                gameState.PictureBallY > northBorder && gameState.PictureBallY < southBorder)
            {
                return(true);
            }
            return(false);
        }
Example #5
0
        public static SingletonGameState GetInstance()
        {
            lock (padlock)
            {
                if (SingletonGameState.instance == null)
                {
                    instance = new SingletonGameState();
                }

                return(instance);
            }
        }
Example #6
0
        public static void scoreHandler(int goal)
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();

            if (goal == 2)
            {
                gameState.Player1Value++;
            }
            else
            {
                gameState.Player2value++;
            }
            setInitialPosition();
        }
Example #7
0
        private void doKicking(int kickForce, int playerX, int playerY)
        {
            GameState gameState            = SingletonGameState.GetInstance().GetGameState();
            int       ballX                = gameState.PictureBallX;
            int       ballY                = gameState.PictureBallY;
            int       moveX                = ballX - playerX;
            int       moveY                = ballY - playerY;
            double    playerDistanceToBall = GamePlay.calculateDistance(playerX, playerY, ballX, ballY);
            int       targetBallPositionX  = ballX + (Int32)(2 * kickForce * moveX / playerDistanceToBall);
            int       targetBallPositionY  = ballY + (Int32)(2 * kickForce * moveY / playerDistanceToBall);

            if (kickForce == 1)
            {
                if (!GamePlay.isBallStillInGame(targetBallPositionX, targetBallPositionY))
                {
                    return;
                }

                gameState.PictureBallX = targetBallPositionX;
                gameState.PictureBallY = targetBallPositionY;
            }
            else
            {
                int i = 0;
                new Thread(delegate()
                {
                    while (true)
                    {
                        targetBallPositionX = gameState.PictureBallX + (Int32)(2 * kickForce * moveX / playerDistanceToBall) / 10;
                        targetBallPositionY = gameState.PictureBallY + (Int32)(2 * kickForce * moveY / playerDistanceToBall) / 10;

                        if (!GamePlay.isBallStillInGame(targetBallPositionX, targetBallPositionY))
                        {
                            return;
                        }

                        gameState.PictureBallX = targetBallPositionX;
                        gameState.PictureBallY = targetBallPositionY;

                        if (i == 10)
                        {
                            return;
                        }
                        i++;
                        Thread.Sleep(50);
                    }
                }).Start();
            }
        }
Example #8
0
        public static void setInitialPosition()
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();

            gameState.PictureHomePlayer1X     = 326;
            gameState.PictureHomePlayer1Y     = 249;
            gameState.PcictureHomeGoalKeeperX = 70;
            gameState.PcictureHomeGoalKeeperY = 249;
            gameState.PictureAwayPlayer1X     = 444;
            gameState.PictureAwayPlayer1Y     = 249;
            gameState.PictureAwayGoalKeeperX  = 708;
            gameState.PictureAwayGoalKeeperY  = 249;
            gameState.PictureBallX            = 397;
            gameState.PictureBallY            = 261;
        }
Example #9
0
        public void updatePositionInGameState()
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();

            if (this.id == 1)
            {
                gameState.PcictureHomeGoalKeeperX = positionX;
                gameState.PcictureHomeGoalKeeperY = positionY;
            }
            else
            {
                gameState.PictureAwayGoalKeeperX = positionX;
                gameState.PictureAwayGoalKeeperY = positionY;
            }
        }
Example #10
0
        private bool isPlayerMovingValid()
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();

            if (clientId == 1)
            {
                if (gameState.PictureHomePlayer1X + 2 * Convert.ToInt32(right) > 771)
                {
                    return(false);
                }
                if (gameState.PictureHomePlayer1X - 2 * Convert.ToInt32(Left) < 10)
                {
                    return(false);
                }
                if (gameState.PictureHomePlayer1Y - 2 * Convert.ToInt32(up) < 3)
                {
                    return(false);
                }
                if (gameState.PictureHomePlayer1Y + 2 * Convert.ToInt32(down) > 506)
                {
                    return(false);
                }
            }
            else
            {
                if (gameState.PictureAwayPlayer1X + 2 * Convert.ToInt32(right) > 771)
                {
                    return(false);
                }
                if (gameState.PictureAwayPlayer1X - 2 * Convert.ToInt32(Left) < 10)
                {
                    return(false);
                }
                if (gameState.PictureAwayPlayer1Y - 2 * Convert.ToInt32(up) < 3)
                {
                    return(false);
                }
                if (gameState.PictureAwayPlayer1Y + 2 * Convert.ToInt32(down) > 506)
                {
                    return(false);
                }
            }
            return(true);
        }
Example #11
0
        private void doPlayerMoving()
        {
            GameState gameState = SingletonGameState.GetInstance().GetGameState();

            if (clientId == 1)
            {
                gameState.PictureHomePlayer1X += 2 * Convert.ToInt32(right);
                gameState.PictureHomePlayer1X -= 2 * Convert.ToInt32(Left);
                gameState.PictureHomePlayer1Y -= 2 * Convert.ToInt32(up);
                gameState.PictureHomePlayer1Y += 2 * Convert.ToInt32(down);
            }
            else
            {
                gameState.PictureAwayPlayer1X += 2 * Convert.ToInt32(right);
                gameState.PictureAwayPlayer1X -= 2 * Convert.ToInt32(Left);
                gameState.PictureAwayPlayer1Y -= 2 * Convert.ToInt32(up);
                gameState.PictureAwayPlayer1Y += 2 * Convert.ToInt32(down);
            }
        }
Example #12
0
        private void doKicking(int kickForce)
        {
            GameState gameState            = SingletonGameState.GetInstance().GetGameState();
            double    moveX                = gameState.PictureBallX - positionX;
            double    moveY                = gameState.PictureBallY - positionY;
            double    playerDistanceToBall = GamePlay.calculateDistance(positionX, positionY, gameState.PictureBallX, gameState.PictureBallY);
            int       targetBallPositionX  = gameState.PictureBallX + (Int32)(2 * kickForce * moveX / playerDistanceToBall);
            int       targetBallPositionY  = gameState.PictureBallY + (Int32)(2 * kickForce * moveY / playerDistanceToBall);

            if (GamePlay.isBallMovingValid(targetBallPositionX, targetBallPositionY))
            {
                int i = 0;
                new Thread(delegate()
                {
                    while (true)
                    {
                        targetBallPositionX = gameState.PictureBallX + (Int32)(2 * kickForce * moveX / playerDistanceToBall) / 10;
                        targetBallPositionY = gameState.PictureBallY + (Int32)(2 * kickForce * moveY / playerDistanceToBall) / 10;

                        if (!GamePlay.isBallMovingValid(gameState.PictureBallX, gameState.PictureBallY))
                        {
                            return;
                        }

                        gameState.PictureBallX = targetBallPositionX;
                        gameState.PictureBallY = targetBallPositionY;

                        if (i == 10)
                        {
                            return;
                        }
                        i++;
                        Thread.Sleep(50);
                    }
                }).Start();
            }
        }