Zaczalem robic to jakos i powoli cos wychodzi, ale mam problem przy sprawdzaniu czy jest cos zatopione, mecze sie z tym dobra godzinke. Fajnie by bylo, gdyby ktos rzucil okiem. Jezeli jakichs zmiennych nie zadeklarowalem w funkcji, to dalem je jako globalne - latwiej mi tak pracowac.
Jak sie program zachowuje? Gram sobie, komputer zestrzeli mi np. 4 masztowiec do konca, az w koncu nie ma gdzie trafiac[w okolo puste/trafione pola] - czyli tak jakby nie wywolywal funkcji czyZatopione[dalem sobie dzwiek z komputerka gdyby ta funkcja sie wywolala - cisza]. Na wszelki wypadek u siebie wklepalem ja przed kazdym rysowaniem[je mam na pewno dobrze]
Funkcja, ktora sprawdza czy sa trafione do konca masztowce, jezeli tak, to wklepuje w nich zatopienie
void czyZatopione(char statkiGracza[10][10])
{
if(cztero)
{
if(F4==1) //F4, podobnie jak F3, F2 i F1 mowi o polozeniu pionowym/poziomym statku
{
if(statkiGracza[X4][Y4]=='T'&& statkiGracza[X4][++Y4]=='T')
{
if(statkiGracza[X4][++Y4]=='T')
{
if(statkiGracza[X4][++Y4]=='T')
{
Y4-=3;
statkiGracza[X4][Y4]='Z';
statkiGracza[X4][++Y4]='Z';
statkiGracza[X4][++Y4]='Z';
statkiGracza[X4][++Y4]='Z';
cztero=0;
traf=0;
}
else Y4-=3;
}
else Y4-=2;
}
else --Y4;
}
if(F4==0)
{
if(statkiGracza[X4][Y4]=='T'&& statkiGracza[++X4][Y4]=='T')
{
if(statkiGracza[++X4][Y4]=='T')
{
if(statkiGracza[++X4][Y4]=='T')
{
X4-=3;
statkiGracza[X4][Y4]='Z';
statkiGracza[++X4][Y4]='Z';
statkiGracza[++X4][Y4]='Z';
statkiGracza[++X4][Y4]='Z';
cztero=0;
traf=0;
}
else X4-=3;
}
else X4-=2;
}
else --X4;
}
}
if(troj)
{
if(F3==1)
{
if(statkiGracza[X3][Y3]=='T'&&statkiGracza[X3][++Y3]=='T')
{
if(statkiGracza[X3][++Y3]=='T')
{
Y3-=2;
statkiGracza[X3][Y3]='Z';
statkiGracza[X3][++Y3]='Z';
statkiGracza[X3][++Y3]='Z';
troj=0;
traf=0;
}
else Y3-=2;
}
else --Y3;
}
if(F3==0)
{
if(statkiGracza[X3][Y3]=='T'&&statkiGracza[++X3][Y3]=='T')
{
if(statkiGracza[++X3][Y3]=='T')
{
X3-=2;
statkiGracza[X3][Y3]='Z';
statkiGracza[++X3][Y3]='Z';
statkiGracza[++X3][Y3]='Z';
troj=0;
traf=0;
}
else X3-=2;
}
else --X3;
}
}
if(dwu)
{
if(F2==1)
{
if(statkiGracza[X2][Y2]=='T'&&statkiGracza[X2][++Y2]=='T')
{
Y2-=1;
statkiGracza[X2][Y2]='Z';
statkiGracza[X2][++Y2]='Z';
dwu=0;
traf=0;
}
else --Y2;
}
if(F2==0)
{
if(statkiGracza[X2][Y2]=='T'&&statkiGracza[++X2][Y2]=='T')
{
X2-=1;
statkiGracza[X2][Y2]='Z';
statkiGracza[++X2][Y2]='Z';
dwu=0;
traf=0;
}
else --X2;
}
}
if(jedno)
{
if(statkiGracza[X1][Y1]=='T')
{
statkiGracza[X1][Y1]='Z';
jedno=0;
traf=0;
}
}
}
I na przykladzie wybierania 4romasztowca, gdzie dane sa zapisywane.
void wybieranie_4romasztowca(char statkiGracza[10][10])
{
int i=4, j=4, flaga=1;
char z='A' ;
while(1)
{
z=getch();
if(z==strzalka_LEWO)//zdefiniowany jest kod strzalek
{
if(j==0)
continue;
j--;
if(flaga==1)
rysowanieplanszyPoziom( j, i, statkiGracza);//funkcja, ktora zawiera strukture COORD, rysuje plansze i nie ingeruje w j oraz i
else if(flaga==0)
rysowanieplanszyPion( j, i, statkiGracza);
}
if(z==strzalka_PRAWO)
{
if(flaga==1)
{
if(j==6)
continue;
j++;
rysowanieplanszyPoziom( j, i, statkiGracza);
}
else if(flaga==0)
{
if(j==9)
continue;
j++;
rysowanieplanszyPion(j, i, statkiGracza);
}
}
if(z==strzalka_GORA)
{
if(i==0)
continue;
i--;
if(flaga==1)
rysowanieplanszyPoziom( j, i, statkiGracza);
else if(flaga==0)
rysowanieplanszyPion( j, i, statkiGracza);
}
if(z==strzalka_DOL)
{
if(flaga==1)
{
if(i==9)
continue;
i++;
rysowanieplanszyPoziom( j, i, statkiGracza);
}
else if(flaga==0)
{
if(i==6)
continue;
i++;
rysowanieplanszyPion( j, i, statkiGracza);
}
}
if(z==9)//klawisz tabulacji - ma zmieniac poziom na pion i odwrotnie
{
if(flaga==1)
{
if(i<7)
{
flaga=0;
rysowanieplanszyPion(j, i, statkiGracza);
}
}
else if(flaga==0)
{
if(j<7)
{
flaga=1;
rysowanieplanszyPoziom(j, i, statkiGracza);
}
}
}
if(z==' ') //klawisz spacji
{
if(flaga==1)
{
X4=i;//zapisuje wartosci wspolrzednych glownego klocka oraz czy jest to poziom/pion
Y4=j;
F4=1;
statkiGracza[i][j]=1;
statkiGracza[i][++j]=1;
statkiGracza[i][++j]=1;
statkiGracza[i][++j]=1;
break;
}
else if(flaga==0)
{
X4=i;
Y4=j;
F4=0;
statkiGracza[i++][j]=1;
statkiGracza[i++][j]=1;
statkiGracza[i++][j]=1;
statkiGracza[i][j]=1;
break;
}
}
}
}
Moge dorzucic jeszcze kod gdzie strzela, ale nie chce robic balaganu poki co. Dzieki z gory :)