Witam!
Pomóżcie mi zaprogramować Grę w Życie Johna Conwaya w C++ Windows Forms. Wykorzystuje do tego Buildera 6.
Jak na razie to jest mój kod:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
tab = new TShape*[625];
life = new bool[625];
for( int i = 0 ; i < 625 ; i++)
{
tab[i] = new TShape( NULL );
// tab[i] = new TShape( this ); dla formatki
//this -> InsertComponent(tab[i]); dla formatki
tab[i] ->Parent = this;
//this -> InsertControl(tab[i]);
tab[i] -> Width = 20;
tab[i] -> Height = 20;
/// Siatka --------------------- ///
//i -> ( szerokosc*(1*n) , wysokosc * (i/n) )
tab[i] -> Left = tab[i] -> Width * (i%25) + 202;
tab[i] -> Top = tab[i] -> Height * (i/25) +5;
tab[i]->Pen->Color = clBtnFace;
life[i] = false;
tab[i]->OnMouseDown = Shape1MouseDown;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Shape1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TShape* tmp = dynamic_cast<TShape*>(Sender);
tmp->Brush->Color = clBlack;
}
//---------------------------------------------------------------------------
Zasady Gry (jakby ktoś jej nie znał):
Zasady są proste i polegają na zmianie stanu każdej komórki na planszy podczas jednego kroku gry.
Zasady zmiany stanu są następujące:
- Martwa komórka, która ma dokładnie 3 żywych sąsiadów, staje się żywa w następnej jednostce
czasu (rodzi się). - Żywa komórka z 2 albo 3 żywymi sąsiadami pozostaje nadal żywa; przy innej liczbie sąsiadów umiera
(z „samotności” albo „zatłoczenia”)
Siatką są komponenty TShape, 625 elementów 25 na 25, siatka ma być dynamiczna i tak też zrobiłem. Zrobiłem event OnMouseDown, gdzie zamienia mi biale kwadraciki na czarne (z martwych na żywe), chciałbym teraz zrobić tablicę, w której zapiszę sobie który z tych kwadracików jest żywy a który martwy, bym mógł później wykorzystać to sprawdzając sąsiadów i zmieniając stan komórek przy każdym kolejnym kroku wg. zasad gry.
Nie mam pojęcia jak zrobić taką tablicę. Jakiś podpowiedzi?