Jeu de la vie sur interface graphique en pascal

Signaler
Messages postés
1
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
17 mars 2014
-
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
-
bonjour a tous je suis un nouveau membre.
svp j'aimerai intégré dans ce code source du jeu de la vie une interface graphique (pascal)

PROGRAM jeu_de_la_vie;

USES Crt;

TYPE matrice = ARRAY [1..40,1..40] OF WORD;

VAR t,tab1,tab2:matrice;
s:CHAR;
nbretours:WORD;
bol:BOOLEAN;

PROCEDURE Affiche (tab:matrice);
VAR i,j:WORD;
BEGIN
FOR i:=1 TO 40 DO
BEGIN
FOR j:=1 TO 40 DO BEGIN
IF tab[i,j]=1 THEN Write('X')
ELSE Write('-');

END;
Writeln;
END;
END;

PROCEDURE Aleat (VAR tab:matrice);
VAR i,j:WORD;
BEGIN
Randomize;
FOR i:=1 TO 40 DO
BEGIN
FOR j:=1 TO 40 DO tab[i,j]:=Random(2);
Writeln;
END;
END;

PROCEDURE Tabnul (VAR tab:matrice);
VAR i,j:WORD;
BEGIN
Randomize;
FOR i:=1 TO 40 DO
BEGIN
FOR j:=1 TO 40 DO tab[i,j]:=0;
Writeln;
END;
END;

PROCEDURE Glitergun (VAR tab:matrice); {genere un gliter gun}
BEGIN
Tabnul(Tab);
Tab[20,3]:=1;Tab[20,4]:=1;Tab[21,3]:=1;Tab[21,4]:=1;Tab[20,13]:=1;
Tab[21,13]:=1;Tab[22,13]:=1;Tab[19,14]:=1;Tab[23,14]:=1;Tab[18,15]:=1;
Tab[24,15]:=1;Tab[18,16]:=1;Tab[24,16]:=1;Tab[21,17]:=1;Tab[19,18]:=1;
Tab[23,18]:=1;Tab[20,19]:=1;Tab[21,19]:=1;Tab[22,19]:=1;Tab[21,20]:=1;
Tab[18,23]:=1;Tab[19,23]:=1;Tab[20,23]:=1;Tab[18,24]:=1;Tab[19,24]:=1;
Tab[20,24]:=1;Tab[17,25]:=1;Tab[21,25]:=1;Tab[16,27]:=1;Tab[17,27]:=1;
Tab[21,27]:=1;Tab[22,27]:=1;Tab[18,37]:=1;Tab[19,37]:=1;Tab[18,38]:=1;
Tab[19,38]:=1;
END;

