Witam, dziś na zajęciach dostałem polecenie stworzenia gry w kółko i krzyżyk w cpp. Na początku użytkownik ma podawać n czyli rozmiar tablicy (np n=36 to tablica 6x6) a także m czyli długość łańcucha który powoduje wygranie (np tablica 6x6 ale wygranie powoduje już ułożenie 4 kółek/krzyży pod rząd). O ile na stworzenie gry z tablicą n mam jakiś pomysł to nie mam zielonego pojęcia jak rozwiązać drugi problem. Czy ktoś jest w stanie podać rozwiązanie/nakierować mnie? Zaznaczam, że jestem początkujący i w cpp piszę od miesiąca.
#include <iostream>
using namespace std;
// Funkcja rysuje planszę gry w kółko i krzyżyk
//---------------------------------------------
void plansza(char t[])
{
for(int i = 1; i <= 36; i++)
{
cout << " " << t[i] << " ";
if(i % 6)
cout << "|";
else if(i != 36)
cout << "\n---+---+---+---+---+---\n";
else cout << endl;
}
}
// Funkcja zwraca true, jeśli nastąpiła
// wygrana danego zawodnika
//-------------------------------------
bool wygrana(char t[], char g)
{
bool test;
int i;
test = false;
for(i = 1; i <=31; i += 6)
test |= ((t[i] == g) && (t[i+1] == g) && (t[i+2] == g)&& (t[i+3] == g)&& (t[i+4] == g)&& (t[i+5] == g));
for(i = 1; i <= 6; i++)
test |= ((t[i] == g) && (t[i+6] == g) && (t[i+12] == g) && (t[i+18] == g) && (t[i+24] == g) && (t[i+30] == g));
test |= ((t[1] == g) && (t[8] == g) && (t[15] == g) && (t[22] == g) && (t[29] == g) && (t[36] == g));
test |= ((t[6] == g) && (t[11] == g) && (t[16] == g) && (t[21] == g) && (t[26] == g) && (t[31] == g));
if(test)
{
plansza(t);
cout << "\nGRACZ " << g << " WYGRYWA!!!\n\n";
return true;
}
return false;
}
// Funkcja zwraca true, jeśli na planszy nie ma już
// żadnego wolnego pola na ruch.
//-------------------------------------------------
bool remis(char t[])
{
for(int i = 1; i <= 36; i++)
if(t[i] == ' ') return false;
plansza(t);
cout << "\nREMIS !!!\n\n";
return true;
}
// Funkcja umożliwia ruch gracza
// Po ruchu następuje zamiana gracza
//------------------------------------
void ruch(char t[], char &gracz)
{
int r;
plansza(t);
cout << "\nGRACZ " << gracz << " : Twoj ruch : ";
cin >> r;
cout << "-----------------------\n\n";
if((r >= 1) && (r <= 36) && (t[r] == ' ')) t[r] = gracz;
gracz = (gracz == 'O') ? 'X' : 'O';
}
main()
{
char p[10],g,w;
do
{
cout << "kolko i krzyzyk\n\n\n";
for(int i = 1; i <= 36; i++) p[i] = ' ';
g = 'O';
while(!wygrana(p,'X') && !wygrana(p,'O') && !remis(p)) ruch(p,g);
cout << "Jeszcze raz ? (T = TAK) : ";
cin >> w;
cout << "\n\n\n";
} while((w == 'T') || (w == 't'));
}