Witam, mam do zrobienia zadanie polegające na tym, że na planszę 6x6 mam zliczać symbole. Tzn., za 3 zajęte pola obok siebie (po skosie, pionowo lub poziomo) gracz dostaje 1 punkt, a za 6 zajętych w ten sposób pól - 2 punkty. Gracze na zmianę podają pola - jeden z nich gra losowo, jest to komputer. Mój problem polega właśnie na zliczaniu tych punktów, nie wiem za bardzo jak to zrobić. Oto mój kod, zawiera on już funkcję licz_punkty, która jest skomentowana, bo nie jestem pewny, co do jej poprawności:
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
const int MAX_WIERSZ = 6;
const int MAX_KOLUMNA = 6;
void inicjuj_plansze (char plansza[MAX_WIERSZ][MAX_KOLUMNA])
{ for (int i=0; i<MAX_WIERSZ; i++)
{ for (int j=0; j<MAX_KOLUMNA; j++)
plansza[i][j] = ' ';
}
}
void rysuj_plansze (const char plansza[MAX_WIERSZ][MAX_KOLUMNA])
{ for (int i=0; i<MAX_WIERSZ; i++)
{ cout << " +-----+-----+-----+-----+-----+-----+" << endl;
cout << i + 1 << "|";
for(int j = 0; j < MAX_KOLUMNA; j++)
if( plansza[i][j] == '#' )
cout << " ### |";
else
cout << " |";
cout << endl;
cout << " |";
for(int j = 0; j < MAX_KOLUMNA; j++)
if(plansza[i][j] == '#' )
cout << " ### |";
else
cout << " |";
cout << endl;
}
cout << " +-----+-----+-----+-----+-----+-----+" << endl;
cout << " A B C D E F " << endl;
cout << endl << endl;
}
bool sprawdz_pole (const char plansza[MAX_WIERSZ][MAX_KOLUMNA], int wiersz, int kolumna)
{ if (wiersz < 1 || wiersz > MAX_WIERSZ)
{ cout << "Nieprawidlowy wiersz" << endl;
return false;
}
if (kolumna < 1 || kolumna > MAX_KOLUMNA)
{ cout << "Nieprawidlowa kolumna" << endl;
return false;
}
if (plansza[wiersz-1][kolumna-1] != ' ')
{ cout << "Pole jest zajete, podaj inne wspolrzedne: " << endl;
return false;
}
return true; // okay to place stone here
}
void wybierz_pole1 (char plansza[MAX_WIERSZ][MAX_KOLUMNA])
{ char litera;
int wiersz;
int kolumna;
do
{ cout << "Podaj wiersz (1-6): ";
cin >> wiersz;
cout << "Podaj kolumne (A-F): ";
cin >> litera;
litera = toupper(litera);
kolumna = litera - 'A' + 1;
}
while (! sprawdz_pole (plansza, wiersz, kolumna));
plansza[wiersz-1][kolumna-1] = '#';
cout << "wybrane pole to: " << wiersz << litera << endl;
}
bool sprawdz_dostepnosc2 (const char plansza[MAX_WIERSZ][MAX_KOLUMNA], int wiersz, int kolumna)
{ // nie potrzeba sprawdzac dostepnosci pola
return (plansza[wiersz-1][kolumna-1] == ' ');
}
void wybierz_pole2 (char plansza[MAX_WIERSZ][MAX_KOLUMNA])
{ char litera;
int wiersz;
int kolumna;
do
{ wiersz = rand()%6+1;
kolumna = rand()%6+1;
litera = kolumna + 'A' - 1;
}
while ( !sprawdz_dostepnosc2 (plansza, wiersz, kolumna));
plansza[wiersz-1][kolumna-1] = '#';
cout << "Wybrane pole to: " << wiersz << litera << endl;
}
bool sprawdz_dostepnosc (char plansza[MAX_WIERSZ][MAX_KOLUMNA])
{ for (int i=0; i<MAX_WIERSZ; i++)
{ for (int j=0; j<MAX_KOLUMNA; j++)
{ if (plansza[i][j] == ' ')
return false;
}
}
return true;
}
/*
void policz_punkty(char plansza[MAX_WIERSZ][MAX_KOLUMNA]) //int wiersz, int kolumna)
{
int wiersz;
int kolumna;
int punkty =0;
int licznik =0;
for(int i=0;i<6;i++) //dla kolumny
{
if(plansza[wiersz][i]=='#') licznik++;
}
if(licznik==3) punkty=punkty+1;
else if(licznik==6) punkty=punkty+2;
licznik=0;
for(int i=0;i<6;i++) // dla wiersza
{
if(plansza[i][kolumna]=='#') licznik++;
}
if(licznik==3) punkty=punkty+1;
else if(licznik==6) punkty=punkty+2;
licznik=0;
if(wiersz==kolumna) //dla przekątnej (lewy gorny rog -> prawy dolny), jeżeli do niej należy
{
for(int i=0;i<6;i++)
{
if(plansza[i][i]=='#') licznik++;
}
if(licznik==3) punkty=punkty+1;
else if(licznik==6) punkty=punkty+2;
licznik=0;
}
if(wiersz+kolumna==5) //dla drugiej, jeżeli do niej należy
{
for(int i=0;i<6;i++)
{
if(plansza[i][i]=='#') licznik++;
}
if(licznik==3) punkty=punkty+1;
else if(licznik==6) punkty=punkty+2;
}
return punkty;
}
*/
int main()
{
char plansza[MAX_WIERSZ][MAX_KOLUMNA];
int numer_ruchu = 0;
srand(time(NULL));
inicjuj_plansze (plansza);
while (! sprawdz_dostepnosc(plansza))
{
rysuj_plansze (plansza);
if (numer_ruchu & 1){
wybierz_pole2 (plansza);
system("cls");}
else
wybierz_pole1 (plansza);
numer_ruchu++;
system("cls");
}
//policz_punkty(plansza);
cout << "Koniec gry" << endl;
rysuj_plansze (plansza);
system ("pause");
return 0;
}
Z góry dziękuję za pomoc :)