Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <windows.h>
- #include "statkih.h"
- using namespace std;
- const int rozmiar=52;
- int statki1[rozmiar][rozmiar];
- int statki2[rozmiar][rozmiar];
- int ukryte1[rozmiar][rozmiar];
- int ukryte2[rozmiar][rozmiar];
- Statek::Statek()
- {}
- int Statek::Wypelnij1()
- {
- int i=0,j=0,k=0,czymoze=0,flaga2=0;
- for(i=0;i<rozmiar;i++)
- {
- j=0;
- for(j=0;j<rozmiar;j++)
- {
- statki1[i][j]=0;
- }
- }
- int dozbicia=0;
- srand(time(NULL));
- int x=0,y=0,typ=0,dlg=0,wstaw=0,dodaj=0,flaga=0,znak=0,ilosc=0;
- for(ilosc=0;ilosc<7;ilosc++)
- {
- dlg=rand() % 4 + 2;
- czymoze=0;
- while(czymoze==0)
- {
- k=1;
- flaga2=0;
- x=rand() % rozmiar;
- y=rand() % rozmiar;
- while(k<=dlg && flaga2==0)
- {
- if(x+k<rozmiar)
- {
- if (statki2[x+k][y]!=0) flaga2=1;
- else if(y+k<rozmiar)
- {
- if(statki2[x+k][y+k]!=0) flaga2=1;
- }
- else if(y-k>0)
- {
- if(statki2[x+k][y-k]!=0) flaga2=1;
- }
- }
- else if(x-k>0)
- {
- if (statki2[x-k][y]!=0) flaga2=1;
- else if(y+k<rozmiar)
- {
- if(statki2[x-k][y+k]!=0) flaga2=1;
- }
- else if(y-k>0)
- {
- if(statki2[x-k][y-k]!=0) flaga2=1;
- }
- }
- else if(y+k<rozmiar)
- {
- if (statki2[x][y+k]!=0) flaga2=1;
- }
- else if(y-k>0)
- {
- if (statki2[x][y-k]!=0) flaga2=1;
- }
- k++;
- }
- if(flaga2==0) czymoze=1;
- else Sleep(1000);
- }
- dozbicia+=dlg;
- typ=rand() % 4 + 1;
- for(wstaw=0;wstaw<dlg;wstaw++)
- {
- flaga=0;
- dodaj=1;
- znak=rand() % 2;
- if(wstaw==0) statki1[x][y]=dlg;
- else
- {
- if(typ==1) // Statek Poziomy
- {
- if(znak==1)
- {
- if(y+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x][y-dodaj]==0)
- {
- statki1[x][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x][y+dodaj]==0)
- {
- statki1[x][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(y-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x][y+dodaj]==0)
- {
- statki1[x][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x][y-dodaj]==0)
- {
- statki1[x][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- if(typ==2) // Statek Pionowy
- {
- if(znak==1)
- {
- if(x+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x-dodaj][y]==0)
- {
- statki1[x-dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x+dodaj][y]==0)
- {
- statki1[x+dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(x-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x+dodaj][y]==0)
- {
- statki1[x+dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x-dodaj][y]==0)
- {
- statki1[x-dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- if(typ==3) // Statek Na Skos W Prawy Gorny
- {
- if(znak==1)
- {
- if(y+wstaw>=rozmiar || x-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x+dodaj][y-dodaj]==0)
- {
- statki1[x+dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x-dodaj][y+dodaj]==0)
- {
- statki1[x-dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(y-wstaw<=0 || x+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x-dodaj][y+dodaj]==0)
- {
- statki1[x-dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x+dodaj][y-dodaj]==0)
- {
- statki1[x+dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- if(typ==4) // Statek Na Skos W Lewy Gorny
- {
- if(znak==1)
- {
- if(y-wstaw<=0 || x-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x+dodaj][y+dodaj]==0)
- {
- statki1[x+dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x-dodaj][y-dodaj]==0)
- {
- statki1[x-dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(y+wstaw>=rozmiar || x+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x-dodaj][y-dodaj]==0)
- {
- statki1[x-dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki1[x+dodaj][y+dodaj]==0)
- {
- statki1[x+dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- }
- }
- }
- return dozbicia;
- }
- int Statek::Wypelnij2()
- {
- int i=0,j=0,k=0,czymoze=0,flaga2=0;
- for(i=0;i<rozmiar;i++)
- {
- j=0;
- for(j=0;j<rozmiar;j++)
- {
- statki2[i][j]=0;
- }
- }
- int dozbicia=0;
- srand(time(NULL));
- int x=0,y=0,typ=0,dlg=0,wstaw=0,dodaj=0,flaga=0,znak=0,ilosc=0;
- for(ilosc=0;ilosc<7;ilosc++)
- {
- dlg=rand() % 4 + 2;
- czymoze=0;
- while(czymoze==0)
- {
- k=1;
- flaga2=0;
- x=rand() % rozmiar;
- y=rand() % rozmiar;
- while(k<=dlg && flaga2==0)
- {
- if(x+k<rozmiar)
- {
- if (statki2[x+k][y]!=0) flaga2=1;
- else if(y+k<rozmiar)
- {
- if(statki2[x+k][y+k]!=0) flaga2=1;
- }
- else if(y-k>0)
- {
- if(statki2[x+k][y-k]!=0) flaga2=1;
- }
- }
- else if(x-k>0)
- {
- if (statki2[x-k][y]!=0) flaga2=1;
- else if(y+k<rozmiar)
- {
- if(statki2[x-k][y+k]!=0) flaga2=1;
- }
- else if(y-k>0)
- {
- if(statki2[x-k][y-k]!=0) flaga2=1;
- }
- }
- else if(y+k<rozmiar)
- {
- if (statki2[x][y+k]!=0) flaga2=1;
- }
- else if(y-k>0)
- {
- if (statki2[x][y-k]!=0) flaga2=1;
- }
- k++;
- }
- if(flaga2==0) czymoze=1;
- }
- dozbicia+=dlg;
- typ=rand() % 4 + 1;
- for(wstaw=0;wstaw<dlg;wstaw++)
- {
- flaga=0;
- dodaj=1;
- znak=rand() % 2;
- if(wstaw==0) statki2[x][y]=dlg;
- else
- {
- if(typ==1) // Statek Poziomy
- {
- if(znak==1)
- {
- if(y+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x][y-dodaj]==0)
- {
- statki2[x][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x][y+dodaj]==0)
- {
- statki2[x][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(y-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x][y+dodaj]==0)
- {
- statki2[x][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x][y-dodaj]==0)
- {
- statki2[x][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- if(typ==2) // Statek Pionowy
- {
- if(znak==1)
- {
- if(x+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x-dodaj][y]==0)
- {
- statki2[x-dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x+dodaj][y]==0)
- {
- statki2[x+dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(x-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x+dodaj][y]==0)
- {
- statki2[x+dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x-dodaj][y]==0)
- {
- statki2[x-dodaj][y]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- if(typ==3) // Statek Na Skos W Prawy Gorny
- {
- if(znak==1)
- {
- if(y+wstaw>=rozmiar || x-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x+dodaj][y-dodaj]==0)
- {
- statki2[x+dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x-dodaj][y+dodaj]==0)
- {
- statki2[x-dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(y-wstaw<=0 || x+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x-dodaj][y+dodaj]==0)
- {
- statki2[x-dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x+dodaj][y-dodaj]==0)
- {
- statki2[x+dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- if(typ==4) // Statek Na Skos W Lewy Gorny
- {
- if(znak==1)
- {
- if(y-wstaw<=0 || x-wstaw<=0)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x+dodaj][y+dodaj]==0)
- {
- statki2[x+dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x-dodaj][y-dodaj]==0)
- {
- statki2[x-dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- else
- {
- if(y+wstaw>=rozmiar || x+wstaw>=rozmiar)
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x-dodaj][y-dodaj]==0)
- {
- statki2[x-dodaj][y-dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- else
- {
- while(dodaj<=wstaw && flaga==0)
- {
- if(statki2[x+dodaj][y+dodaj]==0)
- {
- statki2[x+dodaj][y+dodaj]=dlg;
- flaga=1;
- }
- else dodaj++;
- }
- }
- }
- }
- }
- }
- }
- return dozbicia;
- }
- void Statek::Wyswietl1()
- {
- int i=0,j=0;
- char strzal=65;
- cout<<""<<endl;
- cout<<" ";
- for(i=0;i<rozmiar;i++)
- {
- if (strzal==91) strzal=97;
- cout<<strzal;
- strzal++;
- }
- strzal=65;
- cout<<""<<endl;
- for(i=0;i<rozmiar;i++)
- {
- if (strzal==91) strzal=97;
- cout<<strzal<<" ";
- strzal++;
- for(j=0;j<rozmiar;j++)
- {
- cout<<ukryte1[i][j];
- }
- cout<<""<<endl;
- }
- }
- void Statek::Wyswietl2()
- {
- int i=0,j=0;
- char strzal=65;
- cout<<""<<endl;
- cout<<" ";
- for(i=0;i<rozmiar;i++)
- {
- if (strzal==91) strzal=97;
- cout<<strzal;
- strzal++;
- }
- strzal=65;
- cout<<""<<endl;
- for(i=0;i<rozmiar;i++)
- {
- if (strzal==91) strzal=97;
- cout<<strzal<<" ";
- strzal++;
- for(j=0;j<rozmiar;j++)
- {
- cout<<ukryte2[i][j];
- }
- cout<<""<<endl;
- }
- }
- int Statek::Strzal1()
- {
- char x,y;
- cin>>x>>y;
- if(x<=90)
- {
- if (y<=90)
- {
- if(statki2[x-65][y-65]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte2[x-65][y-65]=statki2[x-65][y-65];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte2[x-65][y-65]=statki2[x-65][y-65];
- return -1;
- }
- }
- else
- {
- if(statki2[x-65][y-71]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte2[x-65][y-71]=statki2[x-65][y-71];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte2[x-65][y-71]=statki2[x-65][y-71];
- return -1;
- }
- }
- }
- else
- {
- if (y<=90)
- {
- if(statki2[x-71][y-65]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte2[x-71][y-65]=statki2[x-71][y-65];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte2[x-71][y-65]=statki2[x-71][y-65];
- return -1;
- }
- }
- else
- {
- if(statki2[x-71][y-71]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte2[x-71][y-71]=statki2[x-71][y-71];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte2[x-71][y-71]=statki2[x-71][y-71];
- return -1;
- }
- }
- }
- }
- int Statek::Strzal2()
- {
- char x,y;
- cin>>x>>y;
- if(x<=90)
- {
- if (y<=90)
- {
- if(statki1[x-65][y-65]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte1[x-65][y-65]=statki1[x-65][y-65];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte1[x-65][y-65]=statki1[x-65][y-65];
- return -1;
- }
- }
- else
- {
- if(statki1[x-65][y-71]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte1[x-65][y-71]=statki1[x-65][y-71];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte1[x-65][y-71]=statki1[x-65][y-71];
- return -1;
- }
- }
- }
- else
- {
- if (y<=90)
- {
- if(statki1[x-71][y-65]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte1[x-71][y-65]=statki1[x-71][y-65];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte1[x-71][y-65]=statki1[x-71][y-65];
- return -1;
- }
- }
- else
- {
- if(statki1[x-71][y-71]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte1[x-71][y-71]=statki1[x-71][y-71];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte1[x-71][y-71]=statki1[x-71][y-71];
- return -1;
- }
- }
- }
- }
- int Statek::StrzalPC1()
- {
- int x,y;
- x=rand() % rozmiar;
- y=rand() % rozmiar;
- if(statki2[x][y]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte2[x][y]=statki2[x][y];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte2[x][y]=statki2[x][y];
- return -1;
- }
- }
- int Statek::StrzalPC2()
- {
- int x,y;
- x=rand() % rozmiar;
- y=rand() % rozmiar;
- if(statki1[x][y]==0)
- {
- cout<<"Pudlo!"<<endl;
- ukryte1[x][y]=statki1[x][y];
- return 0;
- }
- else
- {
- cout<<"Trafiony!"<<endl;
- ukryte1[x][y]=statki1[x][y];
- return -1;
- }
- }
- int main(void)
- {
- Statek gra;
- int i=0,j=0;
- int zostalo1=0,zostalo2=0,tura=1;
- int tryb=0;
- for(i=0;i<rozmiar;i++)
- {
- j=0;
- for(j=0;j<rozmiar;j++)
- {
- ukryte1[i][j]=8;
- }
- }
- for(i=0;i<rozmiar;i++)
- {
- j=0;
- for(j=0;j<rozmiar;j++)
- {
- ukryte2[i][j]=8;
- }
- }
- cout<<"Wybierz tryb gry"<<endl;
- cout<<"1. Gracz vs Gracz"<<endl;
- cout<<"2. Gracz vs PC"<<endl;
- cout<<"3. PC vs PC"<<endl;
- cin>>tryb;
- switch(tryb)
- {
- case 1:
- zostalo1=gra.Wypelnij1();
- Sleep(1000);
- zostalo2=gra.Wypelnij2();
- while(zostalo1 > 0 && zostalo2 > 0)
- {
- if (tura==1)
- {
- gra.Wyswietl2();
- cout<<"Tura gracza numer 1."<<endl;
- cout<<"Pozostalo "<<zostalo2<<" statkow do zbicia!"<<endl;
- cout<<"Wybierz, ktore pole chcesz sprawdzic: ";
- zostalo2=zostalo2+gra.Strzal1();
- tura = 2;
- }
- else
- {
- gra.Wyswietl1();
- cout<<"Tura gracza numer 2."<<endl;
- cout<<"Pozostalo "<<zostalo1<<" statkow do zbicia!"<<endl;
- cout<<"Wybierz, ktore pole chcesz sprawdzic: ";
- zostalo1=zostalo1+gra.Strzal2();
- tura = 1;
- }
- }
- break;
- case 2:
- zostalo1=gra.Wypelnij1();
- Sleep(1000);
- zostalo2=gra.Wypelnij2();
- while(zostalo1 > 0 && zostalo2 > 0)
- {
- if (tura==1)
- {
- gra.Wyswietl2();
- cout<<"Tura gracza."<<endl;
- cout<<"Pozostalo "<<zostalo2<<" statkow do zbicia!"<<endl;
- cout<<"Wybierz, ktore pole chcesz sprawdzic: ";
- zostalo2=zostalo2+gra.Strzal1();
- tura = 2;
- }
- else
- {
- gra.Wyswietl1();
- cout<<"Tura komputera"<<endl;
- cout<<"Pozostalo "<<zostalo1<<" statkow do zbicia!"<<endl;
- zostalo1=zostalo1+gra.StrzalPC2();
- tura = 1;
- }
- }
- break;
- case 3:
- char zmiana;
- zostalo1=gra.Wypelnij1();
- Sleep(1000);
- zostalo2=gra.Wypelnij2();
- while(zostalo1 > 0 && zostalo2 > 0)
- {
- if (tura==1)
- {
- if(zmiana==84 || zmiana == 116)
- {
- gra.Wyswietl2();
- cout<<"Tura gracza."<<endl;
- cout<<"Pozostalo "<<zostalo2<<" statkow do zbicia!"<<endl;
- cout<<"Wybierz, ktore pole chcesz sprawdzic: ";
- zostalo2=zostalo2+gra.Strzal1();
- tura = 2;
- }
- else
- {
- gra.Wyswietl2();
- cout<<"Tura komputera numer 1."<<endl;
- cout<<"Pozostalo "<<zostalo1<<" statkow do zbicia!"<<endl;
- zostalo2=zostalo2+gra.StrzalPC1();
- tura = 2;
- }
- cout<<"Czy chcesz grac zamiast komputera?(T/N)"<<endl;
- cin>>zmiana;
- }
- else
- {
- gra.Wyswietl1();
- cout<<"Tura komputera numer 2."<<endl;
- cout<<"Pozostalo "<<zostalo1<<" statkow do zbicia!"<<endl;
- zostalo1=zostalo1+gra.StrzalPC2();
- tura = 1;
- }
- }
- break;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement