Cześć, na sam początek od razu powiem, że nie przepadam za programowaniem, ale cóż - muszę to zrobić a mam problem i liczę na waszą pomoc, a nie hasła typu "naucz się najpierw podstaw a później bierz się za obiektowe".
Mam problem w main'nie. Ponieważ gdy uruchamiam program wyskakuje od razu program przestał działać. Jednak gdy skomentuje wszystkie linijki zawierające wskaźnik działa ale nie wyświetla np podaj x,y itp.
Ogólnie program mam podzielony na klasy.
Zamieszczę kod main'a i bardzo proszę o pomoc. Przypuszczam, że chodzi o ten wskaźnik tylko, że naprawdę, już nie wi
#include <iostream> #include "maszt.h" #include "plansza.h" #include <iomanip> //setw #include "statek.h" #include "wirtualnystateczek.h" #include "ruch.h" #include "ship.h" #include <cstdlib> //srand #include <ctime> //time #include <conio.h> int IlePlywaStatkow(int wyswietl) { ship Orzel, Jastrzab; statek Hawk,Eagle; int ile=0; wirtualnystateczek *wsk[4]={&Orzel,&Jastrzab,&Hawk,&Eagle}; for (int i=0; i<4; ++i) // if((*(wsk[i])).CzyPlywam()) ile++; if(wyswietl)cout<<"Plywa jeszcze statkow : "<<ile<<endl; return ile; } using namespace std; void Ruch(plansza &NazwaPlanszy, ship &okret, statek &torpeda); int main() { statek Orzel, Jastrzab; ship Hawk,Eagle; maszt m1; m1.wyswietl(); plansza p1; // p1.wyswietl(); srand(time(NULL)); bool pion=rand()%2; // p1.wyswietl(); wirtualnystateczek *wsk=&Orzel; // (*wsk).buduj((pion)? (rand()%15)+1 : (rand()%12)+1,(pion)?(rand()%12)+1 : (rand()%15)+1,p1,pion); pion=rand()%2; int iks_; int igrek_; do { iks_=(pion)?(rand()%15)+1 : (rand()%12)+1; } while((abs(iks_-Orzel.iks)<4) || (abs(igrek_-Orzel.igrek)<4)); wsk=&Jastrzab; (*wsk).buduj(iks_,igrek_,p1,pion); pion=rand()%2; do { iks_=(pion)?(rand()%15)+1 : (rand()%12)+1; igrek_=(pion)?(rand()%12)+1 : (rand()%15)+1; } while((abs(iks_-Orzel.iks)<3) || (abs(iks_-Jastrzab.iks)<3) || (abs(igrek_-Orzel.igrek)<3) || (abs(igrek_-Jastrzab.igrek)<3)); wsk=&Hawk; // (*wsk).buduj(iks_,igrek_,p1,pion); pion=rand()%2; do { iks_=(pion)?(rand()%15)+1 : (rand()%12)+1; igrek_=(pion)?(rand()%12)+1 : (rand()%15)+1; } while((abs(iks_-Orzel.iks)<3 && (abs(iks_-Jastrzab.iks)<3) || (abs(igrek_-Orzel.igrek)<3 && abs(igrek_-Hawk.igrek)<3) || (abs(iks_-Hawk.iks)<2) && abs(igrek_-Hawk.igrek)<3)); wsk=&Eagle; // (*wsk).buduj(iks_,igrek_,p1,pion); p1.wyswietl(); int ile=4; int IloscRuchow=0; while(IlePlywaStatkow(0)) { IlePlywaStatkow(1); // Ruch(p1,Orzel,Hawk); ++IloscRuchow; IlePlywaStatkow(1); if (IlePlywaStatkow(0)) { // Ruch(p1,Jastrzab,Eagle); ++IloscRuchow; } } p1.wyswietl(); cout<<"Brawo! Wszystkie statki zatopione"<<endl; cout<<"Ilosc ruchow : "<<IloscRuchow<<endl; return 0; } void Ruch(plansza &NazwaPlanszy, ship &okret, statek &torpeda) { bool CzyZatopiony=false; int x,y; do { cout<<"Podaj x: "; cin>>x; cout<<"Podaj y: "; cin>>y; if(x>10 || y>10 || x<0 || y<0) { if(!x || !y) exit(0); NazwaPlanszy.wyswietl(); IlePlywaStatkow(1); cout<<"Zle wspolrzedne, podaj jeszcze raz"<<endl; } } while (x>10 || y>16 || x<0 || y<0); if (x==0 || y==0) exit(0); char temp=NazwaPlanszy.wsk[y-1][x-1]->stan; switch (temp) { case'.': NazwaPlanszy.wsk[y-1][x-1]->stan='P'; NazwaPlanszy.wsk[y-1][x-1]->typ=4; break; case'X': case 'o': NazwaPlanszy.wsk[y-1][x-1]->stan='o'; NazwaPlanszy.wsk[y-1][x-1]->typ=1; break; } // wirtualnystateczek *wsk; // wsk=&okret; if(okret.CzyPlywam()==false) { for(int i=0; i<=4; i++) { (okret.pionowy)?NazwaPlanszy.wsk[okret.igrek+4-i][okret.iks]->stan='Z' : NazwaPlanszy.wsk[okret.igrek][okret.iks+4-i]->stan='Z'; (okret.pionowy)?NazwaPlanszy.wsk[okret.igrek+4-i][okret.iks]->typ=2:NazwaPlanszy.wsk[okret.igrek][okret.iks+4-i]->typ=2; } } if(torpeda.CzyPlywam()==false) { for(int i=1; i<=3; i++) { (torpeda.pionowy)?NazwaPlanszy.wsk[torpeda.igrek+3-i][torpeda.iks]->stan='Z' : NazwaPlanszy.wsk[torpeda.igrek][torpeda.iks+3-1]->stan='Z'; (torpeda.pionowy)?NazwaPlanszy.wsk[torpeda.igrek+3-i][torpeda.iks]->typ=2 : NazwaPlanszy.wsk[torpeda.igrek][torpeda.iks+3-1]->typ=2; } } NazwaPlanszy.wyswietl(); }
em co z nim zrobić :(