Witam. Zaczynam przygodę z programowaniem i chciałbym zapytać czy napisany przeze mnie kod jest poprawny, czy dobrze zrozumiałem istotę programowania obiektowego oraz co należy poprawić. Program to prosta gra typu lotto.
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;
public class klasa
{
public static void main(String[] args) throws IOException
{
////////////////////////////////ZMIENNE_GLOB////////////////////////////
Scanner odczyt = new Scanner(System.in);
boolean pomocnicza1 = true; //zmienna sprawdza czy mozna zapytac "jeszcze raz?"
Tryb tryb=new Tryb();
Czyszczenie czysc=new Czyszczenie();// utworzenie zmiennej obiektowej typu Czyszczenie z klasy Czyszczenie, bez parametru
Statystyki stat=new Statystyki();
int wybor=0;
int[] tab = new int[6];
int wylosowane[] = new int[6];
int TrafLiczb=0;
int konto=30;
int wygrana=0;
int LiczbaGier=0;
System.out.print(" !!! WITAJ W GRZE LOTTO !!!\n\n Na start otrzymujesz od nas " +konto+ " zl, ktore od teraz jest na twoim koncie. "
+ "\n Kazdy zaklad to koszt 3 zl graj dopoki na twoim koncie znajduja sie pieniadze \n\n");
do
{
stat.dajStat(konto,TrafLiczb,LiczbaGier);
if(pomocnicza1==false)
System.out.print(" \n\nJeszcze raz?");
System.out.print("\n\nAby przejsc dalej kliknij ENTER\n");
System.in.read();
czysc.czysc(150);// uzycie funkcji z klasy czyszczenie
System.out.print("Wybierz sposob gry : \n [1] Moje liczby\n[2] Chybil trafil");
wybor = odczyt.nextInt();
czysc.czysc(150);// uzycie funkcji z klasy czyszczenie
///////////////////WYBOR//////////////////////////////
if(wybor==1)
{
System.out.print("Wprowadz liczby z przedzialu 1-49 ( po kazdej klikaj ENTER)\n\n");
for(int i=0;i<6;i++)
{
tryb.wprowadzliczby(tab, i);
}
czysc.czysc(150);// uzycie funkcji z klasy czyszczenie
}
else
{
tryb.chybiltrafil(tab);
}
/////////////////////WYLOSOWANE/////////////////
tryb.chybiltrafil(wylosowane);
//////////////////////////////WYSWIETLENIE/////////////////////
System.out.print("Twoje liczby :");
for(int i=0; i<6; i++)
tryb.dajliczby(tab,i);
System.out.print("\nWylosowane liczby :");
for(int i=0; i<6; i++)
tryb.dajliczby(wylosowane,i);
///////SPRWDZENIE///////
int check=0;
int p1 = 0,p2 = 0,p3 = 0,p4=0 ,p5=0, p6=0;
if(tab[0]==wylosowane[0] || tab[0]==wylosowane[1] || tab[0]==wylosowane[2] || tab[0]==wylosowane[3] || tab[0]==wylosowane[4] || tab[0]==wylosowane[5])
p1=1;
if(tab[1]==wylosowane[0] || tab[1]==wylosowane[1] || tab[1]==wylosowane[2] || tab[1]==wylosowane[3] || tab[1]==wylosowane[4] || tab[1]==wylosowane[5])
p2=1;
if(tab[2]==wylosowane[0] || tab[2]==wylosowane[1] || tab[2]==wylosowane[2] || tab[2]==wylosowane[3] || tab[2]==wylosowane[4] || tab[2]==wylosowane[5])
p3=1;
if(tab[3]==wylosowane[0] || tab[3]==wylosowane[1] || tab[3]==wylosowane[2] || tab[3]==wylosowane[3] || tab[3]==wylosowane[4] || tab[3]==wylosowane[5])
p4=1;
if(tab[4]==wylosowane[0] || tab[4]==wylosowane[1] || tab[4]==wylosowane[2] || tab[4]==wylosowane[3] || tab[4]==wylosowane[4] || tab[4]==wylosowane[5])
p5=1;
if(tab[5]==wylosowane[0] || tab[5]==wylosowane[1] || tab[5]==wylosowane[2] || tab[5]==wylosowane[3] || tab[5]==wylosowane[4] || tab[5]==wylosowane[5])
p6=1;
check=p1+p2+p3+p4+p5+p6;
if(check==0 || check==1 || check==2)
System.out.print("\n\n" + check + " trafionych! Wygrana 0 zl");
else if(check==3)
{
System.out.print("\n\n" + check + " trafionych! Wygrana 24 zl");
wygrana=24;
}
else if(check==4)
{ System.out.print("\n\n" + check + " trafionych! Wygrana 188 zl");
wygrana=188;
}
else if(check==5)
{
System.out.print("\n\n" + check + " trafionych! Wygrana 6 000 zl");
wygrana=6000;
}
else if(check==6)
{
System.out.print("\n\n" + check + " trafionych! Wygrana 3 000 000 zl");
wygrana=3_000_000;
}
TrafLiczb=check+TrafLiczb;
konto=wygrana+konto-3;
wygrana=0;
pomocnicza1=false;
LiczbaGier++;
}while(konto>2);
czysc.czysc(150);// uzycie funkcji z klasy czyszczenie
System.out.print("Jestes BANKRUTEM!!!! Nie stac cie na zaklad! \n\n Statystyki całej gry\n\n");
stat.dajStat(konto,TrafLiczb,LiczbaGier);
}
}
class Czyszczenie
{
/*public Czyszczenie(int a) //wywolanie czyszczenia za pomoca konstruktora (z zadana liczba pol do wyczyszczenia)
{
z=a;
for(int i=0;i<z;i++)
System.out.println("");
}*/
void czysc(int a) // wywolanie czyszczenia za pomoca konstruktora (z zadana liczba pol do wyczyszczenia)
{
for(int i=0;i<a;i++)
System.out.println("");
}
}
class Statystyki
{
void dajStat(int konto, int trafione, int rozegraneGry)
{
System.out.print("\n\nSTATYSTYKI : \n\n");
System.out.print("Stan konta : "+konto+" zl \n");
System.out.print("Trafionych liczb : "+trafione+" \n");
System.out.print("Rozegranych gier : "+rozegraneGry+" \n\n");
}
}
class Tryb
{
Scanner odczyt = new Scanner(System.in);
Random gen = new Random();
void wprowadzliczby(int[] tab, int pom)
{
System.out.print("\nLiczba nr "+ (pom+1) + " : ");
tab[pom] = odczyt.nextInt();
}
void chybiltrafil(int[] tab)
{
for(int i=0; i<6; i++)
tab[i]=gen.nextInt(49)+1;
}
void dajliczby(int[] tab,int pom)
{
System.out.print(tab[pom] +",");
}
}
niezdecydowany