Zacznę od tego, że kod trochę jeszcze twardy i brudny ale najpierw muszę to zbudować a potem pomalować :) Zacząłem ostatnio budować tic tac toe w konsolce lecz wystąpił mi pewien bug. Po półgodzinnym ślęczeniu nad kodem znalazłem go i zrozumiałem, że muszę dodać chara do tej jedynej tablicy w kodzie wybor[ ]. Wiadomo to wszech i wobec, że jak się ma zepsuty kod i się nie rozumie to jest jeszcze ok. No ale jak kod działa.. i się jego nie umka to jest już źle. Dlatego zwracam się o wyjaśnienie po co tu potrzebny jest 1 dodatkowy char w tablicy skoro jest tylko 9 ruchów a tablica składa się z 0,1,2,3,4,5,6,7,8 <- przecież to powinno wystarczyc bo jest numeracja tablicy od 0. So what happend?
ps: sorry for namespace :]
#include <iostream>
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
///zmienne///
int i=0, losowa=0, p=0;
char wybor[9]; //< tu trzeba było z wybor[8] zrobic wybor[9]
string tablica;//plansza
void ktora_tab(char wyborek);
void ktora_tab2(char wyborek);
///funkcja glowna///
int main()
{
cout << "-----------------------" << endl;
cout << " gra w kolko i krzyzyk " << endl;
cout << "-----------------------" << endl;
cout << "wybierz jak chcesz grac: a)kolega=1 b)komputer=2 c)wyjscie=3 :)" << endl;
p=getch();
if (p!='1' && p!='2')
{
cout << endl;
cout<<"no to nara ;)"<<endl;
exit(0);
}
cout << endl;
cout << "sterowanie za pomoca liter po lewej stronie klawiatury: q,w,e" << endl;
cout << " a,s,d" << endl;
cout << " z,x,c" << endl;
cout << "aby kontynuowac kliknij enter :) " << endl;
getchar();
system("cls");
tablica ="|---|---|---|";tablica+='\n';
tablica+="| | | |";tablica+='\n';
tablica+="|---|---|---|";tablica+='\n';
tablica+="| | | |";tablica+='\n';
tablica+="|---|---|---|";tablica+='\n';
tablica+="| | | |";tablica+='\n';
tablica+="|---|---|---|";tablica+='\n';
cout<<tablica;
srand(time(NULL));
///przelacznik///
switch (p)
{
case '1':///inny gracz///
{
for(;;)
{
/// wybor gracza kolkowego
if (i==0||i==2||i==4||i==6||i==8)
{
cout<<"tura gracza z kolkiem"<<endl;
wybor[i]=getch();
while( wybor[i]==wybor[i-1] || wybor[i]==wybor[i-2] || wybor[i]==wybor[i-3]||
wybor[i]==wybor[i-4] || wybor[i]==wybor[i-5] || wybor[i]==wybor[i-6]||
wybor[i]==wybor[i-7] || wybor[i]==wybor[i-8] || wybor[i]==wybor[i-9])
{
wybor[i]=getch();
}
ktora_tab(wybor[i]);
system("cls");
cout<<tablica;
///sprawdzenie wygranej
if (
tablica[16]=='o' && tablica[48]=='o' && tablica[80]=='o'
|| tablica[24]=='o' && tablica[48]=='o' && tablica[72]=='o'
|| tablica[16]=='o' && tablica[20]=='o' && tablica[24]=='o'
|| tablica[44]=='o' && tablica[48]=='o' && tablica[52]=='o'
|| tablica[72]=='o' && tablica[76]=='o' && tablica[80]=='o'
|| tablica[16]=='o' && tablica[44]=='o' && tablica[72]=='o'
|| tablica[20]=='o' && tablica[48]=='o' && tablica[76]=='o'
|| tablica[24]=='o' && tablica[52]=='o' && tablica[80]=='o'
)
{
cout<<"gracz z kolkiem wygral! :)";
Sleep(2000);
getchar();
exit(0);
}
}
/// wybor gracza krzyzykowego///
else if (i==1||i==3||i==5||i==7)
{
cout<<"tura gracza z krzyzykiem"<<endl;
wybor[i]=getch();
while( wybor[i]==wybor[i-1] || wybor[i]==wybor[i-2] || wybor[i]==wybor[i-3]||
wybor[i]==wybor[i-4] || wybor[i]==wybor[i-5] || wybor[i]==wybor[i-6]||
wybor[i]==wybor[i-7] || wybor[i]==wybor[i-8] || wybor[i]==wybor[i-9] )
{
wybor[i]=getch();
}
ktora_tab2(wybor[i]);
system("cls");
cout<<tablica;
///sprawdzenie wygranej
if (
tablica[16]=='x' && tablica[48]=='x' && tablica[80]=='x'
|| tablica[24]=='x' && tablica[48]=='x' && tablica[72]=='x'
|| tablica[16]=='x' && tablica[20]=='x' && tablica[24]=='x'
|| tablica[44]=='x' && tablica[48]=='x' && tablica[52]=='x'
|| tablica[72]=='x' && tablica[76]=='x' && tablica[80]=='x'
|| tablica[16]=='x' && tablica[44]=='x' && tablica[72]=='x'
|| tablica[20]=='x' && tablica[48]=='x' && tablica[76]=='x'
|| tablica[24]=='x' && tablica[52]=='x' && tablica[80]=='x'
)
{
cout<<"gracz z krzyzykiem wygral! :)";
Sleep(2000);
getchar();
exit(0);
}
}//if
if (i==8)
{
cout<<"nikt nie wygral :)";
Sleep(2000);
getchar();
exit(0);
}
i++;
}//for 1
}//case 1
break;
case '2':///komputer///
{
for(;;)
{
/// wybor gracza kolkowego
if (i==0||i==2||i==4||i==6||i==8)
{
cout<<"tura gracza z kolkiem"<<endl;
wybor[i]=getch();
while( wybor[i]==wybor[i-1] || wybor[i]==wybor[i-2] || wybor[i]==wybor[i-3]||
wybor[i]==wybor[i-4] || wybor[i]==wybor[i-5] || wybor[i]==wybor[i-6]||
wybor[i]==wybor[i-7] || wybor[i]==wybor[i-8])
{
wybor[i]=getch();
}
ktora_tab(wybor[i]);
system("cls");
cout<<tablica;
///sprawdzenie wygranej
if (
tablica[16]=='o' && tablica[48]=='o' && tablica[80]=='o'
|| tablica[24]=='o' && tablica[48]=='o' && tablica[72]=='o'
|| tablica[16]=='o' && tablica[20]=='o' && tablica[24]=='o'
|| tablica[44]=='o' && tablica[48]=='o' && tablica[52]=='o'
|| tablica[72]=='o' && tablica[76]=='o' && tablica[80]=='o'
|| tablica[16]=='o' && tablica[44]=='o' && tablica[72]=='o'
|| tablica[20]=='o' && tablica[48]=='o' && tablica[76]=='o'
|| tablica[24]=='o' && tablica[52]=='o' && tablica[80]=='o'
)
{
cout<<"gracz z kolkiem wygral! :)";
Sleep(2000);
getchar();
exit(0);
}
}//wybor gracza
/// wybor komputera ///
if (i==1||i==3||i==5||i==7)
{
cout<<"moja tura"<<endl;
Sleep(500);
losowa=rand()%9+1;
switch (losowa)
{
case 1: wybor[i]='q'; break;
case 2: wybor[i]='w'; break;
case 3: wybor[i]='e'; break;
case 4: wybor[i]='a'; break;
case 5: wybor[i]='s'; break;
case 6: wybor[i]='d'; break;
case 7: wybor[i]='z'; break;
case 8: wybor[i]='x'; break;
case 9: wybor[i]='c'; break;
default: {cout<<"wystapil blad"; exit(0);}
}
while( wybor[i]==wybor[i-1] || wybor[i]==wybor[i-2] || wybor[i]==wybor[i-3]
|| wybor[i]==wybor[i-4] || wybor[i]==wybor[i-5] || wybor[i]==wybor[i-6]
|| wybor[i]==wybor[i-7] || wybor[i]==wybor[i-8]
)
{
losowa=rand()%9+1;
losowa=rand()%9+1;
switch (losowa)
{
case 1: wybor[i]='q'; break;
case 2: wybor[i]='w'; break;
case 3: wybor[i]='e'; break;
case 4: wybor[i]='a'; break;
case 5: wybor[i]='s'; break;
case 6: wybor[i]='d'; break;
case 7: wybor[i]='z'; break;
case 8: wybor[i]='x'; break;
case 9: wybor[i]='c'; break;
default: {cout<<"wystapil blad"; exit(0);}
}
}
ktora_tab2(wybor[i]);
system("cls");
cout<<tablica;
///sprawdzenie wygranej
if (
tablica[16]=='x' && tablica[48]=='x' && tablica[80]=='x'
|| tablica[24]=='x' && tablica[48]=='x' && tablica[72]=='x'
|| tablica[16]=='x' && tablica[20]=='x' && tablica[24]=='x'
|| tablica[44]=='x' && tablica[48]=='x' && tablica[52]=='x'
|| tablica[72]=='x' && tablica[76]=='x' && tablica[80]=='x'
|| tablica[16]=='x' && tablica[44]=='x' && tablica[72]=='x'
|| tablica[20]=='x' && tablica[48]=='x' && tablica[76]=='x'
|| tablica[24]=='x' && tablica[52]=='x' && tablica[80]=='x'
)
{
cout<<"wygralem!! :)";
Sleep(2000);
getchar();
exit(0);
}
}//wybor komputera
else if (i==8)
{
cout<<"cuz.. nikt nie wygral:)";
Sleep(2000);
getchar();
exit(0);
}
i++;
}//for 2
}//case 2
break;
}
return 0;
}
///
///funkcje poboczne - gdzie jest kolko/krzyzyk
void ktora_tab(char wyborek)
{
switch(wybor[i])
{
case 'q':
{tablica[16]='o';}
break;
case 'w':
{tablica[20]='o';}
break;
case 'e':
{tablica[24]='o';}
break;
case 'a':
{tablica[44]='o';}
break;
case 's':
{tablica[48]='o';}
break;
case 'd':
{tablica[52]='o';}
break;
case 'z':
{tablica[72]='o';}
break;
case 'x':
{tablica[76]='o';}
break;
case 'c':
{tablica[80]='o';}
break;
default: exit(0);
}
}
void ktora_tab2(char wyborek)
{
switch(wybor[i])
{
case 'q':
{tablica[16]='x';}
break;
case 'w':
{tablica[20]='x';}
break;
case 'e':
{tablica[24]='x';}
break;
case 'a':
{tablica[44]='x';}
break;
case 's':
{tablica[48]='x';}
break;
case 'd':
{tablica[52]='x';}
break;
case 'z':
{tablica[72]='x';}
break;
case 'x':
{tablica[76]='x';}
break;
case 'c':
{tablica[80]='x';}
break;
default: exit(0);
}
}
muszę dodać inta