Game of Life - duzzy problem ;)

0

Witam!
Jest problem. Ponizej kod gry zycie.
Problem tkwi w tym ze chce zrobic aby gra "ewoluowala" i niby to robi ale niestety zdaje mi sie ze pracuje caly czas na jednej tablicy... a chce aby robilo sie tak - pobiera dane wejsciowe z jednej tablicy nastepnie "gra przechodzi" i efekt zapisywane jest w drugiej tablicy. Nastepnie ta "druga" tablica poddawana jest grze i zapisywane jest gdzie?! - moze w tej pierwszej!?! I tak w kolko...
Watpie zeby ktos to zrozumial co napisalem ale moze jednak... [green]

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <dos.h>



int const N=15
;
int x=0;
int y=1;
int xx,yy;



	int tab[N][N]=
	
{      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
		                   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
		                   0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
						   ;
			            
						 		
		
		
		int tab1[N][N] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
						   0,0,0,0,0,
						   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
							   
					
		};




void life(int tab[N][N],int tab1[N][N])
{
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
		{
			int s=0; //suma
			for(int k=-1;k<2;k++)
				for(int l=-1;l<2;l++)
				{
					if((k!=0)||(l!=0))
						if(((i+k)<=N)&&((i+k)>=1)&&((j+l)<=N)&&((j+l)>=1))
							s+=tab[i+k][j+l];
				}
				if(s==3)
				tab1[i][j]=y;
		}
	}
}

void clrscr(){
	system("cls"); 
}



void swap(int& a , int &b) // zamiena elementow ze soba 
{
	int temp=a;
	a=b;
	b=temp;
}


void main()
{
	//randomize();

	printf(" ***ZASADY GRY ZYCIE!!!***\n");
    printf(" 1.Komorka posiada 2 lub 3 sasiadow przezywa - 1\n");
    printf(" 2.Komorka ma mniej niz 2 lub wiecej niz 3 sasiadow umier - 0\n");
    printf(" 3.Komorka ma dokladnie 3 sasiadow rodzi sie - 1\n\n");

    system("COLOR F1");
	//	int temp[N][N];

	  int* wsk1 = &tab[N][N];
      int* wsk2 = &tab1[N][N];



    printf("\n   Stan poczatkowy");
    for( int i=0;i<N;i++)
		{
			printf("\n");
			for(int j=0;j<N;j++)
				printf(" %d",tab[i][j]);
			
		}
	printf("\n\n");
    int x=1;
	system("PAUSE");

/**********************************************************************/
    do{
		
	clrscr();
	

		life(tab,tab1);
		for(i=0;i<N;i++)
		{
			printf("\n");
			for(int j=0;j<N;j++)
			{
				printf(" %d",tab1[i][j]);
				
				
			}
		}
        for(i=0;i<N;i++)
		
			
			for(int j=0;j<N;j++)
			
				tab1[i][j]=tab[i][j];

			
		

		printf("\n\n");
	
	//	system("PAUSE");
            for(xx = 0; xx < 4000; xx++)
			{ 
			for(yy = 0; yy < 20000; yy++)
			{    }}
clrscr();

     
		
       for(xx = 0; xx < 4000; xx++)
		{
			for(yy = 0; yy < 20000; yy++)
			{    }
	   }

	x++	;
	
}while (x<50 );


	
system("PAUSE");
}
0

Bo nigdzie nie użyłeś swojej funkcji swap. Swoją drogą bawiłem się w takie coś i fajne efekty uzyskuje się jak od ilosci sąsiadów zależy PRAWDOPODOBIEŃSTWO, że dana komórka "zakwitnie" albo umrze, też jest dość fajnie i prosto tworzyć wszelkiego rodzaju "murki" (pola na które nie może wejść życie), a z tego potem robić jakieś figury. Kupa frajdy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1