void StandardowyBudowniczyLabiryntu::WstawDrzwiMiedzyKomrki(int indeks1, int indeks2, ::Kierunek kierunekOd1Do2)
{
	Sprawdz(indeks1, indeks2);
	Drzwi* drzwi = new Drzwi(indeks1, indeks2);
	komorki[indeks1]->PowiaZMiejscem(kierunekOd1Do2, drzwi);
	komorki[indeks2]->PowiaZMiejscem(PrzeciwnyKierunek(kierunekOd1Do2), drzwi);
}
Exemple #2
0
void Losowanie()
{
int liczba;

randomize(); //Uruchamiamy generator liczb losowych
for (int i=0; i<6; i++) // dla kazdego elementu tablicy z liczbami wylosowanymi
        {
          liczba=(rand()%49)+1;  //losuje liczbe z przedzialu 1-49 (to +1 jest dlatego, ze normalnie wyszlaby z //przedzialu 0-48)
         if (!Sprawdz(liczba,Wylosowane)) Wylosowane[i]=liczba; //Jesli jeszcze takiej nie wylosowano to wstawia ja do //tablicy
          else i--;  //W przeciwnym wypadku powtarza ten krok

        }
}
Exemple #3
0
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (!Sprawdz(0,Wytypowane)) //jesli we wszystkich polach sa podane wartosci (czyli tablica jest wypelniona liczbami roznymi od 0)
{
Edit1->ReadOnly=TRUE;    // to blokuje wszystkie pola do wpisywania
Edit2->ReadOnly=TRUE;
Edit3->ReadOnly=TRUE;
Edit4->ReadOnly=TRUE;
Edit5->ReadOnly=TRUE;
Edit6->ReadOnly=TRUE;

Losowanie();  //losuje numerki
PokazWyniki();  //i wyswietla je w polach obok
Button1->Enabled=False; //Wylaczamy mozliwosc losowania;
BitBtn1->Enabled=True;  //za to wlaczamy przycisk czyszczenia
if (Trafienie) ZapiszWyniki(); //jesli bylo trafienie to wywolywujemy funkcje zapisujaca wyniki
UaktualnijStatystyki(); //wywoluemy funkcje zapisujaca statystyki
}
else ShowMessage(AnsiString("Nie podano wszystkich liczb!"));  // w przeciwnym wypadku komunikuje, ze nie podano //wszyrkich liczb


}
void StandardowyBudowniczyLabiryntu::WiazKomorki(int indeks1, int indeks2, Kierunek kierunekOd1Do2)
{
	Sprawdz(indeks1, indeks2);
	komorki[indeks1]->PowiaZMiejscem(kierunekOd1Do2, komorki[indeks2]);
	komorki[indeks2]->PowiaZMiejscem(PrzeciwnyKierunek(kierunekOd1Do2), komorki[indeks1]);
}
Exemple #5
0
void PokazWyniki()
{
Trafienie=False; //Zakladamy ze nic nie trafilismy (pesymistycznie tak... ;-P)
char buf[2]; //robimy sobie buforek na przechowywanie stringow z numerkami

itoa(Wylosowane[0],buf,10); //zamieniamy kolejny element tablicy z wylosowanymi elementami na stringa
if (Sprawdz(Wylosowane[0],Wytypowane)) //jesli taki wytypowalismy
 {
 Form1->Edit7->Color=clRed;   //to oznaczamy pole w ktorym byl ten numerek na czerwono
 Form1->Memo1->Lines->Add("Trafiles!"); //i walimy komunikat
 Trafienie=True; // Skoro trafilsm to sobie to zapiszmy w zmiennej Trafienie :-)))
 }

 Form1->Edit7->Text=buf;  //wpsiujemy do odpowiedniego pola, te wartosc


itoa(Wylosowane[1],buf,10);       //i od nowa, dla kolejnego pola...
if (Sprawdz(Wylosowane[1],Wytypowane))
 {
 Form1->Edit8->Color=clRed;
 Form1->Memo1->Lines->Add("Trafiles!");
 Trafienie=True;
 }
Form1->Edit8->Text=buf;


itoa(Wylosowane[2],buf,10);
if (Sprawdz(Wylosowane[2],Wytypowane))
 {
 Form1->Edit9->Color=clRed;
 Form1->Memo1->Lines->Add("Trafiles!");
 Trafienie=True;
 }
Form1->Edit9->Text=buf;

itoa(Wylosowane[3],buf,10);
if (Sprawdz(Wylosowane[3],Wytypowane))
 {
 Form1->Edit10->Color=clRed;
 Form1->Memo1->Lines->Add("Trafiles!");
 Trafienie=True;
 }
Form1->Edit10->Text=buf;

itoa(Wylosowane[4],buf,10);
if (Sprawdz(Wylosowane[4],Wytypowane))
{
 Form1->Edit11->Color=clRed;
 Form1->Memo1->Lines->Add("Trafiles!");
 Trafienie=True;
 }
Form1->Edit11->Text=buf;

itoa(Wylosowane[5],buf,10);
if (Sprawdz(Wylosowane[5],Wytypowane))
 {
 Form1->Edit12->Color=clRed;
 Form1->Memo1->Lines->Add("Trafiles!");
 Trafienie=True;
 }
Form1->Edit12->Text=buf;




if (!Trafienie) Form1->Memo1->Lines->Add("Niestety nic nie trafiles..."); else //wyswietlamy odpowiedni komounikat w //zaleznosci cz padlo trafienie
Form1->Memo1->Lines->Add("!!! Gratulacje !!!");
}
Exemple #6
0
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Exit(TObject *Sender)  //Instrukcje sa wywolywane gdy "opuszcza" sie pole do wpisywania numerkow
{
if ((atoi(Edit1->Text.c_str())>49) || (atoi(Edit1->Text.c_str())<0)) //Sprawdza czy podano liczbe z zakresu od 1 do 49
                        {
                          ShowMessage(AnsiString("Prosze podac liczbe z zakresu 1-49"));
                          Edit1->SetFocus();//ustawiamy kursor w polu ktore wlasnie opuszvczalismy
                        }

if (atoi(Edit1->Text.c_str())==0) //Sprawdza czy wogole wpisano liczbe (atoi zwraca 0 jesli nie uda mu sie przekonwertowac tekstu na liczbe)
                        {
                          ShowMessage(AnsiString("Prosze uzyc znakow od 0-9"));
                          Edit1->SetFocus();
                          goto koniec; //pomija kolejnego if'a gdyz podczas inicjalizacji tablica jest wypelniona zerami i kolejny if bylby na TRUE tak czy inaczej
                        }

if (!Sprawdz(atoi(Edit1->Text.c_str()),Wytypowane)) Wytypowane[0]=atoi(Edit1->Text.c_str()); else //sprawdza czy czasami nie wybrano takiej liczby wczesniej
 if (atoi(Edit1->Text.c_str())==Wytypowane[0]) Wytypowane[0]=atoi(Edit1->Text.c_str()); else  //jesli wybrano, to musi ona byc w tym samym polu co poprzednio
  {                                                                                    //w przeciwnym wypadku zakomunikuj, ze taka liczba juz byla
                          ShowMessage(AnsiString("Podano juz taka liczbe"));
                          Edit1->SetFocus();
                        }
koniec:


// TAK SAMO TO DZIALA DLA KAZDEGO KOLEJNEGO EDITA
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2Exit(TObject *Sender)
{
if ((atoi(Edit2->Text.c_str())>49) || (atoi(Edit2->Text.c_str())<0))
                        {
                          ShowMessage(AnsiString("Prosze podac liczbe z zakresu 1-49"));
                          Edit2->SetFocus();
                        }

if (atoi(Edit2->Text.c_str())==0)
                        {
                          ShowMessage(AnsiString("Prosze uzyc znakow od 0-9"));
                          Edit2->SetFocus();
                          goto koniec;
                        }

                        if (!Sprawdz(atoi(Edit2->Text.c_str()),Wytypowane)) Wytypowane[1]=atoi(Edit2->Text.c_str()); else
 if (atoi(Edit2->Text.c_str())==Wytypowane[1]) Wytypowane[1]=atoi(Edit2->Text.c_str()); else
  {
                          ShowMessage(AnsiString("Podano juz taka liczbe"));
                          Edit2->SetFocus();
                        }
koniec:
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3Exit(TObject *Sender)
{
if ((atoi(Edit3->Text.c_str())>49) || (atoi(Edit3->Text.c_str())<0))
                        {
                          ShowMessage(AnsiString("Prosze podac liczbe z zakresu 1-49"));
                          Edit3->SetFocus();
                        }

if (atoi(Edit3->Text.c_str())==0)
                        {
                          ShowMessage(AnsiString("Prosze uzyc znakow od 0-9"));
                          Edit3->SetFocus();
                          goto koniec;
                        }
if (!Sprawdz(atoi(Edit3->Text.c_str()),Wytypowane)) Wytypowane[2]=atoi(Edit3->Text.c_str()); else
 if (atoi(Edit3->Text.c_str())==Wytypowane[2]) Wytypowane[2]=atoi(Edit3->Text.c_str()); else
  {
                          ShowMessage(AnsiString("Podano juz taka liczbe"));
                          Edit3->SetFocus();
                        }
  koniec:
  }
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit4Exit(TObject *Sender)
{
if ((atoi(Edit4->Text.c_str())>49) || (atoi(Edit4->Text.c_str())<0))
                        {
                          ShowMessage(AnsiString("Prosze podac liczbe z zakresu 1-49"));
                          Edit4->SetFocus();
                        }

if (atoi(Edit4->Text.c_str())==0)
                        {
                          ShowMessage(AnsiString("Prosze uzyc znakow od 0-9"));
                          Edit4->SetFocus();
                          goto koniec;
                        }
if (!Sprawdz(atoi(Edit4->Text.c_str()),Wytypowane)) Wytypowane[3]=atoi(Edit4->Text.c_str()); else
 if (atoi(Edit4->Text.c_str())==Wytypowane[3]) Wytypowane[3]=atoi(Edit4->Text.c_str()); else
  {
                          ShowMessage(AnsiString("Podano juz taka liczbe"));
                          Edit4->SetFocus();
                        }
 koniec:
  }
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit5Exit(TObject *Sender)
{
if ((atoi(Edit5->Text.c_str())>49) || (atoi(Edit5->Text.c_str())<0))
                        {
                          ShowMessage(AnsiString("Prosze podac liczbe z zakresu 1-49"));
                          Edit5->SetFocus();
                        }

if (atoi(Edit5->Text.c_str())==0)
                        {
                          ShowMessage(AnsiString("Prosze uzyc znakow od 0-9"));
                          Edit5->SetFocus();
                          goto koniec;
                        }
if (!Sprawdz(atoi(Edit5->Text.c_str()),Wytypowane)) Wytypowane[4]=atoi(Edit5->Text.c_str()); else
 if (atoi(Edit5->Text.c_str())==Wytypowane[4]) Wytypowane[4]=atoi(Edit5->Text.c_str()); else
  {
                          ShowMessage(AnsiString("Podano juz taka liczbe"));
                          Edit5->SetFocus();
                        }
  koniec:
  }
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit6Exit(TObject *Sender)
{
if ((atoi(Edit6->Text.c_str())>49) || (atoi(Edit6->Text.c_str())<0))
                        {
                          ShowMessage(AnsiString("Prosze podac liczbe z zakresu 1-49"));
                          Edit6->SetFocus();

                        }

if (atoi(Edit6->Text.c_str())==0)
                        {
                          ShowMessage(AnsiString("Prosze uzyc znakow od 0-9"));
                          Edit6->SetFocus();
                          goto koniec;
                        }

if (!Sprawdz(atoi(Edit6->Text.c_str()),Wytypowane)) Wytypowane[5]=atoi(Edit6->Text.c_str()); else
 if (atoi(Edit6->Text.c_str())==Wytypowane[5]) Wytypowane[5]=atoi(Edit6->Text.c_str()); else
  {
                          ShowMessage(AnsiString("Podano juz taka liczbe"));
                          Edit6->SetFocus();
                        }
 koniec:
  }
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn5Click(TObject *Sender)
{
Form1->Memo1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
for (int i=0; i<6; i++)     //Wypelniamy obie tablice zerami
{
Wylosowane[i]=0;
Wytypowane[i]=0;
}

Form1->Edit1->Clear();        //Czyscimy pola do typowania
Form1->Edit2->Clear();
Form1->Edit3->Clear();
Form1->Edit4->Clear();
Form1->Edit5->Clear();
Form1->Edit6->Clear();

Form1->Edit1->ReadOnly=False;       //Ukatywaniamy je
Form1->Edit2->ReadOnly=False;
Form1->Edit3->ReadOnly=False;
Form1->Edit4->ReadOnly=False;
Form1->Edit5->ReadOnly=False;
Form1->Edit6->ReadOnly=False;


Form1->Edit7->Clear();         //Czyscimy pola z wylosowanymi literkami
Form1->Edit8->Clear();
Form1->Edit9->Clear();
Form1->Edit10->Clear();
Form1->Edit11->Clear();
Form1->Edit12->Clear();

Form1->Edit7->Color=clWhite;        //"Robimy" je na bialo
Form1->Edit8->Color=clWhite;
Form1->Edit9->Color=clWhite;
Form1->Edit10->Color=clWhite;
Form1->Edit11->Color=clWhite;
Form1->Edit12->Color=clWhite;

Form1->Memo1->Lines->Add("Mozna rozpoczac kolejne losowanie");   //Komunikat :-)
BitBtn1->Enabled=False;     //Ukatywniamy przycisk losowania
Button1->Enabled=True;      //a wylaczamy czyszczenia

}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
if ((PlikStatystyk=fopen("st.txt","r+"))==NULL)          // kolejne linijki Tak samo jak przy uaktualnianiu
 ShowMessage(AnsiString("Brak pliku statystyk")); else
   {
   fread(&Statystyki,sizeof(Statystyki),1,PlikStatystyk);
   fclose(PlikStatystyk);
   }
Form1->Memo1->Lines->Add("Statystyki wystapien numerow :");
char buf[6], buf2[6];;
for (int i=1; i<50;i++)
{
 itoa(i,buf,10);   //buf bedzie zawieral numerek
 strcat(buf," = ");  // i znak = (strcat dokleja do stringa podanego jako pierwszy parametr, ten podany jako drugi parametr)
 itoa(Statystyki[i],buf2,10); //buf2 bedzie zawieral ilosc wystapien danego numerka
 strcat(buf,buf2);  //laczymy oba zeby to wygladalo +/- tak   1 = 12    (jedynka zostala wylosowana 12 razy)
 Form1->Memo1->Lines->Add(buf); //i wyswietlamy to w memo
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
if ((PlikWygranych=fopen("wyg.txt","r+b"))==NULL)  //Odpalamy se plik w trybie binarnym i odczytywania (struktury musimy odczytywac //binarnie!!!)
 ShowMessage(AnsiString("Brak pliku z wygranymi!"));
 else
  {
        Form1->Memo1->Lines->Add("");
        Form1->Memo1->Lines->Add("::::WYGRANE:::: ");

       while (fread(&tr,sizeof(tr),1,PlikWygranych)) //dopoki udaje sie zczytac cala strukture to robimy to (fread zwraca NULL jak                                                     //mu sie nie uda zczytac calej struktury
       {
         Form1->Memo1->Lines->Add("---------------");
          char buf11[2]={'\0','\0'};            //Zerujemy tablice (bufory)... tak na wszelki wypadek (czyli kazda komorke                                                //wypelniamy wartoscia NULL (czyli inaczej '\0')
          char buf12[20]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};
          char buf21[2]={'\0','\0'};
          char buf22[20]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};

          for(int i=0; i<6;i++)
          {
         itoa(tr.wytypowane[i],buf11,10);  //w buforach tworzymy zapisy w postaci numer1.numer2.numer3. (np 1.42.14.21.53.12.)
         
        strcat(buf12,buf11); //to juz bylo omawiane
         strcat(buf12,".");


         itoa(tr.wylosowane[i],buf21,10);
         strcat(buf22,buf21);
         strcat(buf22,".");
          }
        Form1->Memo1->Lines->Add("Wytypowane: ");    //Wyswietlamy zawartosci buforow
        Form1->Memo1->Lines->Add(buf12);
        Form1->Memo1->Lines->Add("Wylosowane: ");
        Form1->Memo1->Lines->Add(buf22);

       }





   fclose(PlikWygranych);   //Zamykamy plik...


  }


}