es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Múltiples instancias en bucle

¿Cómo puedo crear una instancia para cada objeto en una lista?

Estoy utilizando un bucle para almacenar los valores de este objeto, pero cuando accedo a estos objetos, todos son iguales, quiero que sean diferentes.

En este caso, tengo dos desafíos en “registeredChallenges” y quiero que el progreso int y el boolean completado sean diferentes cuando los cambio, ¿cómo puedo hacerlo?

Por ejemplo:
Desafío1: Progreso 1 y completado falso – Desafío2: Progreso 5 y completado verdadero

¡Gracias!

Lista registeredChallenges = plugin.getChallengeRegistry().getRegisteredChallenges(ChallengeType.COLLECT);

foreach (Challenge challenge : registeredChallenges) {

ChallengeHolder challengeHolder = new ChallengeHolder(challenge, 0, false);

if (!challengeHolder.isCompleted()) {

    int challengeCondition = challenge.getChallengeCondition();

    if (challengeHolder.getProgress() < challengeCondition) {
        challengeHolder.setProgress(challengeHolder.getProgress() + 1);
    }

    int challengeRemaining = plugin.getDatabaseManager().getChallengeRemaining(playerUUID, challenge);

    if (challengeHolder.getProgress() >= challengeCondition) {
        challengeHolder.setCompleted(true);
    }
}

}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para crear una instancia única para cada objeto en la lista, simplemente puedes mover la creación del objeto ChallengeHolder dentro del bucle. De esta manera, se creará una nueva instancia para cada objeto en la lista, con su propio conjunto de progreso y estado de finalización.

    Por ejemplo:

    List<Challenge> registeredChallenges = plugin.getChallengeRegistry().getRegisteredChallenges(ChallengeType.COLLECT);
    for (Challenge challenge : registeredChallenges) {
        ChallengeHolder challengeHolder = new ChallengeHolder(challenge, 0, false);
        if (!challengeHolder.isCompleted()) {
            int challengeCondition = challenge.getChallengeCondition();
            if (challengeHolder.getProgress() < challengeCondition) {
                challengeHolder.setProgress(challengeHolder.getProgress() + 1);
            }
            int challengeRemaining = plugin.getDatabaseManager().getChallengeRemaining(playerUUID, challenge);
            if (challengeHolder.getProgress() >= challengeCondition) {
                challengeHolder.setCompleted(true);
            }
        }
        // Imprime el progreso y estado de finalización para cada desafío
        System.out.println(challenge.getName() + ": Progreso " + challengeHolder.getProgress() + " y Completado " + challengeHolder.isCompleted());
    }
    

    De esta manera, cuando accedas a la instancia para cada objeto en la lista, tendrán su propio conjunto de progreso y estado de finalización.

Comments are closed.