Witam serdecznie
Mam do napisania program Gre w kości na podobnych zasadach do http://gramy.interia.pl/gierki.online-kosci.gd,n-21.html i mam problem z tym, jak zrobić żeby 1(lub kilka) kości można było odłożyć i przy 2 podejściu rzucać tylko pozostałymi kościami, dostałem również uwagę że Program nie jest napisany w stylu OOP i nie wime jak rozwiazać ten problem
class zodj
{
/**
* metoda main wypisuje zasady gry oraz wywoluje funkcje stwurz_gracza
*/
public static void main(String[] args)
{
System.out.println(" zasady gry: mozna grac samemu lub w 2 osoby, gra trwa 12 tur," +
" w kazdej z tur gracz moze wykonac 3 rzuty: jesli nie jest zadowolony z poprzedniego");
System.out.println(" rzutu mozesz go powtorzyc ale poprzednie wyniki nie zostana uznane," +
" 3 rzut w danej turze jest ostateczny. Wygrywa gracz ktory zdobedzie najwiecej punktow po 12 turach. \n ");
System.out.println(" Zycze milej zabawy!!! \n");
rzut rz1 = new rzut();
zawodnik z1 = new zawodnik();
z1.stwurz_gracza();
}
}
class rzut
{
int punkty;
int wybor = 0;
int szus, piat, czwu, troj, dwuj, jedn;
int[] tab = new int[5];
/**
*metoda generuj generuje 5 losowych liczb (odpowiadajacym kosciom) kazda z zakresu 1 - 6 dodatkowo dla ulatwienia puzniejszego sprawdzania kombinacji
*liczby te zostaja ustawione w kolejnosci od najwiekszej w zapisane w tablicy tab oraz wyswietla wyniki
*/
void generuj()
{
Random los = new Random();
int k = 6;
int key;
for (int i=0; i<5; i++)
{
tab[i] = (los.nextInt(k)+1);
}
for (int j=0; j < 4; j++)
{
for (int l=j+1; l <5; l++)
{
if(tab[j] < tab[l])
{
key = tab[j];
tab[j] = tab[l];
tab[l] = key;
}
}
}
System.out.println("wartosci wylosowanych kosci to: ");
System.out.println(tab[0] + " " + tab[1] + " " + tab[2] + " " + tab[3] + " " + tab[4] );
}
/**
*metoda sprawdz po przez porownywanie ze soba elementow tablicy sprawdza jakie zachodza kombinacje w wylosowanych liczbach oraz wyswietla nazwy wystepujacych kombinacji
*/
void sprawdz()
{
int szus = 0;
int piat = 0;
int czwu = 0;
int troj = 0;
int dwuj = 0;
int jedn = 0;
///////////////// Strit
if(( tab[0] == 6 && tab[1] == 5 && tab[2] == 4 && tab[3] == 3 && tab[4] == 2 )
|| ( tab[0] == 5 && tab[1] == 4 && tab[2] == 3 && tab[3] == 2 && tab[4] == 1 ))
{
System.out.println(" masz Strita ");
}
//////////////// full
if( (tab[0] == tab[1] && tab[2] == tab[3] && tab[3] == tab[4])
|| (tab[0] == tab[1] && tab[1] == tab[2] && tab[3] == tab[4]))
{
System.out.println(" masz fulla ");
}
//////////////////// 5takich samych
if( tab[0] == tab[1] && tab[1] == tab[2] && tab[2] == tab[3] && tab[3] == tab[4])
{
System.out.println(" masz 5 takich samych ");
}
//////////////////// 4 takie same
if((tab[0] == tab[1] && tab[1] == tab[2] && tab[2] == tab[3])
|| (tab[1] == tab[2] && tab[2] == tab[3] && tab[3] == tab[4]))
{
System.out.println(" masz 4 takie same ");
}
//////////////////// 3 takie same
if(( tab[0] == tab[1] && tab[1] == tab[2] )
|| ( tab[1] == tab[2] && tab[2] == tab[3] )
|| ( tab[2] == tab[3] && tab[3] == tab[4] ))
{
System.out.println(" masz 3 takie same ");
}
////////////////// 2 pary
if(( tab[0] == tab[1] && tab[2] == tab[3]) || ( tab[0] == tab[1] && tab[3] == tab[4])
|| (tab[1] == tab[2] && tab[3] == tab[4]))
{
// tak = 1;
System.out.println(" masz 2 pary ");
}
//////////////// szustki
if(tab[0] == 6){
for (int i=0; i < 5; i++)
{
if ( tab[i] == 6)
{
szus = i + 1;
}
}
System.out.println(" masz " + szus + " szustek ");
}
//////////////// piątki
if(tab[0] == 5 || tab[1] == 5 || tab[2] == 5 || tab [3] ==5 || tab[4] == 5){
for (int i=0; i < 5; i++)
{
if ( tab[i] == 5)
{
piat = i + 1 - szus;
}
}
System.out.println(" masz " + piat + " piatek ");
}
//////////////// czwórki
if(tab[0] == 4 || tab[1] == 4 || tab[2] == 4 || tab [3] ==4 || tab[4] == 4){
for (int i=0; i < 5; i++)
{
if ( tab[i] == 4)
{
czwu = i + 1 - szus - piat;
}
}
System.out.println(" masz " + czwu + " czworek ");
}
//////////////// trójki
if(tab[0] == 3 || tab[1] == 3 || tab[2] == 3 || tab [3] ==3 || tab[4] == 3){
for (int i=0; i < 5; i++)
{
if ( tab[i] == 3)
{
troj = i + 1 - szus - piat - czwu;
}
}
System.out.println(" masz " + troj + " trojek ");
}
//////////////// dwójki
if(tab[0] == 2 || tab[1] == 2 || tab[2] == 2 || tab [3] ==2 || tab[4] == 2){
for (int i=0; i < 5; i++)
{
if ( tab[i] == 2)
{
dwuj = i + 1 - szus - piat - czwu - troj;
}
}
System.out.println(" masz " + dwuj + " dwojek ");
}
//////////////// jedynki
if(tab[0] == 1 || tab[1] == 1 || tab[2] == 1 || tab [3] ==1 || tab[4] == 1){
for (int i=0; i < 5; i++)
{
if ( tab[i] == 1)
{
jedn = i + 1 - szus - piat - czwu - troj - dwuj;
}
}
System.out.println(" masz " + jedn + " jedynek ");
}
}
/**
*metoda przypisz_punkty wypisuje uzytkownikowi jakie moga wystapic oraz ich wartosc punktowa, gracz zostaje zapytany do ktorej z kombinacji ma zostac wybrana,
*jesli kombinacja nie wystepuje lub zostanie wpisany inny znak niz cyfry od 1 do 12 zostanie poproszony o ponowny wybor, jesli wybral dobrze wartosc punktow
* odpowiedniej kombinacji zostanie prezypisana do zmiennej punkty ktora zwracamy
*/
int przypisz_punkty()
{
int szus = 0;
int piat = 0;
int czwu = 0;
int troj = 0;
int dwuj = 0;
int jedn = 0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(" gdzie chcesz przypisac punkty? ");
System.out.println(" strit wpisz 1 (+30 ptk), full wpisz 2 (+30 ptk), 5 takich samych wpisz 3 (+50 ptk),"+
" 4 takie same wpisz 4 (+35 ptk) ");
System.out.println(" 3 takie same wpisz 5 (+25 ptk), dwie pary wpisz 6 (+20 ptk),"+
" szustki wpisz 7 ( ilosc * 6 ptk), piatki wpisz 8 ( ilosc * 5 ptk) ");
System.out.println(" czworki wpisz 9 ( ilosc * 4 ptk), trojki wpisz 10 ( ilosc * 3 ptk),"+
" dwojki wpisz 11 ( ilosc * 2 ptk), jedynki wpisz 12 ( ilosc * 1 ptk)");
punkty = 0;
wroc:
while(punkty == 0)
{
try
{
wybor = Integer.parseInt(br.readLine());
if (wybor == 1)
{
if(( tab[0] == 6 && tab[1] == 5 && tab[2] == 4 && tab[3] == 3 && tab[4] == 2 )
|| ( tab[0] == 5 && tab[1] == 4 && tab[2] == 3 && tab[3] == 2 && tab[4] == 1 ))
{
punkty = punkty + 30;
System.out.println(" + " + punkty + " ptk");
}
else {System.out.println("nie masz takiej kombinacji, powtoz wybor");
continue wroc;}
}
if (wybor == 2)
{
if( (tab[0] == tab[1] && tab[2] == tab[3] && tab[3] == tab[4])
|| (tab[0] == tab[1] && tab[1] == tab[2] && tab[3] == tab[4]))
{
punkty = punkty + 30;
System.out.println(" + " + punkty + " ptk");
}
else {System.out.println("nie masz takiej kombinacji, powtoz wybor");
continue wroc;}
}
if (wybor == 3)
{
if( tab[0] == tab[1] && tab[1] == tab[2] && tab[2] == tab[3] && tab[3] == tab[4])
{
punkty = punkty + 50;
System.out.println(" + " + punkty + " ptk");
}
else {System.out.println("nie masz takiej kombinacji, powtoz wybor");
continue wroc;}
}
if (wybor == 4)
{
if((tab[0] == tab[1] && tab[1] == tab[2] && tab[2] == tab[3])
|| (tab[1] == tab[2] && tab[2] == tab[3] && tab[3] == tab[4]))
{
punkty = punkty + 35;
System.out.println(" + " + punkty + " ptk");
}
else {System.out.println("nie masz takiej kombinacji, powtoz wybor");
continue wroc; }
}
if (wybor == 5)
{
if(( tab[0] == tab[1] && tab[1] == tab[2] )
|| ( tab[1] == tab[2] && tab[2] == tab[3] )
|| ( tab[2] == tab[3] && tab[3] == tab[4] ))
{
punkty = punkty + 25;
System.out.println(" + " + punkty + " ptk");
}
else
{System.out.println("nie masz takiej kombinacji, powtoz wybor");
continue wroc; }
}
if (wybor == 6)
{
if(( tab[0] == tab[1] && tab[2] == tab[3]) || ( tab[0] == tab[1] && tab[3] == tab[4])
|| (tab[1] == tab[2] && tab[3] == tab[4]))
{
punkty = punkty + 20;
System.out.println(" + " + punkty + " ptk");
}
else
{System.out.println("nie masz takiej kombinacji, powtoz wybor");
continue wroc; }
}
if (wybor == 7)
{
for (int i=0; i < 5; i++)
{
if ( tab[i] == 6)
{
szus = szus + 1;
}
}
if (szus != 0)
{
punkty = szus * 6;
System.out.println(" + " + punkty + " ptk");
}
else
{
System.out.println(" nie wylosowales zadnej szustki, powtoz wybor");
continue wroc;
}
}
if (wybor == 8)
{
for (int i=0; i < 5; i++)
{
if ( tab[i] == 5)
{
piat = piat + 1;
}
}
if (piat != 0)
{
punkty = piat * 5;
System.out.println(" + " + punkty + " ptk");
}
else
{
System.out.println(" nie wylosowales zadnej piatki, powtoz wybor");
continue wroc;
}
}
if (wybor == 9)
{
for (int i=0; i < 5; i++)
{
if ( tab[i] == 4)
{
czwu = czwu + 1;
}
}
if (czwu != 0)
{
punkty = czwu * 4;
System.out.println(" + " + punkty + " ptk");
}
else
{
System.out.println(" nie wylosowales zadnej czworki, powtoz wybor");
continue wroc;
}
}
if (wybor == 10)
{
for (int i=0; i < 5; i++)
{
if ( tab[i] == 3)
{
troj = troj + 1;
}
}
if (troj != 0)
{
punkty = troj * 3;
System.out.println(" + " + punkty + " ptk");
}
else
{
System.out.println(" nie wylosowales zadnej trojki, powtoz wybor");
continue wroc;
}
}
if (wybor == 11)
{
for (int i=0; i < 5; i++)
{
if ( tab[i] == 2)
{
dwuj = dwuj + 1;
}
}
if (dwuj != 0)
{
punkty = dwuj * 2;
System.out.println(" + " + punkty + " ptk");
}
else
{
System.out.println(" nie wylosowales zadnej dwojki, powtoz wybor");
continue wroc;
}
}
if (wybor == 12)
{
for (int i=0; i < 5; i++)
{
if ( tab[i] == 1)
{
jedn = jedn + 1;
}
}
if (jedn != 0)
{
punkty = jedn * 1;
System.out.println(" + " + punkty + " ptk");
}
else
{
System.out.println(" nie wylosowales zadnej jedynki, powtoz wybor");
continue wroc;
}
}
}
catch(Exception e)
{
System.out.println(e.getMessage() + " wybrales inny znak niz cyfre od 1 do 12, powtoz wybor \n ");
}
}
return punkty;
}
}
class zawodnik
{
int liczba = 10;
int ptk1, ptk2, su_ptk1, su_ptk2;
String gracz1, gracz2;
rzut r1 = new rzut();
int pow = 0;
int licz;
/**
* metoda void stwurz_gracza pyta sie ilu graczy chcemy stworzyc, jesli wpiszemy zero program zostanie zakonczony, jesli wpiszemy inny znak niz cyfre
* zostanie zwrocony wyjatek i ponowne zapytanie o liczbe graczy. Jesli wpiszemy 1 zostanie stworzony jeden gracz który zostanie poproszony o podanie imienia
* nastepnie zostana wygenerowane funkcje generuj i sprawdz z klasy rzut ktore generuja rzut 5 kostkami oraz sprawdzenie i wypisanie z jakich kombinajcji punktow
* moze skorzystac gracz, jesli gracz nie jest zadowolony moze jeszcze dwukrotnie wywolac funkcje generujace i sprawdzajace, jesli rzut zostanie zatwierdzony
* do zmiennej ptk1 zostaje przypisana wartosc wywolanej metody przypisz_punkty a nastepnie wartosc zmiennej ptk1 zostaje przypisana do zmiennej su_ptk
* konczy sie 1 tura gracz kolejny raz rzuca koscmi... po 12 turach suma punktow zostaje wyswietlona na ekranie
* w przypadku 2 graczy sytuacja jest analogiczna z tym ze gracze rzucaja koscmi na przemian, po 12 turach wyniki graczy zostaja porownane i wyswietla sie imie zwyciezcy
*/
void stwurz_gracza()
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(" ilu chesz stworzyc graczy? (1-2)");
wroc:
while(liczba != 1 && liczba != 2)
{
try
{
liczba = Integer.parseInt(br.readLine());
if (liczba == 1)
{
System.out.print(" podaj imie gracza: ");
gracz1 = br.readLine();
System.out.println("gracz " + gracz1 + " zostal utworzony");
}
else if (liczba ==2)
{
System.out.print(" podaj imie gracza 1: ");
gracz1 = br.readLine();
System.out.println("gracz " + gracz1 + " zostal utworzony");
System.out.print(" podaj imie gracza 2: ");
gracz2 = br.readLine();
System.out.println("gracz " + gracz2 + " zostal utworzony");
}
else
{
System.out.println("wybrales zla opcje, sprobuj jeszcze raz ");
continue wroc;
}
///////////////////////////// 2 graczy
if (liczba == 2)
{
for (int i=0; i<2; i++)
{
pow = 0;
System.out.println(" \n rzuca " + gracz1);
r1.generuj();
r1.sprawdz();
wroc2:
while(pow != 1 && pow != 2)
{
try
{
System.out.println(" jesli jestes zadowolony z rzutu wpisz 1 jesli nie wpisz 2 ");
pow = Integer.parseInt(br.readLine());
if(pow == 2)
{
System.out.println(" droga szansa ");
r1.generuj();
r1.sprawdz();
System.out.println(" jesli jestes zadowolony z rzutu wpisz 1 jesli nie wpisz 2 ");
pow = 0;
licz = 1;
wroc4:
while( pow == 0)
{
try
{
pow = Integer.parseInt(br.readLine());
if( pow != 1 && pow != 2 && licz == 1)
{
System.out.println(" podales zly numer polecenia");
pow = 0;
continue wroc4;
}
//licz = 3;
}
catch(Exception e)
{
System.out.println(e.getMessage() + " nie wpisales 1 lub 2, powtoz wybor");
}
}
if(pow == 2)
{
System.out.println(" twoja ostatnia szansa, teraz musisz cos wybrac ");
r1.generuj();
r1.sprawdz();
ptk1 = r1.przypisz_punkty();
su_ptk1 = su_ptk1 + ptk1;
System.out.println(" masz w sumie " + su_ptk1 + " ptk.");
licz = 2;
}
}
if(pow == 1)
{
ptk1 = r1.przypisz_punkty();
su_ptk1 = su_ptk1 + ptk1;
System.out.println(" masz w sumie " + su_ptk1 + " ptk.");
}
if( pow != 1 && pow != 2)
{
System.out.println(" podales zly numer polecenia");
continue wroc2;
}
}
catch(Exception e)
{
System.out.println(e.getMessage() + " nie wpisales 1 lub 2, powtoz wybor");
}
}
///////////////////////////////////////////////////////////////////////
pow = 0;
System.out.println(" \n rzuca " + gracz2);
r1.generuj();
r1.sprawdz();
wroc3:
while(pow != 1 && pow != 2)
{
try
{
System.out.println(" jesli jestes zadowolony z rzutu wpisz 1 jesli nie wpisz 2 ");
pow = Integer.parseInt(br.readLine());
if(pow == 2)
{
System.out.println(" droga szansa ");
r1.generuj();
r1.sprawdz();
System.out.println(" jesli jestes zadowolony z rzutu wpisz 1 jesli nie wpisz 2 ");
pow = 0;
licz = 2;
wroc5:
while( pow == 0)
{
try
{
pow = Integer.parseInt(br.readLine());
if( pow != 1 && pow != 2 && licz == 2)
{
System.out.println(" podales zly numer polecenia");
pow = 0;
continue wroc5;
}
}
catch(Exception e)
{
System.out.println(e.getMessage() + " nie wpisales 1 lub 2, powtoz wybor");
}
}
if(pow == 2)
{
System.out.println(" twoja ostatnia szansa, teraz musisz cos wybrac ");
r1.generuj();
r1.sprawdz();
ptk2 = r1.przypisz_punkty();
su_ptk2 = su_ptk2 + ptk2;
System.out.println(" masz w sumie " + su_ptk2 + " ptk.");
}
}
if(pow == 1)
{
ptk2 = r1.przypisz_punkty();
su_ptk2 = su_ptk2 + ptk2;
System.out.println(" masz w sumie " + su_ptk2 + " ptk.");
}
if( pow != 1 && pow != 2)
{
System.out.println(" podales zly numer polecenia");
continue wroc3;
}
}
catch(Exception e)
{
System.out.println(e.getMessage() + " nie wpisales 1 lub 2, powtoz wybor");
}
}
}
if(su_ptk1 > su_ptk2 )
{
System.out.println("wygrywa gracz " + gracz1 );
}
else if(su_ptk1 < su_ptk2 )
{
System.out.println("wygrywa gracz " + gracz2 );
}
else if(su_ptk1 == su_ptk2 )
{
System.out.println("remis!!! " );
}
}
////////////////////////////////// 1 gracz
if (liczba == 1)
{
for (int i=0; i<5; i++)
{
pow = 0;
System.out.println(" \n rzuca " + gracz1);
r1.generuj();
r1.sprawdz();
while(pow == 0)
{
try
{
wroc2:
while(pow != 1 && pow != 2)
{
System.out.println(" jesli jestes zadowolony z rzutu wpisz 1 jesli nie wpisz 2 ");
pow = Integer.parseInt(br.readLine());
if(pow == 2)
{
System.out.println(" droga szansa ");
r1.generuj();
r1.sprawdz();
System.out.println(" jesli jestes zadowolony z rzutu wpisz 1 jesli nie wpisz 2 ");
pow = 0;
while( pow == 0)
{
try
{
pow = Integer.parseInt(br.readLine());
}
catch(Exception e)
{
System.out.println(e.getMessage() + " nie wpisales 1 lub 2, powtoz wybor");
}
}
if(pow == 2)
{
System.out.println(" twoja ostatnia szansa, teraz musisz cos wybrac ");
r1.generuj();
r1.sprawdz();
ptk1 = r1.przypisz_punkty();
su_ptk1 = su_ptk1 + ptk1;
System.out.println(" masz w sumie " + su_ptk1 + " ptk.");
}
}
if(pow == 1)
{
ptk1 = r1.przypisz_punkty();
su_ptk1 = su_ptk1 + ptk1;
System.out.println(" masz w sumie " + su_ptk1 + " ptk.");
}
if( pow != 1 && pow != 2)
{
System.out.println(" podales zly numer polecenia");
continue wroc2;
}
}
}
catch(Exception e)
{
System.out.println(e.getMessage() + " nie wpisales 1 lub 2, powtoz wybor");
}
}
}
}
}
catch(Exception e)
{
System.out.println(e.getMessage() + " nie wpisales 1 lub 2, powtoz wybor");
}
}
}
}
zdaje sobie sprawę ze kod jest prostacki a jednocześnie zagmatwany :-(
z góry dzięki za pomoc