uitvoering main onderbreken tot inpunt gebeurd is

Status
Niet open voor verdere reacties.

aerandir

Gebruiker
Lid geworden
15 mrt 2006
Berichten
9
Ik ben momenteel bezig aan het spel blackjack in java, maar nu ben ik op een probleem gestoten dat ik zelf niet opgelost krijg.

probleemschets:

Code:
bank = new Speler("bank",999999);
        speler = new Speler("anoniem",1000);
        boek = new Boek();

        boek.vulBoek();


            vraagNaam();
            naam.setText(speler.getNaam());

            bedrag.setText("Je hebt: "+speler.getBedrag());

            boek.schudKaarten();

            inzet();

                for(int i=0;i<2 && verder == 1;i++)
                {
                    speler.trekKaart(boek.deelKaart());
                    bank.trekKaart(boek.deelKaart());
                }
Hier worden de speler,de bank en de boek kaarten aangemaakt, dan wordt de boek kaarten gevuld. Daarna wordt de naam van de speler gevraagd en zijn naam en startbedrag worden op het scherm getoond. En dan worden de kaarten geschud. Tot hier gaat alles goed. Maar dan worden er een aantal knoppen zichtbaar gemaakt waarmee je je inzet kan bepalen.
met deze code:
Code:
public void inzet()
   {
       final JPanel inzetpanel = new JPanel();
       infopanel.add(inzetpanel);
       inzetpanel.setLayout(new GridLayout(3,2));
       JButton tien;
       JButton twintig;
       JButton vijftig;
       JButton max;
       JButton inzetten;
       JButton delete;

       inzetpanel.setVisible(true);
       inzetpanel.add(tien = new JButton("10"));
       tien.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { speler.zetIn(10);potinfo.setText("je hebt " +speler.getPot()+ " ingezet");
 }
                           });
       inzetpanel.add(twintig = new JButton("20"));
       twintig.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { speler.zetIn(20);potinfo.setText("je hebt " +speler.getPot()+ " ingezet");}
                           });
       inzetpanel.add(vijftig = new JButton("50"));
       vijftig.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { speler.zetIn(50);potinfo.setText("je hebt " +speler.getPot()+ " ingezet");}
                           });
       inzetpanel.add(max = new JButton("max"));
       max.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { speler.zetIn(100);potinfo.setText("je hebt " +speler.getPot()+ " ingezet");}
                           });
       inzetpanel.add(inzetten = new JButton("inzetten"));
       inzetten.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { inzetpanel.setVisible(false);speler.nieuwBedrag();bedrag.setText("Je hebt: "+speler.getBedrag());
}
                           });
       inzetpanel.add(delete = new JButton("delete"));
       delete.addActionListener(new ActionListener() {
                               public void actionPerformed(ActionEvent e) { speler.zetIn(101);potinfo.setText("je hebt " +speler.getPot()+ " ingezet");}
                           });
      
   }
Nu is het probleem dat vanaf dat het inzetpanel op het scherm verschijnt de main gewoon doorgaat en 2 kaarten uitdeelt aan de speler en de bank, terwijl dit eigenlijk pas mag gebeuren wanneer de speler op de "inzetten" knop gedrukt heeft en het inzetpanel dus terug verdwenen is. Weet er iemand hoe ik dit kan oplossen?

Alvast bedankt,

Aerandir
 
In de funtie inzet() wordt er van alles aangemaakt, maar de daadwerkelijke acties (als je op een knop drukt) gebeuren nog niet. De functie eindigt dus gelijk en daarna wordt het volgende in main() uitgevoerd: je for-loop.

Je kunt beter het delen van kaarten (je for-loop) in een aparte functie zetten en deze nieuwe functie aanroepen op het moment dat de kaarten ook echt gedeeld moeten worden. Bijvoorbeeld na de inzet van een speler. Je roept dan de functie voor het delen van kaarten aan vanuit je actionlistener implementatie (aan het eind van de inzet dus).
 
Ja natuurlijk, dom dat ik daar zelf niet opgekomen ben :)

Hartelijk dank, nu kan ik weer verder

aerandir
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan