Developpez.com - C
X

Choisissez d'abord la catégorieensuite la rubrique :


CONSTRUIRE UN JEU DE DEMINEUR (C++ BUILDER)

Date de publication : 11 Juin 2007



Vous connaissez sans doute ce fameux jeu qui accompagne toujours chaque version de Windows ! C'est un jeu de prise de tête qui a pour but de localiser toutes les mines aussi rapidement que possible, sans en afficher aucune. Si vous découvrez une mine, vous avez perdu.

Nous allons développer le démineur avec Borland C++ Builder 6, la version la plus stable selon mon avis.


Traçage de la grille de champ de mines

D'abord, il faut préciser les noms de composants utilisés à partir d'ici.

  • Baomba: le StringGrid
  • Lalao: le DrawGrid
  • Liste: la liste d'images pour contenir les petites images à utiliser (forme de boutons, drapeaux, 1, 2, 3, etc.)
Nous remarquons aussi l'existence de niveaux pour ce jeu que nous allons construire: Débutant, Intermediaire, Expert. Il suffit de cliquer sur des boutons radio pour basculer d'un niveau à un autre.
void __fastcall TForm1::Initiate(TObject *Sender)
{
int c,l;
TRect stock;
trouve = 0;
Lalao->Enabled = true;
Baomba->Visible = false;
losed = false;
compteur->Text = IntToStr(0);
temps = 0;
Timer->Enabled = false;
if (Debutant->Checked){
Lalao->ColCount = 8;
Lalao->RowCount = 8;
Baomba->ColCount = 8;
Baomba->RowCount = 8;
Nbmines = 10;
nb->Text = IntToStr(Nbmines);
}
if (Intermediaire->Checked){
Lalao->ColCount = 16;
Lalao->RowCount = 16;
Baomba->ColCount = 16;
Baomba->RowCount = 16;
Nbmines = 40;
nb->Text = IntToStr(Nbmines);
}

if (Expert->Checked){
Lalao->ColCount = 30;
Lalao->RowCount = 16;
Baomba->ColCount = 30;
Baomba->RowCount = 16;
Nbmines = 99;
nb->Text = IntToStr(Nbmines);
}

// La taille du tableau
Baomba->Height=Baomba->RowCount*17-Baomba->RowCount+4;
Baomba->Width=Baomba->ColCount*17-Baomba->ColCount+4;
Lalao->Height=Baomba->RowCount*17-Baomba->RowCount+4;
Lalao->Width=Baomba->ColCount*17-Baomba->ColCount+4;

Lalao->DefaultRowHeight=16;
Lalao->DefaultColWidth=16;
Baomba->DefaultRowHeight=16;
Baomba->DefaultColWidth=16;

// Size of windows
Form1->Top=0;Form1->Left=0;
Form1->ClientHeight =Screen->Height;
Form1->ClientWidth =Screen->Width;

for (c=0;c<Baomba->ColCount;c++)
 for(l=0;l<Baomba->RowCount;l++){
   View[l][c] = 0;
   Baomba->Cells[c][l] = IntToStr(0);
   stock = Lalao->CellRect(c,l);
   Lalao->DefaultDrawing = true;
   Liste->Draw(Lalao->Canvas,stock.Left,stock.Top,4);
   Lalao->DefaultDrawing = false;
 }

PlacerBaomba(Sender);
PlacerNum(Sender);
}
Nous allons expliquer à la suite les fonctions PlacerBaomba() et PlacerNum() mais ce qui nous importe pour le moment c'est la boucle:
for (c=0;c<Baomba->ColCount;c++)
 for(l=0;l<Baomba->RowCount;l++){
   View[l][c] = 0;
   Baomba->Cells[c][l] = IntToStr(0);
   stock = Lalao->CellRect(c,l);
   Lalao->DefaultDrawing = true;
   Liste->Draw(Lalao->Canvas,stock.Left,stock.Top,4);
   Lalao->DefaultDrawing = false;
 }


Valid XHTML 1.1!Valid CSS!

Copyright © Rija RANDRIANO. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique C