Nie mogę stworzyć obiektu

0

W pliku Unit1.cpp załączam sobie plik Logika.h, gdzie znajduje się klasa Logika (konstruktor jest i destruktor).

Niestety podczas tworzenia obiektu

Logika obiekt;

Wylatuje mi błąd:

[Linker Error] Unresolved external 'Logika::Logika()' referenced from C:\USERS\DAMIAN\DESKTOP\KOD\UNIT1.OBJ
[Linker Error] Unresolved external 'Logika::~Logika()' referenced from C:\USERS\DAMIAN\DESKTOP\KOD\UNIT1.OBJ

Co wskazuje na to że nie widzi w ogóle mojej klasy mimo że u samej góry wrzuciłem:

#include "Logika.h" 

Co może być przyczyną?

Jest to gra kółko krzyżyk zbudowana z sześciu FORM + klasy Logika.h

Logika.cpp

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Logika.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

Logika::Logika()
{
        //przypisanie poczatkowych wartosci 'n'
        for(int i=1; i<10; i++){
                this->p[i]='n';
        }

        //kto rozpoczyna
        this->kto='o';

        //wynik poczatkowy
        this->wynik_kolko=0;
        this->wynik_krzyzyk=0;

        //do ilu gramy
        this->do_ilu_gramy=2;
};

Logika::~Logika(){}

//ustawianie jakiegos pola na kolko lub krzyzyk
void Logika::ustawPole(int ktore, char jak){
        this->p[ktore]=jak;
}

//ustawianie kto wykonuje teraz ruch
void Logika::ustawKto(char i){
        this->kto=i;
}

//dodaj punkt do wyniku kolka
void Logika::dodajPunktKolko(){
        this->wynik_kolko++;
        Form1->kolko_w->Caption=IntToStr(this->wynik_kolko);
}

//dodaj punkt do wyniku krzyzyka
void Logika::dodajPunktKrzyzyk(){
        this->wynik_krzyzyk++;
        Form1->krzyzyk_w->Caption=IntToStr(this->wynik_krzyzyk);
}

//ustaw do ilu gramy
void Logika::ustawDoIluGramy(int i){
        this->do_ilu_gramy=i;
}


//stworzenie nowej gry
void Logika::nowaGra(){
        Form1->pole1->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole2->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole3->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole4->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole5->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole6->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole7->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole8->Picture->LoadFromFile("img/nic.bmp");
        Form1->pole9->Picture->LoadFromFile("img/nic.bmp");
        Form1->tura->Picture->LoadFromFile("img/osmall.bmp");

        for(int i=1; i<10; i++){
                this->p[i]='n';
        }
        
        kto='o';

        Form1->pole1->Enabled = true;
        Form1->pole2->Enabled = true;
        Form1->pole3->Enabled = true;
        Form1->pole4->Enabled = true;
        Form1->pole5->Enabled = true;
        Form1->pole6->Enabled = true;
        Form1->pole7->Enabled = true;
        Form1->pole8->Enabled = true;
        Form1->pole9->Enabled = true;
}








void Logika::sprawdzWygrana(char i){
        //sprawdzenie tylko dla kolka
        if(i=='o'){
                if(this->wynik_kolko==this->do_ilu_gramy){
                        //informacja ze ktos wygral caly pojedynek
                        Application->MessageBox("WYGRYWA KÓŁKO", "KONIEC GRY", MB_OK | MB_ICONWARNING);

                        //uruchomienie nowej gry
                        this->nowa_gra();

                        //reset wynikow
                        this->wynik_kolko=0;
                        this->wynik_krzyzyk=0;
                        this->Form1->kolko_w->Caption=IntToStr(wynik_kolko);
                        this->Form1->krzyzyk_w->Caption=IntToStr(wynik_krzyzyk);

                        //Form1->Visible=false;
                        //Form2->Visible=true;
                        //return;
                }
                //koniec rundy, wygrywa kolko
                Application->MessageBox("Wygrywa kółko!", "Koniec rundy", MB_OK);

                //nowa runda-gra
                this->nowaGra();
        }


        //sprawdzenie tylko dla krzyzyka
        if(i=='x'){
                if(this->wynik_krzyzyk==this->do_ilu_gramy){
                        //informacja ze ktos wygral caly pojedynek
                        Application->MessageBox("WYGRYWA KRZYŻYK", "KONIEC GRY", MB_OK | MB_ICONWARNING);

                        //uruchomienie nowej gry
                        this->nowa_gra();

                        //reset wynikow
                        this->wynik_kolko=0;
                        this->wynik_krzyzyk=0;
                        Form1->kolko_w->Caption=IntToStr(this->wynik_kolko);
                        Form1->krzyzyk_w->Caption=IntToStr(this->wynik_krzyzyk);


                        //Form1->Visible=false;
                        //Form2->Visible=true;
                        //return;
                }
                //koniec rundy, wygrywa krzyzyk
                Application->MessageBox("Wygrywa krzyżyk!", "Koniec rundy", MB_OK);

                //nowa runda-gra
                this->nowaGra();

        }
}











