Pytam bo w przypadku złego ruchu gracza return 0 pomija turę zamiast dać komunikat o błędzie i dać możliwość ponownego ruchu i robi skip na kolejnego gracza, a return -1 daje możliwość ponownego ruchu po błędzie.
WUT? Daj lepiej kod który wywołuje ten fragment kodu. Albo cały kod gry? Tak by było najlepiej jakbyś cały kod gry wgrał na githuba i powiedział w którym pliku masz problem. Chyba że gra mieści się w 1k linii to może być tu
Tutaj cały kod gry
#include<windows.h>
#include<iostream>
#include<conio.h>
using namespace std;
const int EMPTY = 1;
const int WHITE = 2;
const int BLACK = 3;
void przywitanie()
{
cout<<"\t\t\t\t\tWitajcie w moich warcabach :D!!\n";
cout<<"\t\t\t\t\t Krotka instrukcja: \n\n\t\t\t\tRuch pionka odbywa sie ukosnie w osiach Y oraz X \n\t\t\t\t nalezy najpierw wpisac cyfre, a potem litere"<<'\n';
cout<<"\t\t\t Jezeli wykonasz jakis ruch zle, gra cie o tym ostrzeze\n\t\t\t\t i da ci mozliwosc ponownego wykonania ruchu"<<'\n';
cout<<"\t\t\t\t Gre zaczynaja biale pionki, POWODZENIA!!\n";
cout<<"\t\t\t\t((niestosowanie sie grozi bledem w konsoli))\n\n\n";
system("pause");
system("cls");
}
char wns(int i) //wns - wartosc na symbol
{
switch(i)
{
case 0:
return ' ';
case 1:
return ' ';
case 2:
return 'B';
case 3:
return 'C';
}
return '?';
}
void drukujPlansze(int d[8][8])
{
int r, c;
//cout<<" +---+---+---+---+---+---+---+---+\n";
cout<<" *~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*\n";
for (r=0; r<8; ++r)
{
cout<<r+1<<" |";
for (c=0; c<8; ++c)
cout<<" "<<wns(d[r][c])<<" |";
//cout<<"\n +---+---+---+---+---+---+---+---+\n";
cout<<"\n *~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*\n";
}
cout<<" a b c d e f g h\n";
}
void podmienIJKL(int d[8][8],int i,int j,int k,int l)
{
int temp;
temp = d[i][j];
d[i][j] = d[k][l];
d[k][l] = temp;
}
int ruchPionka(int d[8][8],int gracz,int i,int j,int k,int l)
{
int skok_wier;
int skok_kolu;
/*
if(gracz == WHITE){
cout<<"BIALY rusza sie z "<<i+1<<", "<<char(j+'a')<<" do "<<k+1<<", "<<char(l+'a')<<'\n';
//Sleep(800);
} else {
cout<<"CZARNY rusza sie z "<<i<<","<<j+'a'<<" do "<<k<<","<<l+'a'<<'\n';
//Sleep(800);
}
*/
if(gracz == WHITE){
if(d[i][j] != WHITE){
cout<<"\nTo nie twoj pionek!\n";
return -1;
}
} else {
if(d[i][j] != BLACK){
cout<<"\nTo nie twoj pionek!\n";
return -1;
}
}
if(d[k][l] != EMPTY){
cout<<"\nMusisz sie ruszyc na puste pole\n";
return -1;
}
if(gracz == WHITE){
if(i >= k){
cout<<"\nBialy pionek moze isc tylko w dol\n";
return -1;
}
} else {
if(i <= k){
cout<<"\nCzarny pionek moze isc tylko do gory\n";
return -1;
}
}
if(i - k == -1 || i - k == 1){ //przemieszczanie pionka
if(j - l == 1 || j - l == -1){
podmienIJKL(d,i,j,k,l);
return 0;
}
}
if(i - k == -2 || i - k == 2){ //bicie
if(j - l == -2 || j - l == 2){
if(i < k){
skok_wier = i + 1;
} else {
skok_wier = i - 1;
}
if(j < l){
skok_kolu = j + 1;
} else {
skok_kolu = j - 1;
}
if(gracz==WHITE && d[skok_wier][skok_kolu]!=BLACK){
cout<<"\nMozesz skakac tylko nad przeciwnikiem\n";
return -1;
}
if(gracz==BLACK && d[skok_wier][skok_kolu]!=WHITE){
cout<<"\nMozesz skakac tylko nad przeciwnikiem\n";
return -1;
}
d[skok_wier][skok_kolu] = 1;
podmienIJKL(d,i,j,k,l);
return 0;
}
}
cout<<"\nMozesz sie ruszac tylko po ukosie\n";
return -1;
}
int main()
{
int i, k;
char j, l;
int d[8][8]={
{0,2,0,2,0,2,0,2},
{2,0,2,0,2,0,2,0},
{0,2,0,2,0,2,0,2},
{1,0,1,0,1,0,1,0},
{0,1,0,1,0,1,0,1},
{3,0,3,0,3,0,3,0},
{0,3,0,3,0,3,0,3},
{3,0,3,0,3,0,3,0}};
przywitanie();
while(1){
drukujPlansze(d);
while(1){
cout<<"Tura gracza Bialego: ";
i=(getch()-'0'); cout<<i;
j=getch(); cout<<j;
cout<<" do: ";
k=(getch()-'0'); cout<<k;
l=getch(); cout<<l;
if(ruchPionka(d, WHITE, i-1,j -'a',k-1,l - 'a') == 0){
break;
}
cout<<"Niedozwolony ruch, sprobuj ponownie\n";
Sleep(3000);
system("cls");
drukujPlansze(d);
}
system("cls");
drukujPlansze(d);
while(1){
cout<<"Tura gracza Czarnego: ";
i=(getch()-'0'); cout<<i;
j=getch(); cout<<j;
cout<<" do :";
k=(getch()-'0'); cout<<k;
l=getch(); cout<<l;
if(ruchPionka(d, BLACK, i-1,j - 'a',k-1,l - 'a') == 0){
break;
}
cout<<"Niedozwolony ruch, sprobuj ponownie\n";
Sleep(3000);
system("cls");
drukujPlansze(d);
}
system("cls");
}
}