Gra poker + txt

Odpowiedz Nowy wątek
2015-01-26 23:16
0

Witam,

Mam mały problem. Do wykonania mam gre poker, która polega na wczytaniu danych z pliku txt gdzie znajduje sie okolo 1000 kombinacji ( w takiej formie: KD 9C JH 7H KC 5S 5S 6S 6D 8H).
Posiada juz calosc, ale niestety wynik nie zgadza sie z tym ktory powinien byc. Sprawdzalem kilku krotnie troche kombinacji i wyszlo ze problem znajduje sie gdzies w tym miejscu:

//Poker           
                   if (tabkolor[0].equals(tabkolor[1]) & tabkolor[1].equals(tabkolor[2]) & tabkolor[2].equals(tabkolor[3]) & tabkolor[3].equals(tabkolor[4]) & tabfigur[0] == (tabfigur[1]-1) & tabfigur[1] == (tabfigur[2]-1) & tabfigur[2] == (tabfigur[3]-1) & tabfigur[3] == (tabfigur[4]-1)){
                       moc = 22 + (tabfigur[4]/0.100);
                          wynik = moc;
                  }

                   if(tabkolor[5].equals(tabkolor[6]) & tabkolor[6].equals(tabkolor[7]) & tabkolor[7].equals(tabkolor[8]) & tabkolor[8].equals(tabkolor[9]) & tabfigur[5] == (tabfigur[6]-1) & tabfigur[6] == (tabfigur[7]-1) & tabfigur[7] == (tabfigur[8]-1) & tabfigur[8] == (tabfigur[9]-1)){
                       moc1 = 22 + (tabfigur[9]/0.100);
                          wynik = moc1;
                  }

                  //Kareta
                  if(tabfigur[0] == tabfigur[1] & tabfigur[1] == tabfigur[2] & tabfigur[2] == tabfigur[3] & tabfigur[3] != tabfigur[4]){
                      moc = 21 + (tabfigur[3]/0.100);
                      wynik = moc;
                  } else if (tabfigur[0] != tabfigur[1] & tabfigur[1] == tabfigur[2] & tabfigur[2] == tabfigur[3] & tabfigur[3] == tabfigur[4]){
                      moc = 21 + (tabfigur[4]/0.100);
                      wynik = moc;
                  }

                  if(tabfigur[5] == tabfigur[6] & tabfigur[6] == tabfigur[7] & tabfigur[7] == tabfigur[8] & tabfigur[8] != tabfigur[9]){ 
                      moc1 = 21 + (tabfigur[8]/0.100);
                      wynik = moc1;
                  } else if (tabfigur[5] != tabfigur[6] & tabfigur[6] == tabfigur[7] & tabfigur[7] == tabfigur[8] & tabfigur[8] == tabfigur[9]){
                      moc1 = 21 + (tabfigur[9]/0.100);
                      wynik = moc1;
                  }

                  //Full
                  if(tabfigur[0] == tabfigur[1] & tabfigur[1] == tabfigur[2] & tabfigur[3] == tabfigur[4]){
                      moc = 20 + (tabfigur[4]/0.100);
                      wynik = moc;
                  } else if (tabfigur[0] == tabfigur[1] & tabfigur[2] == tabfigur[3] & tabfigur[3] == tabfigur[4]){
                      moc = 20 + (tabfigur[4]/0.100);
                      wynik = moc;
                  }

                   if(tabfigur[5] == tabfigur[6] & tabfigur[7] == tabfigur[8] & tabfigur[8] == tabfigur[9]){
                       moc1 = 20 + (tabfigur[9]/0.100);
                          wynik = moc1;
                  } else if (tabfigur[5] == tabfigur[6] & tabfigur[6] == tabfigur[7] & tabfigur[8] == tabfigur[9]){
                      moc1 = 20 + (tabfigur[9]/0.100);
                      wynik = moc1;
                  }

                //Kolor
                   if (tabkolor[0].equals(tabkolor[1]) & tabkolor[1].equals(tabkolor[2]) & tabkolor[2].equals(tabkolor[3]) & tabkolor[3].equals(tabkolor[4])){
                      moc = 19+(tabfigur[4]/0.100);
                      wynik = moc;
                  }

                   if (tabkolor[5].equals(tabkolor[6]) & tabkolor[6].equals(tabkolor[7]) & tabkolor[7].equals(tabkolor[8]) & tabkolor[8].equals(tabkolor[9])){
                      moc1 = 19 +(tabfigur[9]/0.100);
                      wynik1 = moc1;
                  }

                 //Strit
                   if(tabfigur[0] == (tabfigur[1]-1) & tabfigur[1] == (tabfigur[2]-1) & tabfigur[2] == (tabfigur[3]-1) & tabfigur[3] == (tabfigur[4]-1)){
                       moc = 18 + (tabfigur[0]/0.100);
                      wynik = moc;
                  }

                   if(tabfigur[5] == (tabfigur[6]-1) & tabfigur[6] == (tabfigur[7]-1) & tabfigur[7] == (tabfigur[8]-1) & tabfigur[8] == (tabfigur[9]-1)){
                        moc1 = 18 + (tabfigur[5]/0.100);
                    wynik1 = moc1;

                   }

                //Trojka
                   if(tabfigur[0] == tabfigur[1] & tabfigur[1] == tabfigur[2] & tabfigur[3] != tabfigur[2] & tabfigur[4] != tabfigur[3]){ 
                       moc = 17 + (tabfigur[0]/0.100);
                      wynik = moc;
                  } else if (tabfigur[0] != tabfigur[1] & tabfigur[2] == tabfigur[3] & tabfigur[3] == tabfigur[4]){
                       moc = 17 + (tabfigur[2]/0.100);
                      wynik = moc;
                  } else if (tabfigur[0] != tabfigur[1] & tabfigur[1] == tabfigur[2] & tabfigur[2] == tabfigur[3] & tabfigur[4] != tabfigur[3]){
                       moc = 17 + (tabfigur[1]/0.100);
                      wynik = moc;
                  }

                   if(tabfigur[5] == tabfigur[6] & tabfigur[6] == tabfigur[7] & tabfigur[8] != tabfigur[7] & tabfigur[9] != tabfigur[7]){
                       moc1 = 17 + (tabfigur[5]/0.100);
                      wynik1 = moc1;
                  } else if (tabfigur[5] != tabfigur[6] & tabfigur[7] == tabfigur[8] & tabfigur[8] == tabfigur[9]){
                       moc1 = 17 + (tabfigur[7]/0.100);
                      wynik1 = moc1;
                  } else if (tabfigur[5] != tabfigur[6] & tabfigur[6] == tabfigur[7] & tabfigur[7] == tabfigur[8] & tabfigur[9] != tabfigur[7]){
                       moc1 = 17 + (tabfigur[6]/0.100);
                      wynik1 = moc1;
                  }

                   */
                  //Dwie pary
                  if(tabfigur[0] == tabfigur[1] & tabfigur[2] == tabfigur[3] & tabfigur[3] != tabfigur[4]){
                       moc = 16 + (tabfigur[2]/0.100);
                      wynik = moc;
                      }
                  else if(tabfigur[0] == tabfigur[1] & tabfigur[3] == tabfigur[4] & tabfigur[2] != tabfigur[3])
                  {
                       moc = 16 + (tabfigur[3]/0.100);
                      wynik = moc;            
                      } else if(tabfigur[1] == tabfigur[2] & tabfigur[3] == tabfigur[4] & tabfigur[0] != tabfigur[1]){
                           moc = 16 + (tabfigur[4]/0.100);
                          wynik = moc;

                      }
                  if(tabfigur[5] == tabfigur[6] & tabfigur[7] == tabfigur[8] & tabfigur[6] != tabfigur[7]){
                       moc1 = 16 + (tabfigur[7]/0.100);
                      wynik1 = moc1;
                  } else if(tabfigur[5] == tabfigur[6] & tabfigur[8] == tabfigur[9] & tabfigur[7] != tabfigur[8]){
                       moc1 = 16 + (tabfigur[8]/0.100);
                      wynik1 = moc1;
                  }else if (tabfigur[6] == tabfigur[7] & tabfigur[8] == tabfigur[9] & tabfigur[5] != tabfigur[6]){
                       moc1 = 16 + (tabfigur[9]/0.100);
                      wynik1 = moc1;
                  }

                  //Para
                 if(tabfigur[0] == tabfigur[1]){
                       moc =15.0 + (tabfigur[0]/0.100);
                     wynik = moc;
                  } else if (tabfigur[1] == tabfigur[2] ){
                       moc = 15.0 + (tabfigur[1]/0.100);
                         wynik = moc;
                  } else if (tabfigur[2]==tabfigur[3]){
                       moc = 15.0 + (tabfigur[2]/0.100);
                         wynik = moc;
                  } else if (tabfigur[3] == tabfigur[4]){
                       moc = 15.0 + (tabfigur[3]/0.100);
                         wynik = moc;

                  } if (tabfigur[5] == tabfigur[6]){
                          moc1 = 15.0 + (tabfigur[5]/0.100);
                         wynik1 = moc1;
                  } else if(tabfigur[6]==tabfigur[7]){
                       moc1 = 15.0+(tabfigur[6]/0.100);
                         wynik1 = moc1;
                  } else if (tabfigur[7] == tabfigur[8]){
                       moc1 = 15.0+(tabfigur[7]/0.100);
                         wynik1 = moc1;
                  } else if (tabfigur[8] == tabfigur[9]){
                       moc1 = 15.0+(tabfigur[8]/0.100);
                         wynik1 = moc1;
                  }

                          if(wynik > wynik1){
                              gracz1++;     
                              System.out.println("              Wygral gracz 1");
                          } else if (wynik1 > wynik){
                              gracz2++;
                              System.out.println("                          Wygral gracz 2");
                          } else if (wynik == wynik1){
                              if (tabfigur[4] > tabfigur[9]){
                              gracz1++;
                              System.out.println("              Wygral gracz 1");
                              }
                              else if (tabfigur[9] > tabfigur[4]){
                                  gracz2++;
                              System.out.println("                          Wygral gracz 2");
                              }

                          } 