PROCEDURE Remplissage (VAR tab:matrice);
VAR i,j:WORD;s:CHAR;
BEGIN
s:='o';
Tabnul(tab);
REPEAT
Affiche(tab);
Writeln('Coordonn'es de la cellule vivante :');
Writeln('Ligne (1..40) ?');
Readln(i);

Writeln('Colonne (1..40) ?');
Readln(j);
tab[i,j]:=1;

Writeln('Continuer ?');
Readln(s);
UNTIL s<>'o';
Clrscr;
END;

FUNCTION Compte(i,j:WORD;tabl:matrice):WORD; {compte le nombre de cellules voisines}
BEGIN
IF (i<>1) AND (i<>40) AND (j<>1) AND (j<>40) THEN {cellule sympa}
Compte:=tabl[i-1,j-1] + tabl[i-1,j] + tabl[i-1,j+1]
+tabl[i,j-1] + + tabl[i,j+1]
+tabl[i+1,j-1] + tabl[i+1,j] + tabl[i+1,j+1];

IF i=1 THEN
BEGIN
IF j=1 THEN Compte:=tabl[1,2]+tabl[2,2]+tabl[2,1];
IF j=40 THEN Compte:=tabl[1,39]+tabl[2,39]+tabl[2,40];
IF (j<>1) AND (j<>40) THEN Compte:=tabl[1,j-1]+tabl[1,j+1]+tabl[2,j-1]+tabl[2,j]+tabl[2,j+1];
END;

IF i=40 THEN
BEGIN
IF j=1 THEN Compte:=tabl[39,1]+tabl[39,2]+tabl[40,2];
IF j=40 THEN Compte:=tabl[39,40]+tabl[39,39]+tabl[40,39];
IF (j<>1) AND (j<>40) THEN Compte:=tabl[40,j-1]+tabl[40,j+1]+tabl[39,j-1]+tabl[39,j]+tabl[39,j+1];
END;

IF (j=1) AND ((i<>1) AND (i<>40)) THEN Compte:=tabl[i-1,1]+tabl[i+1,1]+tabl[i-1,2]+tabl[i,2]+tabl[i+1,2];

IF (j=40) AND ((i<>1) AND (i<>40)) THEN Compte:=tabl[i-1,40]+tabl[i+1,40]+tabl[i-1,39]+tabl[i,39]+tabl[i+1,39];

END;

PROCEDURE Evoluer(VAR tab:matrice);
VAR i,j,k:WORD;buff:matrice;
BEGIN
FOR i:=1 TO 40 DO
BEGIN
FOR j:=1 TO 40 DO
BEGIN
k:=compte(i,j,tab);
IF tab[i,j]=1 THEN
IF (k=2) OR (k=3) THEN buff[i,j]:=1
ELSE buff[i,j]:=0
ELSE
IF k=3 THEN buff[i,j]:=1
ELSE buff[i,j]:=0;
END;
END;

tab:=buff;

END;

FUNCTION Comp(t1,t2:matrice):BOOLEAN;
VAR i,j:WORD;bol:BOOLEAN;
BEGIN
i:=1;
bol:=TRUE;
WHILE (bol<>FALSE) AND (i<=40) DO
BEGIN
FOR j:=1 TO 40 DO
IF t1[i,j]<>t2[i,j] THEN bol:=FALSE;
i:=i+1;
END;
Comp:=bol;
END;

BEGIN
bol:=FALSE;
Clrscr;

REPEAT
nbretours:=0;
Write('Remplissage aleatoire (a), manuel (m) ou gliter gun (g) (boucle infinie !) ?');
Readln(s);
IF s='g' THEN Glitergun(t)
ELSE IF s='m' THEN Remplissage(t)
ELSE Aleat(t);

REPEAT
Clrscr;
Writeln('Etape',nbretours);
Writeln;
Affiche(t);
tab1:=t;
nbretours:=nbretours+1;
Evoluer(t);
tab2:=t;
bol:=Comp(tab1,tab2);
Evoluer(tab2);
bol:= bol OR Comp(tab1,tab2);

UNTIL bol=TRUE;
writeln('Fin.');
writeln('Encore ?');
readln(s);

UNTIL s<>'o';
readln;
END.

2 réponses

Messages postés
33214
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2021
351
Bonjour,

Bienvenue dans ce dur monde qu'est la programmation ^^

Malheureusement pour toi, nous ne fournissons pas de code sur demande...

Je t'invite à lire ceci puis à reformuler ta question après avoir commencé à coder de ton côté :


Merci de garder à l'esprit que CodeS-SourceS est une communauté d'entraide. Toutes les réponses sur le forum sont assurées par des bénévoles qui donnent de leur temps libre pour aider à résoudre les problèmes.

A noter également que nous ne faisons pas dans le "tout cuit". Soit tu trouves ton bonheur dans la partie source du site, soit à l'aide de ton moteur de recherche favori.
Ici, nous aidons volontiers sur des sujets techniques précis.

http://codes-sources.commentcamarche.net/forum/affich-1557761-bar-sujet-de-pfe-tp-et-autres-devoirs-scolaires#top

http://codes-sources.commentcamarche.net/contents/11-charte-de-commentcamarche-net-conseils-d-ecriture

Merci donc de reformuler ta demande en respectant ces quelques points.
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
13
Salut
Pour faire ce que tu demandes, il suffit de disposer du logiciel DELPHI (version 7 ou suivantes, voir précédente), de créer une application vide, ensuite tu rentres toutes tes procédures et tu les affecte sur des boutons que tu auras pris soin de placer sur l'application, avec bien sur quelques élément pour visualiser les résultats (Tliste, Tedit ...)
Bon courage