• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ statki obiektowo, problem

Object Storage Arubacloud
+1 głos
189 wizyt
pytanie zadane 2 grudnia 2016 w C i C++ przez klap Początkujący (410 p.)

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ć :(

1 odpowiedź

0 głosów
odpowiedź 2 grudnia 2016 przez playerony Pasjonat (15,240 p.)

1. To nie ma prawa działać ze względu na brak wartości:

plansza p1;
p1.wyswietl();

2. Spróbuj zastosować zapis: "wsk->"

komentarz 3 grudnia 2016 przez klap Początkujący (410 p.)
edycja 6 grudnia 2016 przez klap
plansza to moja klasa

zdefiniowałem p1 aby wyświetlić void'a wyswietl()

tutaj właśnie wszystko mi działało, tylko problem widze że jest ze wskaxnikami właśnie. Jak wskaźniki skomentuje to wyświetla plansze itp ale nie da się wprowadzić wartości :(

Bardzo proszę o waszą pomoc :)

Podobne pytania

0 głosów
1 odpowiedź 1,145 wizyt
0 głosów
1 odpowiedź 1,036 wizyt
pytanie zadane 7 marca 2016 w C i C++ przez Lukasz95 Bywalec (2,160 p.)
0 głosów
2 odpowiedzi 365 wizyt
pytanie zadane 12 października 2017 w PHP przez makoszet Początkujący (360 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...