private void PlayDefence() { ///СДЕЛАТЬ: Когда шайба на своей половине поля и в руках у протинвика, /// то надо стоять перед вратарём и отбивать, когда подлетит /// if (isGotPuck()) { AimAndStrike(); } else { HockState = HockStateType.none; if (world.Puck.OwnerPlayerId == world.GetOpponentPlayer().Id&& !isOpponentClose() //|| isOpponentOnYourSide() ) { goToDefPosition(); } else if ((world.Puck.X > world.Width / 2 && amIRight) || (!amIRight && world.Puck.X < world.Width / 2)) { gotoPuck(); } // else if (Math.Abs(self.GetAngleTo(world.Puck) - // self.GetAngleTo(world.GetMyPlayer().NetFront, game.GoalNetTop + game.GoalNetHeight/2)) // <= 3*Math.PI/4) // { // move.Turn = self.GetAngleTo(world.GetMyPlayer().NetFront, // game.GoalNetTop + game.GoalNetHeight/2) - Math.PI/2; // move.SpeedUp = 0.1D; // } // Math.Abs(self.GetAngleTo(world.Puck) - // self.GetAngleTo(world.GetMyPlayer().NetFront, game.GoalNetTop + game.GoalNetHeight/2)) // > 5*Math.PI/4) // { // move.Turn // } else { goToDefPosition(); } //strikePuckIfFlyingClose(); } }
private void AimAndStrike() { if (HockState == HockStateType.none) { HockState = HockStateType.goingToAim; } if (self.GetDistanceTo(AimGoalPoint[0], AimGoalPoint[1]) > 100D && HockState == HockStateType.goingToAim) { turnToAim(); //if (speedAbs() < 3D) move.SpeedUp = 1D; //*turnToAim(); } else { HockState = HockStateType.aiming; //setSpeed(0); strikePuckWeak(); } }
private void PlayAttack() { if (isGotPuck()) { AimAndStrike(); } else { HockState = HockStateType.none; if (world.Puck.OwnerPlayerId == world.GetOpponentPlayer().Id) { KickOpp(); } else if ((world.Puck.X <= world.Width / 2 && amIRight) || (!amIRight && world.Puck.X >= world.Width / 2)) { gotoPuck(); } else { move.Turn = self.GetAngleTo(world.Puck); } } }