Witam.
Dziś zajmiemy się funkcjami odpowiedzialnymi za nasze statki będą to:
-void zaznacz();
-void zaznaczrysuj();
Ta pierwsza odpowiada bezpośrednio za mechanikę zaznaczania natomiast ta druga rysuje nam planszę.zajmijmy się najpierw rysowaniem planszy.
void zaznaczrysuj()
{
cout<<"|---|---|---|---|---|---|---|---|---|---|"<<endl;
for(int j=0;j<=9;j++)
{
for(int i=0;i<=9;i++)
{
if (zaznaczenia[j][i]==true)
{
cout<<"| ";
cout<<"Y ";
}
else
cout<<"|"<<j<<" "<<i;
}
cout<<"|"<<endl<<"|---|---|---|---|---|---|---|---|---|---|"<<endl;
}
}
Nie będziemy dokładnie opisywać powyższego kodu ponieważ jest on bardzo podobny do tego rysującego planszę główną z tą różnicą że tu niema planszy bocznej na której są zaznaczone nasze statki ponieważ to jest nasza plansza, a plansza dla komputera jest obecnie zbędna.
Teraz pora na funkcję odpowiedzialną za mechanikę.
void zaznacz()
{
char ii,jj; //deklarujemy zmienne do poprania znaków
int iii,jjj; //deklasujemy zmienne do określania koordynatorów
for(int i=0;i<20;i++)//pętla wywoływana do zaznaczenia 20 statków
{
zaznaczrysuj(); //narysowanie naszej planszy
do{
jj=getch(); //pobranie pierwszej współrzędnej
jjj=jj-48; //przypisanie pierwszej współrzędnej, odejmujemy 48 ponieważ każda cyfra jako znak ASCII ma wartość o 48 większą
ii=getch();//to samo robimy z drugą współrzędna
iii=ii-48;
if(zaznaczenia[jjj][iii]==true) //sprawdzamy czy nie zaznaczyliśmy wcześniej tego pola
{
system("cls");
zaznaczrysuj();
cout<<"to pole już zaznaczyłeś wybierz inne"<<endl;
//jeśli zaznaczyliśmy czyścimy konsole rysujemy plansze i wypisujemy odpowiedni komentarz
}
if(jjj>=10||iii>=10||jjj<0||iii<0) //sprawdzamy czy na pewno wpisaliśmy pole z zakresu
{
system("cls");
zaznaczrysuj();
cout<<"pole z poza zakresem"<<endl;
//jeśli zaznaczyliśmy czyścimy konsole rysujemy plansze i wypisujemy odpowiedni komentarz
}
}while(zaznaczenia[jjj][iii]==true||jjj>=10||iii>=10||jjj<0||iii<0); //pętla wykonująca się dopóki nie zaznaczymy wolnego pola w zakresie naszej planszy
zaznaczenia[jjj][iii]=true; //jeśli powyższe warunki zostały spełnione zaznaczamy statek
system("cls");//czyścimy konsole
}
}
Jestem otwarty na wszelkie uwagi, pytania, itp. Zapraszam do komentowania.
Teraz pora na funkcję odpowiedzialną za mechanikę.
void zaznacz()
{
char ii,jj; //deklarujemy zmienne do poprania znaków
int iii,jjj; //deklasujemy zmienne do określania koordynatorów
for(int i=0;i<20;i++)//pętla wywoływana do zaznaczenia 20 statków
{
zaznaczrysuj(); //narysowanie naszej planszy
do{
jj=getch(); //pobranie pierwszej współrzędnej
jjj=jj-48; //przypisanie pierwszej współrzędnej, odejmujemy 48 ponieważ każda cyfra jako znak ASCII ma wartość o 48 większą
ii=getch();//to samo robimy z drugą współrzędna
iii=ii-48;
if(zaznaczenia[jjj][iii]==true) //sprawdzamy czy nie zaznaczyliśmy wcześniej tego pola
{
system("cls");
zaznaczrysuj();
cout<<"to pole już zaznaczyłeś wybierz inne"<<endl;
//jeśli zaznaczyliśmy czyścimy konsole rysujemy plansze i wypisujemy odpowiedni komentarz
}
if(jjj>=10||iii>=10||jjj<0||iii<0) //sprawdzamy czy na pewno wpisaliśmy pole z zakresu
{
system("cls");
zaznaczrysuj();
cout<<"pole z poza zakresem"<<endl;
//jeśli zaznaczyliśmy czyścimy konsole rysujemy plansze i wypisujemy odpowiedni komentarz
}
}while(zaznaczenia[jjj][iii]==true||jjj>=10||iii>=10||jjj<0||iii<0); //pętla wykonująca się dopóki nie zaznaczymy wolnego pola w zakresie naszej planszy
zaznaczenia[jjj][iii]=true; //jeśli powyższe warunki zostały spełnione zaznaczamy statek
system("cls");//czyścimy konsole
}
}
Na zakończenie
Jeszcze jedno zdanie na temat polskich znaków w konsoli wszystko zostało dokładnie wyjaśnione w kursie Mirosława Zelenta.
Teraz wystarczy wywołać naszą funkcję
Podsumowanie.
Myślę że tyle kodu do napisania wystarczy na dziś. Oczywiście kod źródłowy całej aplikacji dostępny jest na moim profilu github. Zachęcam do samodzielnego przeanalizowania kodu.Jestem otwarty na wszelkie uwagi, pytania, itp. Zapraszam do komentowania.
Brak komentarzy:
Prześlij komentarz