var
MatBoja, MatFade: TGLMaterial;
MatFade mozemo postaviti na "FadeOut" material prilikom kreiranja forme
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
// Postavlja polja na tablu
NovaIgra;
// Uzima material za "nestajanje" polja
MatFade := GLMaterialLibrary1.LibMaterialByName('FadeOut').Material;
end;
Materijal boje koja treba da nestane mozemo uzeti u funkciji Proveri
procedure TForm1.Proveri;
begin
// Ako su boje iste vreme je za "nestajanje" :)
Nestajanje :=
TGLCube(Izabrana1.Children[1]).Material.LibMaterialName =
TGLCube(Izabrana2.Children[1]).Material.LibMaterialName;
// Ako nisu ista onda ih vracamo
Vracanje := not Nestajanje;
if Nestajanje then
begin
// Postavljamo material za nestajanje
TGLCube(Izabrana1.Children[0]).Material.LibMaterialName := 'FadeOut';
TGLCube(Izabrana2.Children[0]).Material.LibMaterialName := 'FadeOut';
// Uzimamo materijal za boju kako bismo mogli
// polako da ga napraimo providnim
MatBoja := GLMaterialLibrary1.LibMaterialByName(
TGLCube(Izabrana1.Children[1]).Material.LibMaterialName).Material;
end;
end;
Kao sto vidite u proceduri proveri takodje postavljamo material FadeOut za okvire polja koje treba da nestanu. Tako cemo moci samo njih da menjamo.
Sada cemo jos samo da izmenimo deo OnProgress eventa za Nestajanje
if Nestajanje then
begin
// Smanjujemo alpha vrednost tako da pozadina postaje sve
// providnija
MatFade.FrontProperties.Diffuse.Alpha :=
MatFade.FrontProperties.Diffuse.Alpha - 1 * deltaTime;
// Smanjujemo alpha vrednost tako da boja postaje sve
// providnija
MatBoja.FrontProperties.Diffuse.Alpha :=
MatBoja.FrontProperties.Diffuse.Alpha - 1 * deltaTime;
// Malo da vrtimo polja dok nestaju ;)
Izabrana1.Turn(1000 * deltaTime);
Izabrana2.Turn(1000 * deltaTime);
// Ako je sve nevidnjivo brisemo polja
if MatFade.FrontProperties.Diffuse.Alpha <= 0 then
begin
Izabrana1.Free;
Izabrana2.Free;
Izabrana1 := nil;
Izabrana2 := nil;
// Vracamo ponovo alpha na 1
MatFade.FrontProperties.Diffuse.Alpha := 1;
MatBoja.FrontProperties.Diffuse.Alpha := 1;
Nestajanje := False;
// Nema vise polja... nova igra!?
if Tabla.Count = 0 then
if Application.MessageBox('Nova igra?', 'Info', MB_YESNO) = ID_YES then
NovaIgra
else
Application.Terminate;
end;
end;
Znaci sve sto radimo je polako zmanjivanje alpha vrednosti boje materijala i nase polje ce polako da nestaje. Dodao sam i malo rotiranja kako bi sve bilo zanimljivije

Kada objekat skroz nestane (alpha <= 0) brisemo ga i vracamo alpha vrednos materijala za nestajanje ponovo na 1 kako bi bio spreman za sledece nestajanje.
I to je sve za ovu igru.
Mozete dodati da se meri vreme za koje je igra predjena, broj okretanja, highscore tabelu, izbor slika za polja (polja mogu da imaju texture)... slobodno experimentisite

Sledece sto nas ceka su "ponasanja" objekata... teracemo objekat da se krece po nekoj putanji, vrtecemo tocak na osovini... videcu sta ce mi sve pasti na pamet
