public override void Atack(Player player, GameTime gameTime) { if (!IsReloading) { MissileBase missile = new MissileBase(player, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - player.PlayerBase.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); MissileBase missile2 = new MissileBase(player, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - player.PlayerBase.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); MissileBase missile3 = new MissileBase(player, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - player.PlayerBase.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); GameEffectsEngine.Add(missile); GameEventEngine.Add(new GameEventDelayed(() => { GameEffectsEngine.Add(missile2); }, 0.04)); GameEventEngine.Add(new GameEventDelayed(() => { GameEffectsEngine.Add(missile3); }, 0.08)); GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); IsReloading = true; } }
public Explosion(Force myForce, Player me) { MyForce = myForce; Me = me; IsFinished = false; Texture = TexturePack.explosion; GameEventEngine.Add(new GameEventDelayed(() => { IsFinished = true; }, TimeOfExplosion)); }
public void AddCash(GameTime gameTime) { if (IsIncome == true) { IsIncome = false; GameEventEngine.Add(new GameEventDelayed(() => { Cash += Income; IsIncome = true; }, IncomeTime)); } }
public DroneCarrierForce(GameTime gameTime) { Id = ForcesType.DroneCarrierForce; Hp = ForceParametrsPack.Hp[(int)Id]; Range = 1; Speed = 40; Armor = 0.9; AtackPoints = 1; Accuracy = 0.99; Texture = TexturePack.droneCarrierForce; ReloadTime = 0.2; IsReloading = true; GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); }
public RifleForce(GameTime gameTime) { Id = ForcesType.RifleForce; Hp = ForceParametrsPack.Hp[(int)Id]; Range = 2; Speed = 60; Armor = 0.9; AtackPoints = 2; Accuracy = 0.9; Texture = TexturePack.rifleForce; ReloadTime = 0.1; IsReloading = true; GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); }
public CannonForce(GameTime gameTime) { Id = ForcesType.CannonForce; Hp = ForceParametrsPack.Hp[(int)Id]; Range = 3; Speed = 20; Armor = 0.65; AtackPoints = 90; Accuracy = 0.4; Texture = TexturePack.cannonForce; ReloadTime = 5.0; IsReloading = true; GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); }
public RocketForce(GameTime gameTime) { Id = ForcesType.RocketForce; Hp = ForceParametrsPack.Hp[(int)Id]; Range = 4; Speed = 40; Armor = 0.8; AtackPoints = 20; Accuracy = 0.5; Texture = TexturePack.rocketForce; ReloadTime = 3.0; IsReloading = true; GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); }
public virtual void Atack(Player player, Force enemyForce, GameTime gameTime) { if (!IsReloading) { Missile missile = new Missile(player, enemyForce, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - enemyForce.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); GameEffectsEngine.Add(missile); GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); IsReloading = true; } }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { data = new DataCollector(); bot = new Bot(); win = new Win(); player1 = new Player(Size, 1, data); player2 = new Player(Size, 2, data); TexturePack.TexturePackLoad(this); fontPack = new FontPack(this); userInterface = new UserInterface(player1, player2, fontPack, data); GameEventEngine.Add(new GameEventCyclic(() => { if (player1.IsInactive == true) { LearnInputOutput learning = new LearnInputOutput(player2.ListOfForces, player1.ListOfForces, player1.Upgrades, player1.Cash, 5); data.WriteToFile(learning); } else { player1.IsInactive = true; } }, 15, int.MaxValue)); base.Initialize(); }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } GameEventEngine.Update(gameTime); GameEffectsEngine.Update(gameTime); //Interface class update userInterface.Update(gameTime, bot); //Player update logic player1.Update(player2, gameTime); player2.Update(player1, gameTime); player1.DestroyNoHp(player2); player2.DestroyNoHp(player1); player1.AddCash(gameTime); player2.AddCash(gameTime); //Win condition Winner = win.CheckWin(player1, player2); //Bot decisions logic (comment to play player vs player) if (bot.IsStarted == true) { bot.Proceed(bot.Decision(player1, player2), player1, player2, gameTime); } if (Winner != 0) { GameEventEngine.Add(new GameEventDelayed(() => { Exit(); }, 10)); } base.Update(gameTime); }