• 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
186 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,125 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 364 wizyt
pytanie zadane 12 października 2017 w PHP przez makoszet Początkujący (360 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,920 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!

...