Exemple #1
0
    public void checkTerminationConditions()
    {
        foreach (var termination in terminations)
        {
            if (termination.isDone(this))
            {
                isEnded = true;

                var result = new VGDLGameResult();

                for (int i = 0; i < no_players; i++)
                {
                    avatars[i].winState = termination.getWin(i);

                    result.playerAvatars.Add(avatars[i]);
                    result.playerOutcomes.Add(avatars[i].winState);
                    result.playerScores.Add(avatars[i].score);
                }

                gameResult = result;

                fwdModel.update(this);

                for (int i = 0; i < no_players; i++)
                {
                    avatars[i].passResult(this);
                }
            }

            //if any condition is met, the game is over, and so we need not test anymore.
            if (isEnded)
            {
                break;
            }
        }

        /*
         *      //NOTE: this is for the AI competition, to stop running a bot that produces too many warnings
         *      if(Logger.getInstance().getMessageCount() > CompetitionParameters.MAX_ALLOWED_WARNINGS){
         *              System.out.println("Finishing the game due to number of warnings: " + Logger.getInstance().getMessageCount() +
         *               ". Messages will be flushed.");
         *              Logger.getInstance().printMessages();
         *          isEnded = true;
         *          Logger.getInstance().flushMessages();
         *      }
         */
    }
Exemple #2
0
    /**
     * Overloaded method for multiplayer games. Same functionality as above.
     *
     * @param id
     *            - id of the player that was disqualified
     */
    public void disqualify(int id)
    {
        if (gameResult == null)
        {
            gameResult = new VGDLGameResult();
        }

        isEnded = true;

        if (id == -1)
        {
            disqualified = true;
            avatars[0].disqualify(true);
            gameResult.playerAvatars.Add(avatars[0]);
            gameResult.playerOutcomes.Add(avatars[0].winState);
            gameResult.playerScores.Add(avatars[0].score);

            avatars[0].passResult(this);
        }
        else
        {
            avatars[id].disqualify(true);

            for (int i = 0; i < no_players; i++)
            {
                gameResult.playerAvatars.Add(avatars[i]);
                gameResult.playerOutcomes.Add(avatars[i].winState);
                gameResult.playerScores.Add(avatars[i].score);
            }

            for (int i = 0; i < no_players; i++)
            {
                avatars[id].passResult(this);
            }
        }
    }