Exemple #1
0
        private void checkWinner()
        {
            int c = 0;
            if (builtCitadel == false)
            {
                for (int i = 0; i < 37; i++)
                {
                    if (GameBoard.Game.getMap().getHexList()[i].getFort() == 4)
                        c++;
                }
                if (c == 1)
                {
                    //Player win
                    //if (GameBoard.Game.getMap().getHexList()[i].getFort() == 4)
                    //GameBoard.Game.win(GameBoard.Game.getMap().getHexList()[i].getPlayer());
                    WinMessage wm = new WinMessage(currentPlayer.getName());

                    wm.Show();

                }
            }
        }
Exemple #2
0
        public void resolveCombat(Tile t)
        {
            bool resolved = false;
            int attacker = 0;
            int defender = t.getPlayer().getPlayerNumber();
            for (int i = 1; i < 5; i++)
            {
                if (i != defender)
                {
                    if (t.doesPlayerHaveStack(i))
                        attacker = i;
                }
            }

            BattleForm combatF;

            List<Thing> attackerStack = t.getPlayerStack(attacker);
            List<Thing> defenderStack = t.getPlayerStack(defender);

            Random r = new Random();
            int attackerRolls = 0;
            int defenderRolls = 0;

            foreach (Thing aThing in attackerStack)
            {
                if (aThing.combatScore() <= r.Next(1, 7))
                    attackerRolls++;
            }

            foreach (Thing aThing in defenderStack)
            {
                if (aThing.combatScore() <= r.Next(1, 7))
                    defenderRolls++;
            }

            combatF = new BattleForm(attackerStack, defenderStack, attackerRolls, defenderRolls, attacker, defender);
            DialogResult dResult = combatF.ShowDialog();

            //Tile stack for attacker is refreshed
            this.hex.clearPlayerStack(attacker);
            foreach (Thing aThing in combatF.getAttackerStack())
                this.hex.addToPlayerStack(attacker, aThing);
            KNT_Game.removeStack(stacks[attacker]);
            if (this.hex.doesPlayerHaveStack(attacker))
            {
                stacks[attacker] = KNT_Game.createStack(this.hex, this.hex.getPlayerStack(attacker), spriteBatch);
                if (attacker == 1)
                    stacks[attacker].Location(0 + topleft.X, 35 + topleft.Y);
                if (attacker == 2)
                    stacks[attacker].Location(25 + topleft.X, 35 + topleft.Y);
                if (attacker == 3)
                    stacks[attacker].Location(0 + topleft.X, 65 + topleft.Y);
                if (attacker == 4)
                    stacks[attacker].Location(25 + topleft.X, 65 + topleft.Y);

                stacks[attacker].thingsInStack = this.hex.getPlayerStack(attacker);
            }

            //Tile stack for defender is refreshed
                this.hex.clearPlayerStack(defender);
            foreach (Thing aThing in combatF.getDefenderStack())
                this.hex.addToPlayerStack(defender, aThing);
            KNT_Game.removeStack(stacks[defender]);
            if (this.hex.doesPlayerHaveStack(defender))
            {
                stacks[defender] = KNT_Game.createStack(this.hex, this.hex.getPlayerStack(defender), spriteBatch);
                if (defender == 1)
                    stacks[defender].Location(0 + topleft.X, 35 + topleft.Y);
                if (defender == 2)
                    stacks[defender].Location(25 + topleft.X, 35 + topleft.Y);
                if (defender == 3)
                    stacks[defender].Location(0 + topleft.X, 65 + topleft.Y);
                if (defender == 4)
                    stacks[defender].Location(25 + topleft.X, 65 + topleft.Y);

                stacks[defender].thingsInStack = this.hex.getPlayerStack(defender);
            }

            if (!this.hex.doesPlayerHaveStack(attacker) || !this.hex.doesPlayerHaveStack(defender))
            {
                resolved = true;
                this.hex.setCFlag(false);

                //CONQUER BY COMBAT
                if (this.hex.doesPlayerHaveStack(attacker))
                {
                    KNT_Game.deleteMarker(currentMarkerID);
                    this.hex.getPlayer().removeOwnedTile(this.hex);
                    this.hex.setPlayerControl(GameBoard.Game.getPlayerByNumber(attacker));
                    this.hex.setPlayerControlBool(true);
                    GameBoard.Game.getPlayerByNumber(attacker).addOwnedTile(this.hex);
                    int c = 0;
                    foreach(Tile aTile in GameBoard.Game.getPlayerByNumber(attacker).getOwnedTiles())
                    {
                        if (aTile.getFort() == 4)
                            c++;
                    }
                    if (c == 2)
                    {
                        WinMessage wm = new WinMessage(KNT_Game.me.getName());
                        wm.Show();
                    }
                    currentMarkerID = KNT_Game.createMarker(topleft, attacker, spriteB);
                }
            }

            if (dResult == DialogResult.OK && resolved == false)
            {
                resolveCombat(this.hex);
            }
        }