rendered paste body//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "auto.h"
#include <time.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int sasiedzi(int x, int a, int b) // x - stan; a - wsp x; b - wsp y
{
int stan = 0;
if (Tablica[a-1][b-1]==x) stan++;
if (Tablica[a-1][b]==x) stan++;
if (Tablica[a-1][b+1]==x) stan++;
if (Tablica[a][b+1]==x) stan++;
if (Tablica[a+1][b+1]==x) stan++;
if (Tablica[a+1][b]==x) stan++;
if (Tablica[a+1][b-1]==x) stan++;
if (Tablica[a][b-1]==x) stan++;
return stan;
}
//---------------------------------------------------------------------------
void przepisz()
{
for (int i=0; i<60; i++)
{
for (int j=0; j<60; j++)
{
Tablica[i][j]=Tablicab[i][j];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1Click(TObject *Sender)
{
ColorDialog1->Execute();
Panel1->Color = ColorDialog1->Color;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel2Click(TObject *Sender)
{
ColorDialog1->Execute();
Panel2->Color = ColorDialog1->Color;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel3Click(TObject *Sender)
{
ColorDialog1->Execute();
Panel3->Color = ColorDialog1->Color;
}
//---------------------------------------------------------------------------
/* void __fastcall TForm1::Button3Click(TObject *Sender)
{
StringGrid1->RowCount = Edit1->Text.ToInt();
StringGrid1->ColCount = Edit2->Text.ToInt();
StringGrid1->Width = Edit1->Text.ToInt()*10+Edit1->Text.ToInt()+4;
StringGrid1->Height = Edit2->Text.ToInt()*10+Edit1->Text.ToInt()+4;
} */
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
Label2->Caption = String(ACol+1);
Label4->Caption = String(ARow+1);
if (RadioButton1->Checked == True)
{
StringGrid1->Canvas->Brush->Color = Panel1->Color;
StringGrid1->Canvas->FillRect(Rect(10*ACol+ACol,10*ARow+ARow,10*ACol+ACol+10,10*ARow+ARow+10));
Tablica[ACol][ARow]=1;
}
if (RadioButton2->Checked == True)
{
StringGrid1->Canvas->Brush->Color = Panel2->Color;
StringGrid1->Canvas->FillRect(Rect(10*ACol+ACol,10*ARow+ARow,10*ACol+ACol+10,10*ARow+ARow+10));
Tablica[ACol][ARow]=0 ;
}
if (RadioButton3->Checked == True)
{
StringGrid1->Canvas->Brush->Color = Panel3->Color;
StringGrid1->Canvas->FillRect(Rect(10*ACol+ACol,10*ARow+ARow,10*ACol+ACol+10,10*ARow+ARow+10));
Tablica[ACol][ARow]=2 ;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int i=0, j=0;
for (j=0; j<60;j++)
{
for (i=0; i<60;i++)
{
Tablica[i][j] = 0 ;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i=0;
int j=0;
int nic = 0;
if (ComboBox1->ItemIndex == 0) { // jeśli zaznaczono Inwazje
for (i=0; i<60;i++)
{
for (j=0; j<60;j++)
{
if (Tablica[i][j] == 1) // jesli komórka jest aktywna
{
if (sasiedzi(1, i, j) >= 3 || sasiedzi(2, i, j) >= 3) // i ma przynajmniej 3 aktywnych lub 3 subaktywnych sasiadow
{
Tablicab[i][j] = 2; //to staje sie subaktywna
continue;
}
else nic++; // jesli warunek nie spełniony to zwiększ licznik
if (sasiedzi(1, i, j) >= 1 && sasiedzi(1, i, j) <= 2 || sasiedzi(2, i, j) >= 1 && sasiedzi(2, i, j) <= 2) // jeśli komórka jest aktywna i ma od 1-2 aktywnych lub subaktywnych sasiadów
{
Tablicab[i][j] = 1; // to ma zostć aktywna
continue;
}
else nic++; // jesli warunek nie spełniony to zwiększ licznik
}
if (Tablica[i][j] == 0) // jesli komórka jest NIEaktywna
{
if (sasiedzi(1, i, j) >= 3 || sasiedzi(2, i, j) >= 3) //i ma co najmniej 3 aktywnych lub subaktywnych sasiadów
{
Tablicab[i][j] = 1; // to staje sie aktywna
continue;
}
else nic++; // jesli warunek nie spełniony to zwiększ licznik
}
if (nic == 3)
Tablicab[i][j] = 0; // W innych przypadkach staje się nieaktywna.
nic = 0;
}
}
Button4->Click();
} // zamkniety if - wybor dzialania
//=====================================
if (ComboBox1->ItemIndex == 1)
{ // jeśli zaznaczono Marsz
for (int i=0; i<60;i++)
{
for (int j=0; j<60;j++)
{
if (Tablica[i][j] == 1) // jesli komórka jest aktywna
{
if (sasiedzi(1, i, j) >= 4) // i ma przynajmniej 4 aktywnych sąsiadów
{
Tablicab[i][j] = 0; // ma sie stac nieaktywna
continue;
}
else nic++;
}
if (Tablica[i][j] == 0) // jeśli komórka jest nieaktywna
{
if (sasiedzi(1, i, j) == 2) //i ma dwóch aktywnych sąsiadów
{
Tablicab[i][j] = 1; // to staje sie aktywna
continue;
}
else nic++;
}
if (sasiedzi(1, i, j) == 3) //jeśli komórka ma 3 aktywnych sąsiadów
{
Tablicab[i][j] = 1; // to staje sie aktywna
continue;
}
else nic++;
if (nic == 3)
{
Tablicab[i][j] = 0; // W innych przypadkach staje się nieaktywna.
continue;
}
nic = 0;
} // zamyka for 2
} // zamyka for 1
Button4->Click(); //odrysuj plansze
} // zamyka warunek wyboru dzialania
//=====================================
if (ComboBox1->ItemIndex == 2)
{ // jeśli zaznaczono Zycie
for (int i=0; i<60;i++)
{
for (int j=0; j<60;j++)
{
if (Tablica[i][j] == 1 || Tablica[i][j] == 0) // jesli komórka jest aktywna lub nie
{
if (sasiedzi(1, i, j) == 3) // i ma 3 aktywnych sasiadow
{
Tablicab[i][j] = 1; // to staje sie aktywna
continue;
}
else nic++;
}
if (Tablica[i][j] == 1) // jesli komórka jest aktywna
{
if (sasiedzi(1, i, j) == 2) // i ma 2 aktywnych sasiadow
{
Tablicab[i][j] = 1; // to staje sie aktywna
continue;
}
else nic++;
}
if (nic == 2)
{
Tablicab[i][j] = 0; // to staje sie martwa
continue;
}
nic = 0;
} // zamyka for 2
} // zamyka for 1
Button4->Click(); //odrysuj plansze
} // zamyka ifa wyboru dzialania
} // konczacy
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int i=0;
int j=0;
for (i=0; i<60;i++)
{
for (j=0; j<60;j++)
{
if (Tablicab[i][j] == 1)
{
StringGrid1->Canvas->Brush->Color = Panel1->Color;
StringGrid1->Canvas->FillRect(Rect(10*i+i,10*j+j,10*i+i+10,10*j+j+10));
}
if (Tablicab[i][j] == 0)
{
StringGrid1->Canvas->Brush->Color = Panel2->Color;
StringGrid1->Canvas->FillRect(Rect(10*i+i,10*j+j,10*i+i+10,10*j+j+10));
}
if (Tablicab[i][j] == 2)
{
StringGrid1->Canvas->Brush->Color = Panel3->Color;
StringGrid1->Canvas->FillRect(Rect(10*i+i,10*j+j,10*i+i+10,10*j+j+10));
}
}
}
przepisz();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
int i=0, j=0;
randomize();
if (ComboBox1->ItemIndex == 1 || ComboBox1->ItemIndex == 2)
{
for (j=0; j<60;j++)
{
for (i=0; i<60;i++)
{
int rand = random(2);
Tablicab[i][j] = rand ;
}
}
}
if (ComboBox1->ItemIndex == 0)
{
for (j=0; j<60;j++)
{
for (i=0; i<60;i++)
{
int rand = random(3);
Tablicab[i][j] = rand ;
}
}
}
Button4->Click();
przepisz();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
if (ComboBox1->ItemIndex == 1 || ComboBox1->ItemIndex == 2)
{
Label7->Enabled = False;
Panel3->Enabled = False;
RadioButton3->Enabled = False;
}
else
{
Label7->Enabled = True;
Panel3->Enabled = True;
RadioButton3->Enabled = True;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i=0, j=0;
for (j=0; j<60;j++)
{
for (i=0; i<60;i++)
{
Tablicab[i][j] = 0 ;
}
}
Button4->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------