Algorytm gry "Kółko i krzy?żyk"

1

Piszę dla siostry grę Kółko i krzyżyk w c#. Jest to plansza 10x10, a gracz wygrywa po ustawieniu 5 elementów. Potrzebuję algorytm gry komputera, tzn. w jaki sposób komputer ma wybierać najlepszy ruch (w zależności czy komputer się broni czy atakuje). Drugi algorytm to w jaki sposób sprawdzić czy jeden z graczy wygrywa (czyli ułożył już te 5 jednakowych elementów).

0

Ja jak pisałem kółko i krzyżyk, to żeby sprawdzić czy ktoś nie wygrał, to po prostu za każdym razem, gdy ktoś gdzieś postawił x lub o sprawdzałem wszystkie możliwości wygranej, ale tu to chyba nie przejdzie :p

1

Do sztucznej inteligencji polecam algorytm Mini-Max , poszukaj w necie ...
Co do sprawdzania który gracz wygrywa to tych kombinacji wcale nie jest tak sporo , wg mnie : 192 . Kilka pętli i można sprawdzić czy ktoś wygrał . Ale wiem , że łatwo powiedzieć trudniej zrobić . ;)
Moge się mylić oczywiście .

//<font color="blue">dopisane</span>
OK , oto algorytmik do sprawdzania czy ktos nie wygrał .
Założenia : plansza to tablica :
int tab[10][10];
rozwazamy zwyciestwo gracza , ktory w tablicy ma wstawione 1-ki jako jego zaznaczone pola .

for(i=0;i<10;i++)
	for(j=0;j<6;j++)
	{
		if( tab[i][j]==1 && tab[i][j+1]==1 && tab[i][j+2]==1 && tab[i][j+3]==1 && tab[i][j+4]==1)
			WYGRANA();
		if( tab[j][i]==1 && tab[j+1][i]==1 && tab[j+2][i]==1 && tab[j+3][i]==1 && tab[j+4][i]==1)
			WYGRANA();
	}
for(i=0;i<6;i++)
	for(j=0;j<6;j++)
	{
		if( tab[i][j]==1 && tab[i+1][j+1]==1 && tab[i+2][j+2]==1 && tab[i+3][j+3]==1 && tab[i+4][j+4]==1)
			WYGRANA();
		if( tab[i][j+4]==1 && tab[i+1][j+3]==1 && tab[i+2][j+2]==1 && tab[i+3][j+1]==1 && tab[i+4][j]==1)
			WYGRANA();
	}
1

Ja robilem othello - problem linii roziwazalem tak, ze jest tablica, w ktorej mam wartości pól (wbrew pozorom mialem tam o wiele wiecej niz czarne, biale, puste :P), no i w chwili kiedy stawiasz X - sprawdzasz po kolei kazdy kierunek procedurą która

  1. sprawdza czy tam jest X
  2. jesli tak to przechodzi do nastepnego w tym kierunku (ja podaje mu tak jakby wektor, czyli np. 1, 1 i on sobie dodaje do X i Y po 1) i zlicza punkt
  3. jezeli nie ma to przerywa i zwraca False czyli ze sie nie uda wygrac
  4. jezeli ilosc punktow do przejecia = 4 to znaczy ze jest 5 w linii i wygrywasz

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