Bonjour,
je suis nouveau dans la programmation en langage C.
J'ai créé un programme sur le jeu de la vie ( ici la propagation d'un feu de foret ).

Le problème est qu'il est tout dans le "main". J'aimerais le diviser en plusieurs fonctions.
Mais je ne vois pas comment je peux faire pour créer des fonctions qui renvoient 2 tableaux, 1 char ( matrice ) et un int ( matrice2 ).

Puisque je ne m'y connais pas encore fort dans les pointeurs, pouvez-vous m'aider dans mon problème ?

Merci d'avance

Mon programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
//14h45 mercredi
//déclaration des différentes variables:
int cycle=0;
int choix;
int cpta=0;
int c=0; // colonnes
int l=0; // lignes
int Max=34;
int Min=0;
char matrice[35] [35]; //tableau à deux dimenssions
int matrice2 [35] [35];// matrice 2 = tableau qui sert à compter combien de fois les cases feu sont en feu (nombre de cycle)
 
 
int main()
{
    int l=0;
    srand(time(NULL)); // permet d'utiliser le mode aléatoire
 
    //AFFICHAGE DU MENU :
           printf ("\t\t\t     *****************\n");
           printf ("\t\t\t      LE FEU DE FORET \n");
           printf ("\t\t\t     *****************\n");
           printf ("\n");
           printf ("\n");
           printf ("\n");
           printf ("                *   7777777777777777.7777777777777777777\n");
           printf ("                *   7777777777777777..777777777777777777              \n");
           printf ("               ***  7777777777777777...77777777777777777               *\n");
           printf ("       *       ***  7777777777.77777....7777777777777777               *\n");
           printf ("       *      ***** 7777777777..777..... 777.77777777777        *     ***\n") ;
           printf ("  *   ***     ***** 7777777777..777......777.77777777777       ***    *** \n");
           printf ("  *   ***    *******777777777....77......777..7777777777       ***   *****\n");
           printf (" *** ****    *******77777.777....7.......77...7777777777  *   ***** *  #_\n");
           printf ("**********  ********777777.7 .................77 7777777  * ..--#  ***  \n");
           printf ("**********  ********777777....................77..777777 ***       ***  \n");
           printf ("************ *******777777...........7.......7....777777 ***      ***** \n");
           printf ("***********   .-#.-'777777...........77...........777777*****..     # \n");
           printf ("  # ''-#---''       77.777..........7777..........777777***** ''-.---''- \n");
           printf ("    *       *       77...77.........7777.........7777777  #   *     *\n");
           printf ("   ***     ***      777............77777........77.77777     ***   *** \n");
           printf ("  *****    ***      777............777777..........77777     ***  *****\n");
           printf ("    #     *****     7777..........77777777......... 7777    *****   # \n");
           printf ("  -.---   .-#.-'    7777.........777777777.........77777  -'.-#  ''-.---'\n\n");
           printf ("\n");
           printf ("                    PUSH 'F' TO PUT FIRE OR 'Q' TO EXIT:  \n");
           printf ("                                                          =>  ");
 
 
 
                                 while (choix!= 'F' && choix !='f' && choix != 'Q' && choix != 'q')
           {
                 scanf("%s",&choix); //tant que le caractere est different de F,f,Q,q  on relit le caractere.
           }
 
 
if (choix == ('Q') || choix ==('q'))
{
 
}
 
 if (choix == ('F') || choix ==('f'))
     {
 
system("cls");
 
    while ( l < 35)  // boucle pour remplir le tableau
   {
    c = 0;
    while (c < 35)
     {
      matrice [l] [c] = ' '; // mets les espaces vides dans les colonnes et lignes
      c = c + 1;
     }
    l = l + 1;
   }
 
               while (cpta < 1100)  // insère les 750 arbres aléatoirement grace à 'rand'
              {
               l=0;
               c=0;
 
               l = (rand() % (Max - Min + 1)) + Min;
               c = (rand() % (Max - Min + 1)) + Min;
               matrice [l][c] = '*'; // ETAT ARBRE
               cpta++;
              }
 
               l=0;
               c=0;
 
               l = (rand() % (Max - Min + 1)) + Min;
               c = (rand() % (Max - Min + 1)) + Min;
               matrice [l][c] = '¸'; //ETAT FEU
               matrice2 [l][c]= 1;
 
 
 
 
 
 
 
 l=0;
   while ( l < 35) // boucle qui affiche les arbres et les espaces vides
    {
     c = 0;
      while (c < 35)
       {
         printf("%c ",matrice[c][l]);
         c = c + 1;
       }
      printf(" \n ");
      l = l + 1;
    }
 
 
system("pause");
 
    while (cycle<40)  // génère le nombre de fois qu'il faut appuyer sur ENTER
    {
      l=0;
       while ( l < 35)
        {
         c = 0;
          while (c < 35)
           {
            if(matrice [l][c] == '¸' && matrice2 [l][c] == 1) // si case feu et si matrice =1 alors on fait les autre if
             {
               if (matrice[l-1][c-1] == '*') // bas gauche de matrice[c][l]
               {
                 if (l!=0 && c !=0 ) // permet au tableau de ne pas déborder (vérification de la postion)
                 {
                     matrice[l-1][c-1] = '¸';
                 }
 
               }
               if (matrice[l][c-1] == '*') // gauche de matrice[c][l]
               {
                   if (c != 0)
                   {
                       matrice[l][c-1] = '¸';
                   }
 
               }
                if (matrice[l+1][c-1] == '*') // haut gauche de matrice[c][l]
               {
                   if (l != 34 && c !=0)
                   {
                     matrice[l+1][c-1] = '¸';
                   }
 
               }
                if (matrice[l-1][c] == '*') // haut de matrice[c][l]
               {
                   if (l !=0)
                   {
                      matrice[l-1][c] = '¸';
                   }
 
               }
                if (matrice[l+1][c] == '*') // bas de matrice[c][l]
               {
                   if(l!=34)
                   {
                    matrice[l+1][c] = '¸';
                   }
 
               }
                if (matrice[l-1][c+1] == '*') // bas droite de matrice[c][l]
               {
                   if(l !=0 && c!= 34)
                   {
                     matrice[l-1][c+1] = '¸';
                   }
 
               }
               if (matrice[l][c+1] == '*') // droite de matrice[c][l]
               {
                   if(c!=34)
                   {
                       matrice[l][c+1] ='¸';
                   }
 
               }
               if (matrice[l+1][c+1] == '*') // haut droite de matrice[c][l]
               {
                   if (l != 34 && c !=34)
                   {
                       matrice[l+1][c+1] = '¸';
                   }
 
               }
            }
         c = c + 1;
          }  //fermeture while 3
       l = l + 1;
        }
 
cycle++;
 
l=0;
   while ( l < 35) // boucle qui affiche les arbres et les espaces vides
    {
     c = 0;
      while (c < 35)
       {
         if (matrice [l][c] == '¸')
         matrice2 [l][c] += 1; // augmente de 1 les cases en feu dans matrice deux
         if (matrice2 [l][c]==5) // après le quatrième ça devient cendre (à partir du cinquième cycle)
         matrice [l][c] = '|'; // ETAT CENDRE
         c = c + 1;
       }
      l = l + 1;
    }
 
system("cls");
// affiche le tableau avec les feux et cendre
l=0;
     while ( l < 35)
      {
        c = 0;
        while (c < 35)
         {
          printf("%c ",matrice[c][l]);
          c = c + 1;
         }
        printf(" \n ");
        l = l + 1;
      }
 
 
system("pause");
 
 
}// 45
printf("\n");
printf("\tFIN de l'operation - Mise en feu d'une foret -\n");