Jeu de la vie sur interface graphique en pascal

papyrus2 Messages postés 1 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 17 mars 2014 - Modifié par papyrus2 le 17/03/2014 à 19:55
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 - 19 mars 2014 à 09:29
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

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
17 mars 2014 à 19:41
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.
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
19 mars 2014 à 09:29
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
0
Rejoignez-nous