Cześć. Tworze grę w kółko i krzyżyk nxn. Mam problem ze sprawdzeniem wygranej, początkowo myślałem ze program działa poprawnie jednak wpisanie 5 tych samych znaków w obojętnie jakim miejscu na planszy, komputer odbiera jako wygrana, jestem poczatkujący, dlatego każda podpowiedz jest dobra proszę o pomoc. dziękuje.
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <cstdlib>
using namespace std;
void menu_glowne(int wybor_menu){
system("cls");
cout << "############################################" << endl;
cout << "# +---------------------+ #" << endl;
cout << "# | KOLKO & KRZYZYK | #" << endl;
cout << "# +---------------------+ #" << endl;
cout << "# #" << endl;
if(wybor_menu == 1){
cout << "# >>[ NOWA GRA ]<< #" << endl;
}else{
cout << "# NOWA GRA #" << endl;
}
cout << "# #" << endl;
if(wybor_menu == 2){
cout << "# >>[ ZASADY GRY ]<< #" << endl;
}else{
cout << "# ZASADY GRY #" << endl;
}
cout << "# #" << endl;
if(wybor_menu == 3){
cout << "# >>[ AUTORZY ]<< #" << endl;
}else{
cout << "# AUTORZY #" << endl;
}
cout << "# #" << endl;
cout << "############################################" << endl;
cout << "# w/s - gora/dol // z - zatwierdz #" << endl;
cout << "# q - wyjscie z gry #" << endl;
cout << "############################################" << endl;
}
void pokaz_plansze(string **plansza, int row, int col){
system("cls");
for(int a = -2 ; a<col*3; a++){
cout << "#";
}
cout << "\n KOLKO & KRZYZYK\n";
for(int a = -1 ; a<col*3; a++){
cout << "#";
}
cout << "#\n#";
for (int i=0; i<row; i++){
for(int j=0 ; j<col; j++){
cout << "[" <<plansza[i][j] <<"]" ;
}
cout<<"#\n#";
}
for(int a = -1; a<col*3; a++){
cout << "#";
}
}
void wygrywa(int wygralo_kolko){
if(wygralo_kolko){
cout << "\nWygralo kolko! Gratulacje!";
}else{
cout << "\nWygral krzyzyk! Gratulacje!";
}
}
int sprawdz_wygrana(string **plansza, int x, int y){
int rzad = 0;
int czy_ktos_wygral = 0;
for (int a=0; a<x; a++){ // Wiersze (0 - x)
for (int b=0; b<y; b++){ // Kolumny (od 0 do y)
for(int p=-5; p<=5; p++){ // Wiersze (-5 do 5)
for(int q=-5; q<=5; q++){ // Kolumny (od -5 do 5)
if(a+p>=0 && b+q>=0 && a+p<y && b+q<x){
if(plansza[a][b] == plansza[a+p][b+q] && plansza[a][b] != " "){
rzad += 1;
if(rzad >= 5){
pokaz_plansze(plansza, x, y);
czy_ktos_wygral = 1;
}
}
}
}
}
rzad = 0;
}
rzad = 0;
}
return czy_ktos_wygral;
}
void graj_pvp(){
// System gry pvp
system("cls");
int row, colm, kolumna, wiersz;
cout << "Za chwile rozpoczniesz gre, wybierz rozmiar planszy: " << endl;
cout << "Podaj liczbe wierszy: ";
cin >> row;
cout << "Podaj liczbe kolumn: ";
cin >> colm;
string** plansza = new string*[row];
for(int i=0; i<row; i++)
plansza[i] = new string[colm];
for(int i=0; i<row; i++)
for(int j=0; j<colm; j++)
plansza[i][j] = " ";
pokaz_plansze(plansza, row, colm);
bool kolej_kolka = true;
int czy_ktos_wygral = 0;
while(1==1){
pokaz_plansze(plansza, row, colm);
if(kolej_kolka){
cout << "\nKolej kolka !\n";
}else{
cout << "\nKolej krzyzyka!\n";
}
cout << "\nWprowadz numer kolumny: ";
cin >> kolumna;
while(1==1){
if(kolumna >= 1 && colm < kolumna ){
cout << "Podales zly zakres liczbowy! Podaj numer kolumny jeszcze raz:\n";
cin >> kolumna;
}else{
break;}}
cout << "Podaj numer wiersza: ";
cin >> wiersz;
while(1==1){
if(wiersz >= 1 && row < wiersz ){
cout << "Podales zly zakres liczbowy! Podaj numer wiersza jeszcze raz:\n";
cin >> wiersz;
}else{
break;}}
if(plansza[wiersz-1][kolumna-1] == " "){
// Miejsce puste!
if(kolej_kolka){
plansza[wiersz-1][kolumna-1] = "O";
}else{
plansza[wiersz-1][kolumna-1] = "X";
}
czy_ktos_wygral = sprawdz_wygrana(plansza, row, colm);
if(czy_ktos_wygral){
wygrywa(kolej_kolka);
system("pause");
break;
}else{
kolej_kolka = !kolej_kolka;
}
} else{
cout << "To miejsce jest zajete!";
Sleep(2000);
}
}
}
void zasady(){
system("cls");
cout << " ##########################################################" << endl;
cout << " # +-------------------+ #" << endl;
cout << " # | ZASADY GRY | #" << endl;
cout << " # +-------------------+ #" << endl;
cout << " ##########################################################" << endl;
cout << " # dowolny klawisz = powrot do menu #" << endl;
cout << " ##########################################################" << endl;
system("pause >nul");
}
void autorzy(){
system("cls");
cout << " ############################################" << endl;
cout << " # +--------------------+ #" << endl;
cout << " # | AUTORZY | #" << endl;
cout << " # +--------------------+ #" << endl;
cout << " ############################################" << endl;
cout << " # dowolny klawisz = powrot do menu #" << endl;
cout << " ############################################" << endl;
system("pause >nul");
}
int main()
{
int wybor = 1;
string literka;
while(1==1){
while(1==1){
menu_glowne(wybor);
literka = getch();
if(literka == "w"){
if(wybor > 1){
wybor -= 1;
}
}
if(literka == "s"){
if(wybor < 3){
wybor += 1;
}
}
if(literka == "z"){
break;}
if(literka == "q"){
return 0;}
}
if(wybor == 1){
graj_pvp();
}
else if(wybor == 2){
zasady();
}else if(wybor == 3){
autorzy();
}else{}
}
return 0;
}