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); }
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(); } }
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; } } }
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); }
public static SingletonGameState GetInstance() { lock (padlock) { if (SingletonGameState.instance == null) { instance = new SingletonGameState(); } return(instance); } }
public static void scoreHandler(int goal) { GameState gameState = SingletonGameState.GetInstance().GetGameState(); if (goal == 2) { gameState.Player1Value++; } else { gameState.Player2value++; } setInitialPosition(); }
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(); } }
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; }
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; } }
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); }
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); } }
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(); } }