papyrus2
Messages postés1Date d'inscriptiondimanche 16 mars 2014StatutMembreDernière intervention17 mars 2014
-
Modifié par papyrus2 le 17/03/2014 à 19:55
dubois77
Messages postés675Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention19 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('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);
jordane45
Messages postés38151Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 2 mai 2024344 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.
dubois77
Messages postés675Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention19 février 201914 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