public Game() { House = new House(); fOpponent = new Opponent(House.LivingRoom); NumMoves = 0; GameStatus = GameStatusEnum.InitialStatus; }
public Form1() { InitializeComponent(); CreateObjects(); opponent = new Opponent(stairs); ResetGame(false); }
// fonction d'initialisation void Start() { player = gameObjectPlayer.GetComponent(typeof(Player)) as Player; opponent = gameObjectOpponent.GetComponent(typeof(Opponent)) as Opponent; keyboardInput = new Vector3(); print("<start>"); }
public override double ShouldAccept() { // For debugging // VisualizeDeployPoints(); // check if the base meets the user's requirements if (!Opponent.MeetsRequirements(BaseRequirements.All)) { Log.Debug("[Red Line] Skipping this base because it doesn't meet the requirements"); return(0); } return(0.7); }
public override double ShouldAccept() { if (Opponent.MeetsRequirements(BaseRequirements.All)) { if (!SmartAirDeployHelpers.AllAirDefensesFound(TownHall.Find() == null ? TownHallLimits.Limits.Length - 1 : TownHall.Find().Level)) { return(0); } return(1); } return(0); }
void Start() { animationController = GetComponent <AnimationController>(); opponent = GameObject.FindGameObjectWithTag("Opponent"); opponentScript = opponent.GetComponent <Opponent>(); oppAnimator = opponent.GetComponent <Animator>(); player = GameObject.FindGameObjectWithTag("Player"); playerScript = player.GetComponent <Player>(); playerAnimator = player.GetComponent <Animator>(); opponentRigidBody = opponent.gameObject.GetComponent <Rigidbody>(); opponentCollider = opponent.GetComponent <CapsuleCollider>(); canPlay = true; }
public override void AttackFour() { bool move = Owner.Move(1); if (move) { bool hit = AAttackXY(1, 2); if (hit) { Opponent.Hurt(Fighter.rangen.Next(3, 7)); Opponent.Move(3); } } }
public override void AttackOne() { bool move = Owner.Move(1); if (move) { bool hit1 = AAttackXY(1, 2); bool hit2 = AAttackXY(2, 2); if (hit1 || hit2) { Opponent.Hurt(Fighter.rangen.Next(3, 7)); } } }
//reseting and restarting game session variables private void NewGameInit() { timer.Interval = 1000; timer.Enabled = true; timer.Tick += new EventHandler(timer_Tick); seconds = 0; game.Moves = 0; roundOngoing = true; game.LockUnlockCells(cells, true); HideShowControls(false); lblCongrats.Visible = false; currentPlayer = Team.X; winner = Opponent.None; }
public GameForm1(Language lang, Opponent player2) { InitializeComponent(); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; playerType = player2; music.MusicMaestro(2); this.lang = lang; if (lang == Language.swe) { Thread.CurrentThread.CurrentCulture = new CultureInfo("sv-SE"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("sv-SE"); } }
private void SetUpNextOpponentSpawn() { _opponentSpawnDisposable?.Dispose(); _opponentSpawnDisposable = _timingManager.Delay( TimeSpan.FromSeconds(Random.Range(GameRules.OpponentSpawnMinDuration, GameRules.OpponentSpawnMaxDuration)), () => { var spawn = GameRules.OpponentSpawns.GetRandom(); var opponent = new Opponent(spawn.FlightDirection); _opponentBehaviour.Bind(opponent, _boundProvider.GetWorldPosition(spawn.NormalizedLocation)); opponent.Death += OnOpponentDeath; }); }
private void AddclientTolatsuit_Click(object sender, EventArgs e) { if (dataGridView1.Rows.Count < 1 && AddNewOppnentInlistdataGridView.Rows.Count < 1) { MessageBox.Show("لا يوجد بيانات للاضافة", "", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { var curentLawsuit = context.lawsuits.Include(X => X.clients).FirstOrDefault(c => c.Id == curentlawsuit.Id); var alloppnent = context.opponents.Where(o => o.LawsuitId == curentLawsuit.Id).ToList(); foreach (var opp in oppnentlist) { foreach (var item in alloppnent) { if (opp.Name == item.Name && opp.Notes == item.Notes) { MessageBox.Show("يوجد خصم/ خصوم موجود بالفعل فى هذة الدعوى", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } } foreach (var opp in oppnentlist) { var newoppnent = new Opponent() { Name = opp.Name, Notes = opp.Notes, LawsuitId = curentLawsuit.Id }; context.opponents.Add(newoppnent); context.SaveChanges(); } foreach (var item in clientlist) { var client = context.clients.FirstOrDefault(c => c.Id == item.Id); curentLawsuit.clients.Add(client); } context.SaveChanges(); MessageBox.Show("تم الحفظ بنجاح", "تم الحفظ", MessageBoxButtons.OK, MessageBoxIcon.Information); dataGridView1.DataSource = null; AddNewOppnentInlistdataGridView.DataSource = null; loadMaingrid(); return; } catch { } }
private async Task <List <PlayerModel> > AddByePlayer(List <PlayerModel> playersModels) { PlayerModel byeModel = GetByePlayer(); var bye = await _context.Players .Where(p => p.Name == byeModel.Name) .FirstOrDefaultAsync(); if (bye == null) { _context.Players.Add(byeModel); try { await _context.SaveChangesAsync(); } catch (Exception) { } bye = await _context.Players .Where(p => p.Name == byeModel.Name) .FirstOrDefaultAsync(); Opponent opponent = new Opponent() { OpponentID = bye.GUID }; _context.Opponents.Add(opponent); try { await _context.SaveChangesAsync(); } catch (Exception) { } bye = await _context.Players .Where(p => p.Name == byeModel.Name) .FirstOrDefaultAsync(); bye.Opponents = new List <Opponent>() { opponent }; _context.Entry(bye).State = EntityState.Modified; await _context.SaveChangesAsync(); } bye = await _context.Players .Where(p => p.Name == byeModel.Name) .Include(p => p.Opponents) .FirstOrDefaultAsync(); playersModels.Add(bye); return(playersModels); }
// Check if one or both armies have been fully destroyed void AnnihilationCheck() { if (HasUnitsLeft() && !Opponent.HasUnitsLeft()) { Server.OnGameEnd(Game, GameOutcomeType.Annihilation, this); } else if (HasUnitsLeft() && !Opponent.HasUnitsLeft()) { Server.OnGameEnd(Game, GameOutcomeType.Annihilation, Opponent); } else { Server.OnGameEnd(Game, GameOutcomeType.MutualAnnihilation); } }
private void Attack(Cell currentCell) { if (currentCell.CellType == CellType.Ship) { currentCell.CellType = CellType.DestroyedShip; CheckIfAnyShipIsDestroyed(Ships); } currentCell.IsClicked = true; UnclickedCells--; this.Invalidate(); if (this.FieldType == FieldType.AIOpponent && currentCell.CellType != CellType.DestroyedShip) { Opponent.AIAttack(); } }
public Companion getClosestMeeple(Opponent _opp) { List <Companion> comps = SceneHandler.getAllMeeplesFromType <Companion>(); Companion closestMeeple = comps[0]; foreach (Companion comp in comps) { if (Map.distance(_opp.Pos, comp.Pos) < Map.distance(_opp.Pos, closestMeeple.Pos)) { closestMeeple = comp; } } return(closestMeeple); }
private void UpdateOpponent(string playerName, string prop, object value) { Opponent opp = opponentList[playerName]; switch (prop) { case (GameConstants.OppCardCountProp): opp.deckSize = (int)value; break; default: Debug.LogError("Unknown Opponent Prop passed to UpdateOpponent"); break; } }
public void onPlayerRespawn(Client player) { if (IsRaceOngoing) { Opponent curOp = Opponents.FirstOrDefault(op => op.Client == player); if (curOp == null || curOp.HasFinished || !curOp.HasStarted || curOp.CheckpointsPassed == 0) { SetUpPlayerForRace(player, CurrentRace, false, 0); } else { RespawnPlayer(player, CurrentRace, curOp.CheckpointsPassed - 1); } } }
public override double ShouldAccept() { if (!Opponent.MeetsRequirements(BaseRequirements.All)) { return(0); } if (GetCurrentSetting("Set Exposed Collecotors & Mines") == 1) { if (!SmartFourFingersHelper.IsBaseMinCollectorsAndMinesOutside(GetCurrentSetting("Acceptable Target Range"), GetCurrentSetting("Minimum Exposed Colloctors"), GetCurrentSetting("Minimum Exposed Mines"), AttackName, GetCurrentSetting("Debug Mode"))) { return(0); } } return(1); }
public void Perform(Opponent origin, Opponent target) { if (origin.CurrentAttributes.Magic >= 10 && origin.CurrentAttributes.Health < origin.BaseAttributes.Health) { origin.CurrentAttributes.Magic -= 10; origin.CurrentAttributes.Health += 30; } else { FSEGame.Singleton.BattleManager.AddToMessageQueue(String.Format( "It has no effect.")); } }
public UInt16 Score(Opponent origin, Opponent target) { UInt16 score = 0; if ((origin.CurrentAttributes.Health < target.CurrentAttributes.Health) && (origin.CurrentAttributes.Magic >= 10) && (origin.CurrentAttributes.Health < origin.BaseAttributes.Health / 2)) { score = 10; } return score; }
void Update() { //can be optimized Opponent[] opps = GameObject.FindObjectsOfType <Opponent>(); Opponent nearest = null; float dist = Mathf.Infinity; // tower range for rotation foreach (Opponent o in opps) { float d = Vector3.Distance(this.transform.position, o.transform.position); if (nearest == null || d < dist) { nearest = o; dist = d; } } if (nearest == null) { return; } //relook for opponents if none found //rotating tower / turret head Vector3 direct = nearest.transform.position - this.transform.position; Quaternion lookRot = Quaternion.LookRotation(direct); towerTransform.rotation = Quaternion.Euler(0, lookRot.eulerAngles.y, 0); //fire cooldown on tower fireCDLeft -= Time.deltaTime; //only fire after set time if (fireCDLeft <= 0 && range >= direct.magnitude) { fireCDLeft = fireCD; //reset fire cd Shoot(nearest); } void Shoot(Opponent o1) { GameObject bulletClone = Instantiate(BulletPreFab, this.transform.position, this.transform.rotation); Bullet b = bulletClone.GetComponent <Bullet>(); //create bullet obj and turn on script / send info b.GetComponent <Bullet>().enabled = true; b.target = o1.transform; b.dmg = damage; b.radius = rad; } }
/* Generate board for play */ void SetupBoard() { board = new GameObject[ROWS, COLS]; GameOver = false; WinText.GetComponent <WinTextBox>().ChangeText(3); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { board[i, j] = Instantiate(PlayableSpacePrefab, new Vector2(i * SpacePadding, j * SpacePadding), Quaternion.identity); board[i, j].GetComponent <PlayableSpace>().Setup(); } } turn = 1; myOpp = new Opponent(board, gameObject, ROWS, COLS, turn); }
private void SetOpponentPlayer() { _opponent = Opponent.Player; GameObject.Find("PlayerBackground").GetComponent <GenericMenuButtonBehavior> ().SetSpriteOn(); GameObject.Find("AIBackground").GetComponent <GenericMenuButtonBehavior>().SetSpriteOff(); GameObject.Find("EasyBackground").GetComponent <GenericMenuButtonBehavior> ().SetSpriteOff(); GameObject.Find("NormalBackground").GetComponent <GenericMenuButtonBehavior> ().SetSpriteOff(); GameObject.Find("HardBackground").GetComponent <GenericMenuButtonBehavior> ().SetSpriteOff(); GameObject.Find("WallBackground").GetComponent <GenericMenuButtonBehavior> ().SetSpriteOff(); GameObject.Find("NormalBouncesBackground").GetComponent <GenericMenuButtonBehavior> ().SetSpriteOff(); GameObject.Find("RandomBouncesBackground").GetComponent <GenericMenuButtonBehavior> ().SetSpriteOff(); if (_isTraining) { ActivateScoreSets(true); } }
public bool Equals(BoardState boardState) { if (!Player?.Equals(boardState?.Player) ?? false) { return(false); } if (!Opponent?.Equals(boardState?.Opponent) ?? false) { return(false); } if (GameType != boardState.GameType) { return(false); } return(true); }
void Start() { if (GetComponent <Player>() != null) { player = GetComponent <Player>(); foeOpponent = FindObjectOfType <Opponent>(); } else if (GetComponent <Opponent>() != null) { opponent = GetComponent <Opponent>(); foePlayer = FindObjectOfType <Player>(); } animator = GetComponentInChildren <Animator>(); character = GetComponentInChildren <Character>(); isKOSoundPlayed = false; }
// Update is called once per frame void Update() { //Optimize if possible down the line Opponent[] enemies = GameObject.FindObjectsOfType <Opponent>(); Opponent nearest = null; float dist = Mathf.Infinity; //tower range value foreach (Opponent e in enemies) //iterate through enemies { float d = Vector3.Distance(this.transform.position, e.transform.position); if (nearest == null || d < dist) { nearest = e; dist = d; } } if (nearest == null) //if no opponents gtfo { Debug.Log("No Enemies..."); return; } //rotation of towerhead Vector3 dir = nearest.transform.position - this.transform.position; Quaternion lookRot = Quaternion.LookRotation(dir); turretTransform.rotation = Quaternion.Euler(0, lookRot.eulerAngles.y, 0); fireCDLeft -= Time.deltaTime; if (fireCDLeft <= 0 && dir.magnitude <= range) { fireCDLeft = fireCD; Shoot(nearest); } void Shoot(Opponent e1) //this was changed from enemies e to Opponent e// { //TODO: Fix to Fire out tip of tower instead of object head GameObject BullGo = (GameObject)Instantiate(BulletObject, this.transform.position, this.transform.rotation); Bullet b = BullGo.GetComponent <Bullet>(); b.target = e1.transform; b.dmg = damage; b.radius = rad; } }
public Opponent Attack(Opponent opponent) { double damageMax; double damageMin; WriteLine("Attacking " + opponent.name + "..."); Random r = new Random(); if (this.level >= 3) { damageMax = 0.6f; damageMin = 0.4f; double damage = r.NextDouble() * (damageMax - damageMin) + damageMin; opponent.lives -= (int)(opponent.lives * damage); } else if (this.level == 2) { damageMax = 0.4f; damageMin = 0.2f; double damage = r.NextDouble() * (damageMax - damageMin) + damageMin; opponent.lives -= (int)(opponent.lives * damage); } else if (this.level == 1) { damageMax = 0.2f; damageMin = 0.0f; double damage = r.NextDouble() * (damageMax - damageMin) + damageMin; opponent.lives -= (int)(opponent.lives * damage); } if (opponent.lives <= 0) { opponent.isAlive = false; WriteLine("You killed " + opponent.name); } WriteLine("Opponent's lives left: " + opponent.lives); if (this.lives > 0) { opponent.Attack(this); } return(opponent); }
public override double ShouldAccept() { var avoidExposedAirDefense = 0; if (avoidExposedAirDefense == 1) { if (AllInOnePushHelper.IsAirDefenseExposed()) { return(0); } } if (Opponent.MeetsRequirements(BaseRequirements.All)) { return(1); } return(0); }
private void SearchGameAsync() { successfulSearchStart = model.SearchGame(); if (successfulSearchStart) { Opponent opponent = model.GetFoundMatch(); if (opponent == null) { navigator.CurrentViewModel = new HomeViewModel(connection, navigator, model.User); } navigator.CurrentViewModel = new MatchViewModel(connection, navigator, model.User, opponent); } else { navigator.CurrentViewModel = new HomeViewModel(connection, navigator, model.User); } }
/// <summary> /// Performs the move. /// </summary> /// <param name="origin">The actor who is performing this move.</param> /// <param name="target">The target actor of this move.</param> public void Perform(Opponent origin, Opponent target) { Boolean isCrtical = false; UInt16 damage = this.CalculateDamage(origin, target, out isCrtical); // :: Perform the action by reducing the target's health points. if (target.CurrentAttributes.Health - damage < 0) target.CurrentAttributes.Health = 0; else target.CurrentAttributes.Health -= damage; if (isCrtical) { FSEGame.Singleton.BattleManager.AddToMessageQueue( "It's a critical hit!"); } }
/// <summary> /// Performs the move. /// </summary> /// <param name="origin">The actor who is performing this move.</param> /// <param name="target">The target actor of this move.</param> public void Perform(Opponent origin, Opponent target) { if (origin.CurrentAttributes.Defence + 1 <= origin.BaseAttributes.Defence + 5) { origin.CurrentAttributes.Defence++; origin.CurrentAttributes.Magic -= 10; FSEGame.Singleton.BattleManager.AddToMessageQueue(String.Format( "{0}'s defence has increased!", origin.Name)); } else { FSEGame.Singleton.BattleManager.AddToMessageQueue(String.Format( "It has no effect.")); } }
public BattleController(MainCharacter player, Opponent enemy) { InitializeComponent(); //_player = hero; // lblName.Text = _player.Name.ToString(); +Name??!?! // print player stats lblLevel.Text = player.Level.ToString(); lblHitPoints.Text = player.Health.ToString(); lblManaPoints.Text = player.Mana.ToString(); lblExperience.Text = player.Experience.ToString(); // print opponent stats lblNameOpponent.Text = enemy.Level.ToString(); lblLevelOpponent.Text = enemy.Level.ToString(); lblHitPointsOpponent.Text = enemy.Health.ToString(); }
public ActionResult CreateOpponent(Opponent opponent) { if (opponent.Level >= 1 && opponent.Level <= 20) { if (ModelState.IsValid) { List <Opponent> Names = db.Opponents.ToList(); if (!Names.Contains(opponent)) // Checking so the name is not allready in use. { db.Opponents.Add(opponent); db.SaveChanges(); return(RedirectToAction("Index")); } } } return(View(opponent)); }
public void onPlayerRespawn(Client player) { if (IsRaceStarting) { SetUpPlayerForRace(player, CurrentRace, false, 0); } else if (IsRaceOngoing) { API.setPlayerToSpectator(player); Opponent curOp = Opponents.FirstOrDefault(op => op.Client == player); if (curOp == null) { return; } curOp.IsAlive = false; } }
public void OpponentMovement() { int displacement = NetStream.ReadByte(); Opponent.Translate(0, displacement); //Keep in screen bounds if (Opponent.Y < 0) { Opponent.Translate(0, -Opponent.Y); } else if (Opponent.Y > ScreenHeight - Opponent.Height) { Opponent.Translate(0, ScreenHeight - Opponent.Y - Opponent.Height); } }
/// <summary> /// 敵の行動パターン /// </summary> /// <param name="opponent"></param> private void DoOpponentTurn(Opponent opponent) { if (opponent == null) { return; } var card = opponent.AvailableCard(this.m_field); if (card == null) { this.DoPassPlayer(opponent); return; } this.PutCard(opponent, card); }
/// <summary> /// Calculates the damage. /// </summary> /// <param name="origin"></param> /// <param name="target"></param> /// <returns></returns> private UInt16 CalculateDamage(Opponent origin, Opponent target, out Boolean critical) { Random r = new Random(); critical = r.Next(10) == 5; return (UInt16)(this.CalculateBaseDamage(origin, target) * (critical ? 2 : 1)); }
private void ResetGame() { MessageBox.Show("You found me in " + totalMoves + " moves!"); IHidingPlace foundLocation = currentLocation as IHidingPlace; description.Text = "The opponent was hiding " + currentLocation.Name + " in " + totalMoves.ToString() + " moves. "; opponent = new Opponent(frontYard); hide.Visible = true; check.Visible = false; goHere.Visible = false; exits.Visible = false; goThroughTheDoor.Visible = false; totalMoves = 0; }
/// <summary> /// Determines if Dracula is playing Trap against a Hunter at the start of a combat /// </summary> /// <param name="game">The GameState</param> /// <param name="huntersInvolved">The list of Hunters involved in the combat</param> /// <param name="opponent">The Opponent</param> /// <param name="logic">The artificial intelligence component</param> /// <returns>True if Dracula successfully plays Trap</returns> private static bool DraculaIsPlayingTrap(GameState game, List<HunterPlayer> huntersInvolved, Opponent opponent, DecisionMaker logic) { if (logic.ChooseToPlayTrap(game, huntersInvolved, opponent)) { Console.WriteLine("Dracula is playing Trap"); game.Dracula.DiscardEvent(Event.Trap, game.EventDiscard); if (HunterPlayingGoodLuckToCancelDraculaEvent(game, Event.Trap, Event.Trap, logic) > 0) { Console.WriteLine("Trap cancelled"); return false; } return true; } return false; }
/// <summary> /// Resolves a combat between a group of Hunters and an Opponent /// </summary> /// <param name="game">The GameState</param> /// <param name="huntersInvolved">A list of HunterPlayers involved in the combat</param> /// <param name="opponent">The Opponent type</param> /// <param name="logic">The artificial intelligence component</param> /// <returns>True if the Hunters can continue resolving Encounters</returns> private static bool ResolveCombat(GameState game, List<HunterPlayer> huntersInvolved, Opponent opponent, DecisionMaker logic) { var roundsWithoutEscaping = 0; var answer = -1; do { Console.WriteLine( "Is anyone playing an Event at the start of this combat? 0= Nobody, {0}= {1}, {2}= {3}, {4}= {5}, {6}= {7}", (int)Hunter.LordGodalming, Hunter.LordGodalming.Name(), (int)Hunter.DrSeward, Hunter.DrSeward.Name(), (int)Hunter.VanHelsing, Hunter.VanHelsing.Name(), (int)Hunter.MinaHarker, Hunter.MinaHarker.Name()); while (answer == -1) { if (int.TryParse(Console.ReadLine(), out answer)) { if (answer < 0 || answer > 4) { answer = -1; } } } if (answer > 0) { var line = ""; Console.WriteLine("What Event is {0} playing? (cancel to cancel)", ((Hunter)answer).Name()); var eventBeingPlayed = Event.None; while (eventBeingPlayed != Event.AdvancePlanning && eventBeingPlayed != Event.EscapeRoute && eventBeingPlayed != Event.HeroicLeap && line.ToLower() != "cancel") { line = Console.ReadLine(); eventBeingPlayed = Enumerations.GetEventFromString(line); } if (line.ToLower() == "cancel") { answer = -1; } else { switch (eventBeingPlayed) { case Event.AdvancePlanning: game.Hunters[answer].DiscardEvent(game, Event.AdvancePlanning); if (!DraculaIsPlayingDevilishPowerToCancelEvent(game, Event.AdvancePlanning, Event.AdvancePlanning, logic, game.Hunters[answer])) { Console.WriteLine("One participant of your choice has combat rolls at +1 for this combat"); CheckForCardsRevealedForBeingBitten(game); } else { Console.WriteLine("Advance Planning cancelled"); CheckForCardsRevealedForBeingBitten(game); } break; case Event.EscapeRoute: game.Hunters[answer].DiscardEvent(game, Event.EscapeRoute); if (!DraculaIsPlayingDevilishPowerToCancelEvent(game, Event.EscapeRoute, Event.EscapeRoute, logic, game.Hunters[answer])) { Console.WriteLine("Combat cancelled", ((Hunter)answer).Name()); CheckForCardsRevealedForBeingBitten(game); return false; } CheckForCardsRevealedForBeingBitten(game); Console.WriteLine("Escape Route cancelled"); break; case Event.HeroicLeap: game.Hunters[answer].DiscardEvent(game, Event.HeroicLeap); if (!DraculaIsPlayingDevilishPowerToCancelEvent(game, Event.HeroicLeap, Event.HeroicLeap, logic, game.Hunters[answer])) { Console.WriteLine("Roll a die and enter the result"); var dieRoll = 0; while (dieRoll == 0) { if (int.TryParse(Console.ReadLine(), out dieRoll)) { if (dieRoll < 1 || dieRoll > 7) { dieRoll = 0; } } } game.Hunters[answer].AdjustHealth(-dieRoll); game.Dracula.AdjustBlood(-dieRoll); CheckForHunterDeath(game); CheckForCardsRevealedForBeingBitten(game); return false; } Console.WriteLine("Heroic Leap cancelled"); break; CheckForCardsRevealedForBeingBitten(game); } } answer = -1; } } while (answer != 0); answer = -1; if (opponent == Opponent.Dracula || opponent == Opponent.NewVampire) { Console.WriteLine("Is anyone playing Garlic at the start of this combat? 0= Nobody, {0}{1}{2}{3}", huntersInvolved.Find(h => h.Hunter == Hunter.LordGodalming) == null ? "" : "1= Lord Godalming", huntersInvolved.Find(h => h.Hunter == Hunter.DrSeward) == null ? "" : "2= Dr. Seward", huntersInvolved.Find(h => h.Hunter == Hunter.VanHelsing) == null ? "" : "3= Van Helsing", huntersInvolved.Find(h => h.Hunter == Hunter.MinaHarker) == null ? "" : "4= Mina Harker"); while (answer == -1) { if (int.TryParse(Console.ReadLine(), out answer)) { if (answer < 0 || answer > 4) { answer = -1; } else if (answer != 0 && huntersInvolved.Find(h => (int)h.Hunter == answer) == null) { answer = -1; } } else { answer = -1; } } if (answer > 0) { game.Hunters[answer].DiscardItem(game, Item.Garlic); CheckForCardsRevealedForBeingBitten(game); roundsWithoutEscaping = 3; } } if (DraculaIsPlayingTrap(game, huntersInvolved, opponent, logic)) { Console.WriteLine("Dracula played Trap. All of his combat rolls are at +1 for this combat"); } var rageTarget = DraculaIsPlayingRageAgainstHunter(game, huntersInvolved, logic); if (rageTarget != Hunter.Nobody) { Console.WriteLine("Dracula played Rage against {0} and must reveal all Items", rageTarget.Name()); DraculaLooksAtAllHuntersItems(game, game.Hunters[(int)rageTarget]); var itemDiscarded = logic.ChooseItemToDiscardWithRage(game, rageTarget); game.Hunters[(int)rageTarget].DiscardItem(game, itemDiscarded); Console.WriteLine("Dracula discarded {0}", itemDiscarded.Name()); roundsWithoutEscaping = 3; } var basicHunterCombatCards = new List<ItemCard> { new ItemCard(Item.Punch), new ItemCard(Item.Dodge), new ItemCard(Item.Escape) }; var enemyCombatCards = new List<EnemyCombatCard>(); switch (opponent) { case Opponent.MinionWithKnife: enemyCombatCards.Add(EnemyCombatCard.Punch); enemyCombatCards.Add(EnemyCombatCard.Dodge); enemyCombatCards.Add(EnemyCombatCard.Knife); break; case Opponent.MinionWithKnifeAndPistol: enemyCombatCards.Add(EnemyCombatCard.Punch); enemyCombatCards.Add(EnemyCombatCard.Dodge); enemyCombatCards.Add(EnemyCombatCard.Knife); enemyCombatCards.Add(EnemyCombatCard.Pistol); break; case Opponent.MinionWithKnifeAndRifle: enemyCombatCards.Add(EnemyCombatCard.Punch); enemyCombatCards.Add(EnemyCombatCard.Dodge); enemyCombatCards.Add(EnemyCombatCard.Knife); enemyCombatCards.Add(EnemyCombatCard.Rifle); break; case Opponent.Assassin: enemyCombatCards.Add(EnemyCombatCard.Punch); enemyCombatCards.Add(EnemyCombatCard.Dodge); enemyCombatCards.Add(EnemyCombatCard.Knife); enemyCombatCards.Add(EnemyCombatCard.Pistol); enemyCombatCards.Add(EnemyCombatCard.Rifle); break; case Opponent.Dracula: enemyCombatCards.Add(EnemyCombatCard.Claws); enemyCombatCards.Add(EnemyCombatCard.Dodge); enemyCombatCards.Add(EnemyCombatCard.EscapeMan); switch (game.TimeOfDay) { case TimeOfDay.Twilight: case TimeOfDay.Midnight: case TimeOfDay.SmallHours: enemyCombatCards.Add(EnemyCombatCard.EscapeBat); enemyCombatCards.Add(EnemyCombatCard.EscapeMist); enemyCombatCards.Add(EnemyCombatCard.Fangs); enemyCombatCards.Add(EnemyCombatCard.Mesmerize); enemyCombatCards.Add(EnemyCombatCard.Strength); break; } break; case Opponent.NewVampire: enemyCombatCards.Add(EnemyCombatCard.Claws); enemyCombatCards.Add(EnemyCombatCard.Dodge); switch (game.TimeOfDay) { case TimeOfDay.Twilight: case TimeOfDay.Midnight: case TimeOfDay.SmallHours: enemyCombatCards.Add(EnemyCombatCard.Fangs); enemyCombatCards.Add(EnemyCombatCard.Mesmerize); enemyCombatCards.Add(EnemyCombatCard.Strength); break; } break; } var firstRound = true; var repelled = false; var continueCombat = true; var sisterAgathaInEffect = (opponent == Opponent.Dracula && game.HunterAlly != null && game.HunterAlly.Event == Event.SisterAgatha); var enemyCombatCardChosen = EnemyCombatCard.None; var enemyTarget = Hunter.Nobody; while (continueCombat) { foreach (var h in huntersInvolved) { var itemUsedByHunterLastRound = h.LastCombatCardChosen; do { Console.WriteLine("Which combat card is {0} using this round?", h.Hunter.Name()); h.LastCombatCardChosen = Enumerations.GetItemFromString(Console.ReadLine()); } while (h.LastCombatCardChosen == Item.None); if (basicHunterCombatCards.Find(card => card.Item == h.LastCombatCardChosen) == null && h.ItemsKnownToDracula.Find(item => item.Item == h.LastCombatCardChosen) == null) { var itemDraculaNowKnowsAbout = game.ItemDeck.Find(card => card.Item == h.LastCombatCardChosen); h.ItemsKnownToDracula.Add(itemDraculaNowKnowsAbout); game.ItemDeck.Remove(itemDraculaNowKnowsAbout); } else if (itemUsedByHunterLastRound == h.LastCombatCardChosen && basicHunterCombatCards.Find(card => card.Item == h.LastCombatCardChosen) == null) { var itemDraculaAlreadyKnewAbout = h.ItemsKnownToDracula.Find(card => card.Item == itemUsedByHunterLastRound); if (itemDraculaAlreadyKnewAbout != null) { h.ItemsKnownToDracula.Remove(itemDraculaAlreadyKnewAbout); } if (h.ItemsKnownToDracula.Find(card => card.Item == itemUsedByHunterLastRound) == null) { var itemDraculaNowKnowsAbout = game.ItemDeck.Find(card => card.Item == h.LastCombatCardChosen); h.ItemsKnownToDracula.Add(itemDraculaNowKnowsAbout); game.ItemDeck.Remove(itemDraculaNowKnowsAbout); } h.ItemsKnownToDracula.Add(itemDraculaAlreadyKnewAbout); } } enemyCombatCardChosen = logic.ChooseCombatCardAndTarget(game, huntersInvolved, enemyCombatCards, firstRound, out enemyTarget, enemyCombatCardChosen, repelled, sisterAgathaInEffect, roundsWithoutEscaping); roundsWithoutEscaping--; var bloodCost = false; if (sisterAgathaInEffect && (enemyCombatCardChosen == EnemyCombatCard.Fangs || enemyCombatCardChosen == EnemyCombatCard.EscapeBat || enemyCombatCardChosen == EnemyCombatCard.EscapeMan || enemyCombatCardChosen == EnemyCombatCard.EscapeMist)) { game.Dracula.AdjustBlood(-2); bloodCost = true; } Console.WriteLine("{0} used {1} against {2}{3}", opponent.Name(), enemyCombatCardChosen.Name(), enemyTarget.Name(), bloodCost ? " at a cost of 2 blood" : ""); var line = ""; var index = 0; do { Console.WriteLine("What was the outcome? 1= Continue 2= Repel 3= Item destroyed or Event discarded 4= End"); line = Console.ReadLine(); if (int.TryParse(line, out index)) { if (index < 1 || index > 4) { index = 0; } } } while (index == 0); switch (index) { case 1: break; case 2: repelled = true; break; case 3: HunterPlayer hunterToDiscardCard = null; if (huntersInvolved.Count == 1) { hunterToDiscardCard = huntersInvolved.First(); } else { var hunterIndex = 0; do { Console.Write("Whose card is being discarded? "); foreach (var h in huntersInvolved) { Console.Write("{0}= {1} ", (int)h.Hunter, h.Hunter.Name()); } line = Console.ReadLine(); if (int.TryParse(line, out hunterIndex)) { foreach (var h in huntersInvolved) { if ((int)h.Hunter == hunterIndex) { hunterToDiscardCard = h; break; } } } } while (hunterToDiscardCard == null); } var itemDestroyed = Item.None; var eventDiscarded = Event.None; while (itemDestroyed == Item.None && eventDiscarded == Event.None) { Console.WriteLine("What card was discarded?"); line = Console.ReadLine(); itemDestroyed = Enumerations.GetItemFromString(line); eventDiscarded = Enumerations.GetEventFromString(line); } if (itemDestroyed != Item.None) { hunterToDiscardCard.DiscardItem(game, itemDestroyed); } else if (eventDiscarded != Event.None) { hunterToDiscardCard.DiscardEvent(game, eventDiscarded); } break; case 4: continueCombat = false; break; } firstRound = false; } var health = -1; foreach (var h in huntersInvolved) { Console.WriteLine("How much health does {0} have now?", h.Hunter.Name()); do { if (int.TryParse(Console.ReadLine(), out health)) { health = Math.Max(0, Math.Min(h.MaxHealth, health)); Console.WriteLine(health); } } while (health == -1); h.AdjustHealth(health - h.Health); } if (opponent == Opponent.Dracula) { Console.WriteLine("How much blood does Dracula have now?"); do { if (int.TryParse(Console.ReadLine(), out health)) { health = Math.Max(0, Math.Min(15, health)); Console.WriteLine(health); } } while (health == -1); game.Dracula.AdjustBlood(health - game.Dracula.Blood); } Console.WriteLine("Did {0} win? (An end result is a no)", huntersInvolved.Count() > 1 ? "the Hunters" : huntersInvolved.First().Hunter.Name()); string input; do { input = Console.ReadLine(); } while (!"yes".StartsWith(input.ToLower()) && !"no".StartsWith(input.ToLower())); if ("yes".StartsWith(input.ToLower())) { if (opponent == Opponent.NewVampire) { game.AdjustVampires(-1); } Console.WriteLine("Don't forget to register any cards discarded, such as Great Strength used to prevent health loss, Events due to enemy Knife wounds, Items consumed, etc."); return true; } if (opponent == Opponent.Dracula) { switch (enemyCombatCardChosen) { case EnemyCombatCard.Mesmerize: Console.WriteLine("{0} is bitten and must discard all Items!", enemyTarget.Name()); if (!HunterPlayingGreatStrengthToCancelBite(game, enemyTarget, logic)) { game.Hunters[(int)enemyTarget].AdjustBites(1); } while (game.Hunters[(int)enemyTarget].ItemCount > 0) { var line = ""; var itemDiscarded = Item.None; do { Console.WriteLine("What is the name of the Item being discarded?"); line = Console.ReadLine(); itemDiscarded = Enumerations.GetItemFromString(line); } while (itemDiscarded == Item.None); game.Hunters[(int)enemyTarget].DiscardItem(game, itemDiscarded); } CheckForHunterDeath(game); break; case EnemyCombatCard.Fangs: Console.WriteLine("{0} is bitten!", enemyTarget.Name()); if (!HunterPlayingGreatStrengthToCancelBite(game, enemyTarget, logic)) { game.Hunters[(int)enemyTarget].AdjustBites(1); } CheckForHunterDeath(game); goto case EnemyCombatCard.EscapeBat; case EnemyCombatCard.EscapeBat: Console.WriteLine("Dracula escaped in the form of a bat"); Location destination = logic.ChooseEscapeAsBatDestination(game); game.Dracula.EscapeAsBat(game, destination); logic.AddEscapeAsBatCardToAllTrails(game); int position = -1; if (game.HuntersAt(destination).Any() || destination == Location.CastleDracula) { position = game.Dracula.RevealCardInTrailWithLocation(destination); logic.EliminateTrailsThatDoNotContainLocationAtPosition(game, destination, position); } else { logic.EliminateTrailsThatHaveHuntersAtPosition(game, game.Dracula.CurrentLocationPosition); } break; } } Console.WriteLine("Don't forget to register any cards discarded, such as Great Strength used to prevent health loss or Items due to enemy Knife wounds"); foreach (HunterPlayer h in huntersInvolved) { h.LastCombatCardChosen = Item.None; } return false; }
public Form1() { InitializeComponent(); CreateObject(); opponent = new Opponent(frontYard); }
/// <summary> /// /// </summary> /// <param name="origin"></param> /// <param name="target"></param> public void PrePerform(Opponent origin, Opponent target) { FSEGame.Singleton.BattleManager.AddToMessageQueue(String.Format( "{0} uses its tentacles to suffocate {1}!", origin.Name, target.Name)); }
public static void DrawRibbon(Opponent op) { for (int i = 0; i < Form1.Cycles.Count; i++) { switch (op) { case Opponent.Computer: Form1.RibbonsCOM[Form1.RibbonsCOM.Count - 1].X2 = Form1.Cycles[i].X; Form1.RibbonsCOM[Form1.RibbonsCOM.Count - 1].Y2 = Form1.Cycles[i].Y; Form1.RibbonsCOM.Add(new RibbonCOM { X1 = Form1.Cycles[i].X, Y1 = Form1.Cycles[i].Y }); break; case Opponent.Human: Form1.RibbonsHU[Form1.RibbonsHU.Count - 1].X2 = Form1.Cycles[i].X; Form1.RibbonsHU[Form1.RibbonsHU.Count - 1].Y2 = Form1.Cycles[i].Y; Form1.RibbonsHU.Add(new RibbonHU { X1 = Form1.Cycles[i].X, Y1 = Form1.Cycles[i].Y }); break; } } }
public void PrePerform(Opponent origin, Opponent target) { FSEGame.Singleton.BattleManager.AddToMessageQueue(String.Format( "{0} heals himself and restores some health!", origin.Name)); }
/// <summary> /// Evaluates the current game state and returns a score for this /// move. /// </summary> /// <param name="origin"> /// The actor who is trying to evaluate this move. /// </param> /// <param name="target"> /// The target of this move. /// </param> /// <returns> /// Returns a score for this move based on the current state of the /// battle. A score of 0 means that the move cannot be performed. The /// higher the score the better. /// </returns> public UInt16 Score(Opponent origin, Opponent target) { UInt16 score = 5; if (origin.CurrentAttributes.Defence + 1 > origin.BaseAttributes.Defence + 5) { score = 0; } else if (origin.CurrentAttributes.Magic < 10) { score = 0; } else if (origin.CurrentAttributes.Health < target.CurrentAttributes.Health) { score -= 2; } return score; }
/// <summary> /// /// </summary> /// <param name="origin"></param> /// <param name="target"></param> public void PrePerform(Opponent origin, Opponent target) { FSEGame.Singleton.BattleManager.AddToMessageQueue(String.Format( "{0} attacks {1}!", origin.Name, target.Name)); }
public bool ChooseToPlayTrap(GameState game, List<HunterPlayer> huntersInvolved, Opponent opponent) { if (game.Dracula.EventHand.Find(card => card.Event == Event.Trap) != null) { if (opponent == Opponent.Dracula) { return true; } if (new Random().Next(0, 2) == 0) { return true; } } return false; }
public UInt16 Score(Opponent origin, Opponent target) { // :: The base score for this move is 1. This move is not very // :: powerful, but a good fallback with few conditions. UInt16 score = 1; // :: If this move deals enough damage to kill the opponent, // :: then this move is slightly more favourable. if (this.CalculateBaseDamage(origin, target) >= target.CurrentAttributes.Health) { score += 5; } return score; }
/// <summary> /// /// </summary> /// <param name="origin"></param> /// <param name="target"></param> /// <returns></returns> private UInt16 CalculateBaseDamage(Opponent origin, Opponent target) { // :: The base damage inflicted by this move is the performing // :: actor's current strength minus the target's defence value. Int32 damage = origin.CurrentAttributes.Strength - target.CurrentAttributes.Defence; // :: But always at least 1 health point. if (damage < 1) damage = 1; return (UInt16)damage; }
public Battle(Player player, Opponent opponent) { CurrentPlayer = player; CurrentOpponent = opponent; _combatEngine = new CombatEngine(); }
/// <summary> /// Calculates the damage. /// </summary> /// <param name="origin"></param> /// <param name="target"></param> /// <returns></returns> private UInt16 CalculateDamage(Opponent origin, Opponent target, out Boolean critical, out Boolean miss) { Random r = new Random(); critical = r.Next(10) == 5; miss = r.Next(20) == 10; if (miss) { return 0; } else { return (UInt16)(this.CalculateBaseDamage(origin, target) * (critical ? 2 : 1)); } }
public bool ChooseToPlayRelentlessMinion(GameState game, List<Hunter> huntersInvolved, Opponent opponent) { if (game.Dracula.EventHand.Find(card => card.Event == Event.RelentlessMinion) != null && new Random().Next(0, 2) == 0) { return true; } return false; }
public void GiveCard(Opponent WhoTakeCard) { int isCard = randomCard.Next (0, CardsPack.Count); if (WhoTakeCard == Opponent.Player) { PlayerPack.Add (CardsPack [isCard]); CardsPack.RemoveAt(isCard); } else { ComputerPack.Add(CardsPack[isCard]); CardsPack.RemoveAt(isCard); } }
public void PrePerform(Opponent origin, Opponent target) { FSEGame.Singleton.BattleManager.AddToMessageQueue(String.Format( "{0} surrounds the bridge with shadows!", origin.Name)); }
public void MoneyToWinner(Opponent Winner) { if (Winner == Opponent.Player) { PlayerBalance += Bank; } else if (Winner == Opponent.Computer) { ComputerBalance += Bank; } else if (Winner == Opponent.Nobody) { ComputerBalance += Bet; PlayerBalance += Bet; } }
public void PrintWinner(Opponent Winner) { Console.WriteLine("\n\nОчки компьютера: {0}\t\tВаши очки: {1}",Game.ComputerScore, Game.PlayerScore); if (Winner == Opponent.Computer) Console.WriteLine ("\nВы ПРОИГРАЛИ!"); else if (Winner == Opponent.Player) Console.WriteLine ("\nВы ВЫИГРАЛИ!"); else Console.WriteLine ("\nНИЧЬЯ!"); }
public void ShowCards(Opponent WhosePack) { if (WhosePack == Opponent.Player) { Console.WriteLine ("\nВаши карты:"); for (int i = 0; i < PlayerPack.Count; i++) { Console.Write ("\t{0} ", PlayerPack[i].view); if (PlayerPack [i].CardColor == Color.Clubs) Console.Write ("♣"); if (PlayerPack [i].CardColor == Color.Spades) Console.Write ("♠"); if (PlayerPack [i].CardColor == Color.Hearts) Console.Write ("♥"); if (PlayerPack [i].CardColor == Color.Diamonds) Console.Write ("♦"); } } if (WhosePack == Opponent.Computer) { Console.WriteLine ("\nКарты компьютера:"); for (int i = 0; i < ComputerPack.Count; i++) { Console.Write ("\t{0} ", ComputerPack [i].view); if (ComputerPack [i].CardColor == Color.Clubs) Console.Write ("♣"); if (ComputerPack [i].CardColor == Color.Spades) Console.Write ("♠"); if (ComputerPack [i].CardColor == Color.Hearts) Console.Write ("♥"); if (ComputerPack [i].CardColor == Color.Diamonds) Console.Write ("♦"); } } }
void Awake() { S = this; }
private void hide_Click(object sender, EventArgs e) { opponent = new Opponent(frontYard); for (int i = 0; i < 10; i++) { int theCount = i + 1; description.Text += theCount.ToString() + "... "; Application.DoEvents(); System.Threading.Thread.Sleep(200); opponent.Move(); } description.Text += "Ready or not, here I come! "; Application.DoEvents(); System.Threading.Thread.Sleep(500); RedrawForm(); }