Wyszukiwanie tych samych wartości w tablicy, które występują obok siebie

0

Cześć.

Tak wieczorkiem zerknąłem jak moją dziewczyna grała sobie w grę bubble hits i zainteresował mnie algorytm do przeszukiwa nia tablicy wielowymiarowej w celu odnalezienia tych samych wartości, które występują obok siebie.
Przykład:

231111256
161100456
444119218

Tak na mój rozum, gra polega na tablicy wielowymiarowej, w momencie kolizji kulki o określonym kolorze z inna kulką tego samego koloru, następuje reakcja łańcuchowa ( :) ) , która usuwa wszystkie kulki połączone ze źródłem. Macie jakąś myśl jak przeszukać taką tablicę i sprawdzić jakie elementy są połączone z kulką źródłową, którą właśnie wystrzeliliśmy?

Aktualnie mam coś takiego ale to słabe jest i działa tylko dla wiersza jednego.

		while(true){
					
				if(@$tablica[$starty][$startx]==@$tablica[$starty][$startx+$jest]){
					
					@$tablica[$starty][$startx+$jest]=0;
					$jest+=1;
					}
					else 
						break;}			
	

Zrobiłem jeszcze funkcję z 8 pętlami while ale nie było to uniwersalne i nie działała prawidłowo.

Pozdrawiam!

1

Poczytaj o algorytmie flood fill.
Jest to najprostsze do zaimplementowania, a i swoją rolę spełnia.

1

http://en.wikipedia.org/wiki/Flood_fill
wystarczy, że przerobisz do własnych potrzeb, aby najpierw zliczał (musiałbyś zrobić tablice w której notowałbyś które pola zostały już zliczone, aby się nie zapętliło.), a jeśli spełniony zostanie ustalony przez ciebie warunek to przeleci jeszcze raz wypełniając czym tam chcesz

0

Dzięki Panowie!

Okazało się, że moje 8 pętli while to była myśl praktycznie identyczna do tej z algorytmu flood fill, chociaż myślałem ,ze to rozwiązanie jest głupie i mało wydajne. Jeszcze raz dzięki, pewnie jakoś postaram się to zaimplementować w c#.

Pozdro!

0

Ok, już działa :) Wystarczyło zmienić tablicę na globalną :)

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