Witam,
podczas tworzenia gry w statki pojawił mi sie mały problem i nie moge dojść do powodu jego wystąpienia. Podaje fragmenty kodu, może ktoś mi podpowie dlaczego program sie wywala:
Klasa pole
class Pole
{
char X; //wspołrzędna X
char Y; //wspołrzędna Y
int status = 0; //przypisany status
enum flaga
{ wolne = 1, zaznaczone = 2, trafione= 3 }; //flaga pola
char znak; // znak pola
public:
Pole();
Pole(const char, const char );
void Ustaw_Staus(int);
int Zwroc_Zaznaczone();
Klasa plansza
#include "Pole.h"
class Plansza
{
Pole plansza[9][9];
public:
Plansza();
~Plansza();
void Wyswietl_Plansze();
void Ustaw_Pole(const char, const char);
int Zwroc_Zaznaczone(const char, const char);
};
*Konsturktor i potrzebne metody do klasy pole *
Pole::Pole()
{
this->X = NULL;
this->Y = NULL;
this->status = wolne;
Ustaw_Znak();
}
Pole::Pole(const char x, const char y)
{
this->X = x;
this->Y = y;
this->status = wolne;
Ustaw_Znak();
}
void Pole::Ustaw_Staus(int a)
{
this->status = a;
}
int Pole::Zwroc_Zaznaczone()
{
return this->zaznaczone;
}
I metody klasy plansza
Plansza::Plansza()
{
for (char i = 0; i < 9; ++i)
{
for (char j = 0; j < 9; ++j)
{
plansza[i][j];
plansza[i][j].Pole::Pole(i, j);
}
}
}
void Plansza::Ustaw_Pole(const char x, const char y)
{
plansza[x][y].Ustaw_Staus(2); //podaje wartosc do funkcji na sztywno na potrzeby testow
}
int Plansza::Zwroc_Zaznaczone(const char x, const char y)
{
return plansza[x][y].Pole::Zwroc_Zaznaczone();
}
Na koniec klasa statek
class Statki
{
Plansza okrety;
public:
Statki();
void Ustaw_Polozenie(const char, const char);
void Jedno_Masztowiec(const char, const char);
void Statki::Jedno_Masztowiec(const char x, const char y)
{
Ustaw_Polozenie(x, y);
}
void Statki::Ustaw_Polozenie(const char x, const char y)
{
okrety.Ustaw_Pole(x, y, okrety.Zwroc_Zaznaczone(x,y));
}
Na początek pytanie czy takie tworzenie planszy jest rozsądne, może ktoś ma lepszy pomysł?
A problem który mam polega na tym że podczas wykonywania metody Ustaw_Polozenie wywołuje sie , metoda Ustaw_Pole a w niej finalnie
zmieniam wartość pola "status" w klasie Pole. I właśnie podczas zmiany tego statusu przez funkcje Ustaw_Status(...) wywala mi błąd:
Unhandled exception at in statki.exe: Access violation writing location...
Ma ktoś jakieś sugestie, co robie źle?
Pozdrawiam