Gra w kulki

0

Dostałem na projekt do napisania grę w kulki w języku C. Zasady gry są proste. Pojawiają się 3 kulki (2 rodzaje) w losowych miejscach na planszy 7x7. Przesuwamy jedną kulkę tak aby w efekcie utworzyć rząd pięciu kulek tego samego rodzaju. Gdy jest rząd kulki znikają. Do tej pory napisałem coś takiego. Kod jest jeszcze nie pełny i dużo mu brakuje lecz chciałbym się od was dowiedzieć jakim sposobem przesuwać te kulki z miejsca na miejsce. Z góry dzięki za pomoc.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void bufor(void)
{
    char bufor[1000];
    fgets(bufor, 1000, stdin);
}

void rysuj (char ekran[7][7])
{
     printf("[%c][%c][%c]\n", ekran[0][0], ekran[0][1], ekran[0][2], ekran[0][3], ekran[0][4], ekran[0][5], ekran[0][6]);
     printf("[%c][%c][%c]\n", ekran[1][0], ekran[1][1], ekran[1][2], ekran[1][3], ekran[1][4], ekran[1][5], ekran[1][6]);
     printf("[%c][%c][%c]\n", ekran[2][0], ekran[2][1], ekran[2][2], ekran[2][3], ekran[2][4], ekran[2][5], ekran[2][6]);
     printf("[%c][%c][%c]\n", ekran[3][0], ekran[3][1], ekran[3][2], ekran[3][3], ekran[3][4], ekran[3][5], ekran[3][6]);
     printf("[%c][%c][%c]\n", ekran[4][0], ekran[4][1], ekran[4][2], ekran[4][3], ekran[4][4], ekran[4][5], ekran[4][6]);
     printf("[%c][%c][%c]\n", ekran[5][0], ekran[5][1], ekran[5][2], ekran[5][3], ekran[5][4], ekran[5][5], ekran[5][6]);
     printf("[%c][%c][%c]\n", ekran[6][0], ekran[6][1], ekran[6][2], ekran[6][3], ekran[6][4], ekran[6][5], ekran[6][6]);
}

int clean (char ekran[7][7])
{
	int w, k;
    for(w=0;w<7;w++)
    	for(k=0;k<7;k++)
    		ekran[w][k]=' '; 
 }

int main()
{
	int i;
	char ch;
	char ekran[7][7];
	printf("	~KULKI~\n	WITAMY W GRZE!\n");
	while(ch!='N')
	{
		printf("	1.GRAJ\n	2.ZAMKNIJ\n");
		do
		{
    		if(scanf("%d",&i)!=1 || i!=2)
    		{
    			bufor();
    			if(i==1) break;
				if(i==2) return 0;
				printf("Wpisales nieprawidlowy znak.\nWybierz tryb konwersji ponownie: \n");
    		}
		}
		while(i!=1 && i!=2);
		if(i==1)
		{
			srand(time(NULL));
			clean(ekran);
			int i,n,w,k;
			char c;
	
			for(i=0;i<3;i++)
			{
				do
 				{
    				w=rand()%7;
    				k=rand()%7;
 				} 
				while(ekran[w][k]=' ');
 				n=rand()%2;
 				if(n=1)c='O';
				else c='X';
				ekran[w][k]=c;
			}
		}
		
		printf("\n\n\n");
		printf("Czy chcesz kontynuowac?\n(T/N) : ");
		do
		{
		    if((ch=getchar())=='T' || (ch=getchar())=='N') break;
			if(ch!='N' && ch!='T') printf("Prosze wpisac T lub N\n");
		}
		while(ch!='N' && ch!='T');
		
		if(ch=='N') return 0;
		
	}
}  
0

Napisz jaksi detektor kolizji obiektow (google pomoze). Domyslam sie, ze poruszanie sie planujesz wzdluz torow o stala odleglosc, wiec wystarczy tak naprawde zrobic enuma z rodzajami obiektow i tablice dwuwymiarowa tych enumow, wtedy tylko sprawdzasz czy na pozycji wczesniejszej/dalszej wystepuje jakis obiekt i jaki to jest obiekt, jesli kamien do przesuniecia to wywolujesz rekurencyjnie ta funkcje dla pozycji tego kamienia i tego samego kierunku, jesli zas pole jest puste zwracasz true i sie przesuwasz.

0

Zastanów się nad zrobieniem funkcji rysuj() w sposób podobny do funkcji clean().

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