Démineur simple avec delphi 6

goeland22 Messages postés 2 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 15 décembre 2008 - 14 déc. 2008 à 16:04
debiars87 Messages postés 43 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 25 juin 2009 - 25 juin 2009 à 13:08
Bonjour a tous,
Voila dans le cadre de mes études (génie mécanique donc aucune connaissance en programmation ) je dois créer un démineur très simple avec delphi 6. J' ai réussi a faire que lorsqu'on clique dans les cellules un 1 apparaissent quand il y a une mine et un 0 quand il n'y en a pas.( 10 mines apparaissent aléatoirement dans mon tableau a 10 lignes, 10 colonnes ). Je voudrai maintenant remplacer le 1 par M et le 0 par O quand on clique dans les cellules.
Quelle commande dois-je utiliser ?

Merci beaucoup !

4 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
14 déc. 2008 à 18:15
Peux-tu donner plus d'indications sur le support de ton démineur ?
TStringList, tableau dynamique ??
Changer un 1 et M et un 0 en O n'a pas l'air bien compliqué ...

Cordialement, Bacterius !
0
goeland22 Messages postés 2 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 15 décembre 2008
15 déc. 2008 à 13:11
Slt,
J'utilise des tableau dynamique mai je n'en sais pas beaucoup plus.
voila le code :

uUnit1;
    nit
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, Menus, StdCtrls;

type
  TForm1 = class(TForm)
    Menu: TMainMenu;
    Partie1: TMenuItem;
    Nouveau1: TMenuItem;
    Meilleursscores1: TMenuItem;
    Quitter1: TMenuItem;
    Aide1: TMenuItem;
    sg_mines: TStringGrid;
    Demineur: TLabel;
    procedure Aide1Click(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure sg_minesSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure Nouveau1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  Tablemine:  Array[1..10,1..10] of integer;

implementation

{$R *.dfm}

procedure TForm1.Aide1Click(Sender: TObject);
begin
ShowMessage(':-D Aide pas encore disponible :-D');
end;

procedure TForm1.Quitter1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.sg_minesSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
       // Showmessage(InttoStr(Arow)+'-'+IntToStr(ACol));
        sg_mines.cells[ACol,ARow]:=inttostr(Tablemine[ARow+1,ACol+1]);
       
end;

procedure TForm1.Nouveau1Click(Sender: TObject);
        Var
        x,y:integer;
        i:integer;
begin
                For x:=1 To 10 Do
                For y:=1 To 10 Do begin
                   Tablemine[x,y]:=0;
                   sg_mines.cells [x-1,y-1]:='';
              End;

       for i:=1 to 10 do begin
          tablemine[random(10)+1,random(10)+1]:=1;
       end;
       begin
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Nouveau1.Click;
end;

end.

Merci !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
16 déc. 2008 à 17:44
Bonsoir,
en gros tu voudrais que le texte soit autre chose que des 0 et des 1 ?

procedure TForm1.sg_minesSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
// On regarde la valeur de la cellule ...
case IntToStr(TableMine[ARow+1, ACol+1]) of
0: sg_mines.cells[ACol,ARow]:= 'O'; // C'est un 0 ! On met un O.
1: sg_mines.cells[ACol,ARow]:= 'M'; // C'est un 1 ! On met un M.
end;
end;

Voilà ! J'ai utilisé un case..of.

Cordialement, Bacterius !
0
debiars87 Messages postés 43 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 25 juin 2009
25 juin 2009 à 13:08
Un démineur !!
Bientot
je vais poster une source qui réalise de façon clair le comportement réel d'un vrai jeux de Démineur !!
DEBIARS JUNIOR
0
Rejoignez-nous