Dodam jeszcze, ze przy kombinacji: KD 9C JH 7H KC 5S 5S 6S 6D 8H
Wynik wyskakuje mi taki:
7 9 11 13 13 5 5 6 6 8
H C H D C S S S D H
Wygral gracz 1
Gracz nr 1 wygrał : 1 razy.
0

edytowany 1x, ostatnio: dzyzas, 2015-01-26 23:33

Pozostało 580 znaków

2015-01-26 23:28
1

Napisz kilka testów i zobacz dla jakich przykładów działa nieprawidłowo, nikt ci tutaj całej tej if-else driven developerki nie przeanalizuje.


"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." Robert Heinlein.

Pozostało 580 znaków

2015-01-26 23:30
3

Rozważ ponowne napisanie tego kodu.

Pozostało 580 znaków

2015-01-26 23:34
0

Sprawdzałem i problem pojawia mi sie juz przy Dwoch parach, nie potrafi odroznic ze dwie pary 5 5 i 6 6 sa wieksze od jednej parawy 13 13.
Domyslam sie ze kod faktycznie wyglada dosc kiepsko w tych ifach ale nie widzialem innego rozwiazania.

edytowany 1x, ostatnio: dzyzas, 2015-01-26 23:35

Pozostało 580 znaków

2015-01-27 00:07
0
dzyzas napisał(a):

Sprawdzałem i problem pojawia mi sie juz przy Dwoch parach, nie potrafi odroznic ze dwie pary 5 5 i 6 6 sa wieksze od jednej parawy 13 13.
Domyslam sie ze kod faktycznie wyglada dosc kiepsko w tych ifach ale nie widzialem innego rozwiazania.

Pytanie nr 1 - w jaki sposób rozróżniasz obu graczy? poprzez zapisywanie co 5 elementów?
Pytanie nr 2 - czy karty są uporządkowane? bo porównujesz tylko sąsiednie karty w danej kombinacji...

Wg mnie można by napisać jakąś klasę przechowującą karty gracza, stworzyć 2 obiekty tej klasy, następnie napisać 2 funkcje - jedną sprawdzającą jaką kombinację kart ma gracz, a drugą sprawdzającą moc tej kombinacji - powinno to trochę uporządkować kod...


Jeśli starasz się za coś wziąć, rób to z należytą starannością.
--------------------------------------------
Kupić kupon chybił-trafił 2zł, napisanie programu losującego liczby jako pierwszego programu w C++ - bezcenne :)

Pozostało 580 znaków

2015-01-27 00:11
0

Odp 1 Wykonuje figura1 = linia.substring(0,1); a nastepnie wpisuej w tablice, wtedy jest to moje tabfigur[0] i tak do tabfigur[4] gdzie jest to gracz nr 1, nastepnie od 5-9 to gracz nr 2.
Odp 2 Tak, tablice sa posortowane.

Czyli proponujesz zeby wykonac to obiektowo ? (wzbranialem sie przed tym, bo jeszcze nie wykonywalem nic obiektowo)

proponuję zlikwidować drabinkę warunków - spartanPAGE 2015-01-27 14:50

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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