void zmienGeneracje(int **plansza, int rozmiarPlanszy, int nrGen) { int **poprzedniaGen; int i = 0; int j = 0; int k; poprzedniaGen = (int**)malloc(sizeof(int*)*(rozmiarPlanszy + 2)); /* alokujemy pamiec dla poprzedniej planszy */ for (i = 0; i<rozmiarPlanszy + 2; i++) poprzedniaGen[i] = (int*)malloc(sizeof(int)*(rozmiarPlanszy + 2)); for (i = 0; i<rozmiarPlanszy + 2; i++) { for (j = 0; j<rozmiarPlanszy + 2; j++) poprzedniaGen[i][j] = plansza[i][j]; } for (i = 1; i<rozmiarPlanszy; i++) { for (j = 1; j<rozmiarPlanszy; j++) { int ileZywych = 0; int akcja = 0; ileZywych = sprawdzSasiadow(i, j, poprzedniaGen); akcja = zasady(ileZywych, poprzedniaGen[i][j]); plansza[i][j] = zmienStan(akcja, poprzedniaGen[i][j]); } } zapiszKonfiguracje(plansza, nrGen, rozmiarPlanszy); wypisywanie(plansza, rozmiarPlanszy); generujObraz(plansza, rozmiarPlanszy, nrGen); /*printf("nowa\n"); wypisywanie(poprzedniaGen, rozmiarPlanszy);*/ for(k=0 ; k < rozmiarPlanszy+2 ; k++) free(poprzedniaGen[k]); free(poprzedniaGen); }
int main(){ int czl; //jaki ruch wykonal czlowiek int kom; //jaki ruch wykonal komputer int suma; //jaka jest aktualnie suma int licznik; //ktora kolejka jest teraz int nau[3][LIMIT/2]; //tabela nakuki calkowitej; komp wykona najw tylko polowe wszystkich ruchow int pomnau[3][LIMIT/2]; //tabela wykonanych ruchow w pojedynczej grze char ruch='z'; //informacja o tym kto wykonal ostatni ruch czyscTab(nau); do{ czyscTab(pomnau); suma=0; czl=0; kom=0; licznik=0; zasady(); wyswietl(czl,kom,suma); while(czyKoniec(suma)){ czl=ruchCzl(suma); //czyLegal(suma,czl) ruch='c'; suma+=czl; if(czyKoniec(suma)){ kom=ruchKom(licznik,pomnau,nau,suma); //czyLegal(suma,kom),naukaCzesc(),sortuj() ruch='k'; suma+=kom; } wyswietl(czl,kom,suma); licznik++; }//koniec wewnetrznej petli ktoWygr(ruch,pomnau,nau);//naukaCalosc(pomnau,nau,znak) }while(czyJeszcze()); printf("Dzieki za gre. Do zobaczenia nastepnym razem ;)\n"); return 0; }