//sprawdzanie czy kto wygrał
void Logika::sprawdzPunkt(){
        //szukam 3 kolek lub 3 krzyzykow w odpowiednim ulozeniu
        if((this->p[1]==this->p[2] && this->p[2]==this->p[3] && this->p[1]!='n') ||
        (this->p[4]==this->p[5] && this->p[5]==this->p[6] && this->p[4]!='n') ||
        (this->p[7]==this->p[8] && this->p[8]==this->p[9] && this->p[7]!='n') ||
        (this->p[1]==this->p[4] && this->p[4]==this->p[7] && this->p[7]!='n') ||
        (this->p[2]==this->p[5] && this->p[5]==this->p[8] && this->p[2]!='n') ||
        (this->p[3]==this->p[6] && this->p[6]==this->p[9] && this->p[3]!='n') ||
        (this->p[1]==this->p[5] && this->p[5]==this->p[9] && this->p[1]!='n') ||
        (this->p[3]==this->p[5] && this->p[5]==this->p[7] && this->p[3]!='n'))
     {
        //JEZELI WYGRALO KOLKO
        if (kto=='x') {
                //dodaje punkt
                this->dodajPunktKolko();

                //sprawdzam czy KOLKO wygralo caly pojedynek
                this->sprawdzWygrana('o');
                
        }else {
        //CZYLI WYGRAL KRZYZYK
                //dodaje punkt
                this->dodajPunktKrzyzyk();
                
                //sprawdzam czy KRZYZYK wygral caly pojedynek
                this->sprawdzWygrana('x');
        }

     }else{
        //SPRAWDZAM CZY JEST REMIS
        if(p1!='n' && p2!='n' && p3!='n' && p4!='n' && p5!='n' && p6!='n' && p7!='n' && p8!='n' && p9!='n'){
                Application->MessageBox("Nikt nie wygrał", "Koniec rundy", MB_OK);
                this->nowaGra();
        }
     }
}










//zaznaczenie pola krzyzykiem albo kolkiem
void Logika::zaznaczPole(int i){

        //sprawdzam w ogole moge zaznaczyc to pole
if(this->p[i]=='n')
   {
        //sprawdzam kogo jest tura
      if(this->kto=='o')
      {
        //zmieniam obrazek pola
         pole1->Picture->LoadFromFile("img/o.bmp");

         //ustawiam odpowiednia zmienna
         this->ustawPole(i,'o');

         //ustawiam kto teraz bedzie wykonywal ruch
         this->ustawKto('x');

         //zmieniam obrazek kto bedzie wykonywal ruch
         tura->Picture->LoadFromFile("img/xsmall.bmp");
      }
      else
      {
         //zmieniam obrazek pola
         pole1->Picture->LoadFromFile("img/x.bmp");

         //ustawiam odpowiednia zmienna
         this->ustawPole(i,'x');

         //ustawiam kto teraz bedzie wykonywal ruch
         this->ustawKto('o');

         //zmieniam obrazek kto bedzie wykonywal ruch
         tura->Picture->LoadFromFile("img/osmall.bmp");
      }
      //wylaczam to pole z uzywania
      pole1->Enabled=false;

      //sprawdzam komu przyznac ew. punkt jezeli ktos juz wygral
      this->sprawdzPunkt();
   }
}
 

Logika.h

 //---------------------------------------------------------------------------

#ifndef LogikaH
#define LogikaH
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
class Logika{
private:
       char p[9], kto;
       int wynik_kolko, wynik_krzyzyk, do_ilu_gramy;

public:
       Logika();
       ~Logika();

        void ustawPole(int ktore, char jak);
        void ustawKto(char i);
        void dodajPunktKolko();
        void dodajPunktKrzyzyk();
        void ustawDoIluGramy(int i);

        void nowaGra();
        void sprawdzPunkt();
        void sprawdzWygrana(char i);
        void zaznaczPole(int i);


};
#endif

Unit1.h

 //---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include "Logika.h"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TImage *pole1;
        TImage *pole2;
        TImage *pole3;
        TImage *pole4;
        TImage *pole5;
        TImage *pole6;
        TImage *pole7;
        TImage *pole8;
        TImage *pole9;
        TLabel *Label1;
        TImage *tura;
        TLabel *Label2;
        TLabel *Label3;
        TLabel *kolko_w;
        TLabel *Label5;
        TLabel *krzyzyk_w;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall pole1Click(TObject *Sender);
private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Unit1.cpp

 //---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop


#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Logika.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;













//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
         Logika gra;
        //nowa_gra();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::pole1Click(TObject *Sender)
{
   ;
}
//---------------------------------------------------------------------------

4

Zapomniałeś dodać do projektu Logika.cpp

0

Dziękuję :D Myślałem że sama klasa wystarczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1