een wait() notify inbouwen

Status
Niet open voor verdere reacties.

PieterNoens

Gebruiker
Lid geworden
26 feb 2013
Berichten
6
Hallo

ik heb een probleem bij het laden van een nieuwe frame in een for loop. Deze frame wordt niet volledig geladen en er wordt ook niet gewacht tot er op een knop gedrukt wordt op het frame. Pas nadat er op een een knop gedrukt wordt zou hij naar het volgende frame moeten gaan. Weet er iemand hoe het komt dat de computer daar niet op wacht ?

Groeten
Pieter
 
PieterNoens,
Welkom op Helpmij.nl

Kan je wat code plaatsen als voorbeeld. Dat is 100 keer duidelijker dan een stukje uitleg tekst ;)
 
Code:
package view;

import model.*;
import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;

import javax.swing.*;
import java.util.ArrayList;
import java.util.Random;


/**
 * User: Glenn Jaspers
 * Date: 6-3-13
 */
public class ZeeslagGUI {
    private boolean tweeSpelers;
    private String winnaar;
    private int score;
    private String resultaat;
    private Zeeslagmaster spel = new Zeeslagmaster();
    private Highscore highscore = new Highscore();
    private Speler speler1;
    private Speler speler2;

    private Random random = new Random();

    public ZeeslagGUI() {
        this.tweeSpelers = false;
        this.score = 50;
    }

    public void setResultaat(String resultaat) {
        this.resultaat = resultaat;
    }

    public void setTweeSpelers(boolean tweeSpelers) {
        this.tweeSpelers = tweeSpelers;
    }

    public void setWinnaar(String winnaar) {
        this.winnaar = winnaar;
    }

    public void setSpeler2(Speler speler2) {
        this.speler2 = speler2;
    }

    public void setSpeler1(Speler speler1) {
        this.speler1 = speler1;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public boolean getTweeSpelers() {
        return tweeSpelers;
    }

    public String getWinnaar() {
        return winnaar;
    }

    public int getScore() {
        return score;
    }

    public Speler getSpeler2() {
        return speler2;
    }

    public Speler getSpeler1() {
        return speler1;
    }
    public void setSpelbord1(int lengte, int breedte, int aantal){
        spel.getSpelbord1().setLengte(lengte);
        spel.getSpelbord1().setBreedte(breedte);
        spel.getSpelbord2().setAantalSchepen(aantal);
    }
    public void setSpelbord2(int lengte, int breedte,int aantal){
        spel.getSpelbord2().setLengte(lengte);
        spel.getSpelbord2().setBreedte(breedte);
        spel.getSpelbord2().setAantalSchepen(aantal);
    }




    public void standaardSpel(){
        ArrayList<Schip> schepen = new ArrayList<>();
        schepen.clear();

        for (int j = 0; j < 2; j++) {
            for (int i = 0; i < 5; i++) {
                if (j == 0) {
                    schepen = spel.setStandaardSchepen(i);
                    vraagSchepen(speler1, spel.getSpelbord1(), schepen);
                } else {
                    schepen = spel.setStandaardSchepen(i);
                    vraagSchepen(speler2,spel.getSpelbord2(),schepen);
                }
            }
        }

        int i = 0;
        boolean einde = false;

        while (einde == false) {
            if (i % 2 == 0) {
                vraagSchieten(speler1,spel.getSpelbord2());
            } else {
                vraagSchieten(speler2, spel.getSpelbord1());
                }

            i++;


            if (spel.getSpelbord2().getAantalRaak() >= 17) {
                speler1.setHighscore(spel.getSpelbord1().getAantalSchoten());
                einde = true;
                winnaar = speler1.getNaam();
                score = speler1.getHighscore();
                highscore.vulHighscoreAan(speler1);

            } else {
                if (spel.getSpelbord1().getAantalRaak() >= 17) {
                    speler2.setHighscore(spel.getSpelbord2().getAantalSchoten());
                    einde = true;
                    winnaar = speler2.getNaam();
                    score = speler2.getHighscore();
                    highscore.vulHighscoreAan(speler2);
                }
            }
        }
        new WinnaarFrame(this);
    }


    public boolean vraagSchepen(Speler speler, Spelbord spelbord, ArrayList<Schip> schepen) {
        for (Schip schip: schepen){

           if (speler.getNaam() == "Computer") {
                boolean gekozen = false;

                do {
                    try {
                        spel.setX(random.nextInt(10));
                        spel.setY(random.nextInt(10));
                        int h = random.nextInt(2);
                        if (h == 0)
                            spel.setR('v');
                        else spel.setR('h');
                        spel.plaatsSchepen(spelbord, schip);
                        gekozen = true;
                    } catch (IllegalArgumentException e) {
                        gekozen = false;
                    }
                } while (!gekozen);
        } else {
                new BotenPlaatsenFrame(this, speler, spelbord, spel, schip);
                return true;
            }

    }
        return true;
}

    public String vraagSchieten(Speler speler, Spelbord spelbord){

        String resSchot;
        if (speler.getNaam() == "Computer") {
            do{
                resSchot = spel.cpuSchiet();
            } while (resSchot == "Buiten het veld geschoten.\n" || resSchot == "Je hebt deze coördinaat al gebruikt.\n");
            spelbord.setAantalSchoten(spelbord.getAantalSchoten() +1);
        }else {
            do{
                new SchietenFrame(this,speler,spelbord,spel);
                resSchot = resultaat;
            }while (resSchot=="Je hebt deze coördinaat al gebruikt.\n");
            spelbord.setAantalSchoten(spelbord.getAantalSchoten()+1);
        }
        return resSchot;

    }
}
Het probleem bevindt zich bij new BotenPlaatsenFrame in de methode vraagSchepen.
Ik weet niet of dit veel duidelijkheid schept, het is een Zeeslagspel.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan