Hat hier jemand fundierte Kenntnisse mit Java (bsonders AWT, ActionListener).
Bin grade dabei ein BlackJackSpiel zu schreiben, aber ich krieg die Spielschleife einfach nicht hin. Innerhalb jeder Runde soll zwischen den Spielern durchgeschaltet werden und die Methode doActivities() ausgeführt werden.

Code:
    public void run()
    {

       (...gekürzt...)
        
        while(game_running)
        {
            round++;
            keys = player.keySet();
            //System.out.println(round + keys.toString() + player.toString());

            for(int m:keys)
            {
                activePlayer = player.get(m);
                activeIndex = m-1;
                //System.out.println(activePlayer.toString());
                this.doActivities(activePlayer,m);
                ready = false;
                this.enableButtons();
            }   
        }
     }
Hab 4 Buttons für die Aktionen des aktiven Spielers (3 davon arbeiten auch alle brav), beim klicken auf "Stand", sollte dann aber eigentlich der nächste Spieler an der Reihe sein. Indem der actionListener eine variable "ready" auf true setzt und dann die Whileschleife unten abgebrochen und doActivities beendet wird. Aber Irgendwie funzt das ganze in der Praxis nicht so ganz. Der springt auch beim Klicken auf Stand nicht aus der whileschleife raus.

Code:
    private void doActivities(Player player, int index) 
    {
        // Test ob der Spieler noch Geld hat
        if(player.getCash()==0)
            return;
        
        // Test ob der Spieler computergesteuert ist
        if(index>PLAYER)
        {
            //TODO Ki einbauen
            
        }
        
        // sonst nutzergesteuerter Spieler
        else
        {
            hit.addActionListener(al);
            //TODO entfernen
            System.out.println(player.toString());
            stand.addActionListener(al);
            if(activePlayer.getNumber(0)!=activePlayer.getNumber(1))
                split.setEnabled(false);
            split.addActionListener(al);
            doubling.addActionListener(al);
            
            while(!ready)
            {
                System.out.println("nicht ready");
                continue;
            }            
        }        
    }
Hier "Stand"-Abzweigung des ActionListeners
Code:
                 if(e.getActionCommand()==STAND)
                 {
                     if(activeHand == FIRST && !activePlayer.overBought())
                     {
                         if(activePlayer.isSplitted() && !activePlayer.overBoughtSecond())
                         {
                             hit.setEnabled(true);
                             stand.setEnabled(true);
                             doubling.setEnabled(true);

                         }
                         else
                         {
                             hit.setEnabled(false);
                             stand.setEnabled(false);
                             doubling.setEnabled(false);
                             ready = true;
                         
                         }
                         
                         activeHand = SECOND;
                     }
                     else
                     {
                         hit.setEnabled(false);
                         doubling.setEnabled(false);
                         split.setEnabled(false);
                         stand.setEnabled(false);
                         activeHand = FIRST;
                         ready = true;
                         
                         
                     }
                     
                 }
Bin grad am überlegen ob ich noch eine Schicht zwischen Spiel und Spieler legen sollte (Runde oder Zug oder sogar beides) und diese Instanzen in eigenen Threads starten. Aber eigentlich sollte es so wies ist doch auch gehn, ActionListener wirft nen Interrupt, Behandlung ändert die Variable, die Scheifenbedingung ist nicht mehr erfüllt -> nächster Spieler... oder hab ich da irgendwo nen Verständnisfehler?

Hab das ganze File auf dropbox hochgeladen, falls jemand nen genaueren Überblick braucht

https://www.dropbox.com/s/o0qsyaa76lqkfio/BJGame.java