Gra w wojnę - pętla

0

Cześć,
piszę na zaliczenie karcianą grę w wojnę w Javie. Moja klasa main wygląda jak poniżej i pytanie jest dosyć banalne, ponieważ przy wykonywaniu wyświetlają się komunikaty z obu "if-ów". Dlaczego tak się dzieje i jak mogę to rozwiązać?

import java.util.ArrayList;
 
public class Main {
 
        public static void main(String[] args) {
                int[] punkty = { 0, 0 };
                Talia player1 = new Talia();
                Talia player2 = new Talia();
                System.out.println(player1.getList1());
                System.out.println(player2.getList());
                ArrayList<Karta> myArray = player1.toArray();
                ArrayList<Karta> myArray2 = player2.toArray2();
                
                int i=0;
                while(!myArray.isEmpty() || !myArray2.isEmpty())
                {
 
                        System.out.println(myArray.get(i) + " - " + myArray2.get(i));

                        if (myArray.get(i).getKartaWartosc().getWartosc() > myArray2.get(i).getKartaWartosc().getWartosc())
                        {
                                System.out.println("Gracz 1 wygrał");
                                punkty[0]++;
                                myArray.add(myArray.get(i));
                                myArray.add(myArray2.get(i));
                                myArray.remove(myArray.get(i));
                                myArray2.remove(myArray2.get(i));
                                
                              
                                
                        }
                       if (myArray.get(i).getKartaWartosc().getWartosc() < myArray2.get(i).getKartaWartosc().getWartosc())
                        {
                                System.out.println("Gracz 2 wygrał");
                                punkty[1]++;
                                myArray2.add(myArray.get(i));
                                myArray2.add(myArray2.get(i));
                                myArray.remove(myArray.get(i));
                                myArray2.remove(myArray2.get(i));
                                
                        }
                        if (myArray.get(i).getKartaWartosc().getWartosc() == myArray2.get(i).getKartaWartosc().getWartosc())
                        {
                                System.out.println("Remis");
                                myArray.add(myArray.get(i));
                                myArray2.add(myArray2.get(i));
                                myArray.remove(myArray.get(i));
                                myArray2.remove(myArray2.get(i));
                                
                                      
                        }

                }
                System.out.println("Mamy to!");
        }
}

Z góry dziękuję za odpowiedź :)

0

Robi się pierwszy isc, talie się zmieniają i dopiero wtedy sprawdza drugi if

0

A jest jakiś sposób, by wykonywał się tylko jeden if, po czym pętla wykonywałaby się od nowa?

EDIT: Rozwiązałem już ten problem robiąc zlepkę z else'ów. Ale pętla wykonuje się cały czas, jakby nigdy nie opróżniała się.

0

napisz continue; żeby zrobić następny obrót pętli.

0
                while(!myArray.isEmpty() || !myArray2.isEmpty())

Ty tylko przekładasz karty między tymi listami, a z tej pętli wyjdziesz w momencie gdy obie będą puste, co nigdy nie nastąpi.
Tam nie powinno być &&?

0

Gra w wojnę to najgłupsza gra karciana jaka może być. Tam od graczy zależy tylko potasowanie kart.... Nie mogłeś robić np. oczka?

0

Takie zadanie, wybór nie należał do mnie ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1