Skocz do zawartości

Funkcje w C - problem


Jaklub

Rekomendowane odpowiedzi

Robię platformówkę na PSP. Wszystko by szło gładko, gdyby nie problem.

 

Mam errory:

- redefinition of wallmake0

- previous definition of wallmake0 was here

- redefinition of wallmake1

- previous definition of wallmake1 was here

- redefinition of wallmake2

- previous definition of wallmake2 was here

 

Wszystkie dotyczą pliku wallmake.h, który wygląda tak:

void wallmake0(int wx1, int wx2, int wy1, int wy2) {
               // Make a wall with id 0.
              int wall_exists_0;
              int wall_x1_0;
              int wall_x2_0;
              int wall_y1_0;
              int wall_y2_0;
              wall_exists_0=1;
              wall_x1_0=wx1;
              wall_x2_0=wx2;
              wall_y1_0=wy1;
              wall_y2_0=wy2;
              }
void wallmake1(int wx1, int wx2, int wy1, int wy2) {
               // Make a wall with id 1.
              int wall_exists_1;
              int wall_x1_1;
              int wall_x2_1;
              int wall_y1_1;
              int wall_y2_1;
              wall_exists_1=1;
              wall_x1_1=wx1;
              wall_x2_1=wx2;
              wall_y1_1=wy1;
              wall_y2_1=wy2;
              }
void wallmake2(int wx1, int wx2, int wy1, int wy2) {
               // Make a wall with id 2.
              int wall_exists_2;
              int wall_x1_2;
              int wall_x2_2;
              int wall_y1_2;
              int wall_y2_2;
              wall_exists_2=1;
              wall_x1_2=wx1;
              wall_x2_2=wx2;
              wall_y1_2=wy1;
              wall_y2_2=wy2;
              }

 

Te funkcje są użyte w pliku stage1.h, który jest taki:

#include "wallinit.h"

// Stage 1-1 Play

int stage11() {
  // Set wall 1 - ceiling
  wallmake0(0,480,0,64);
  // Set wall 2 - wall
  wallmake1(0,64,64,192);
  // Set wall 3 - floor
  wallmake2(0,480,192,272);
  char buffer[200];
  Image* ourImage;
  sprintf(buffer, "/data/stages/stage11.png");
  ourImage = loadImage(buffer);
    while(1) {
             blitAlphaImageToScreen(0 ,0 ,480 , 272, ourImage, 0, 0);
             }
}

 

Za nic nie wiem, co zmienić. :( Czy ktoś może mi pomóc?

Odnośnik do komentarza
Udostępnij na innych stronach

A wallinit.h?

 

Pomyliłem się w pisaniu posta, wallmake.h to wallinit.h.

 

Poza tym w tychże funkcjach definiujesz zmienne, które automatycznie są i tak niszczone. Głupie to trochę. :)

 

Niezupełnie wiem, o co chodzi z tym zniszczeniem.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

No chodzi o to, że zmienna zadeklarowana w jakimś zasięgu nie jest widoczna poza jej granicami ( znaki { i } ). Przykład:

 

while ( true )

{

int aaa;

aaa = 4;

break;

}

 

tutaj aaa już nie, bo zostało zniszczone po wyjściu programu poza zasięg pętli while.

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli gdzieś przed mainem powinno być:

class murek
{
   public:
   unsigned int x1;
   unsigned int x2;
   unsigned int y1;
   unsigned int y2;
};

 

A potem przy robieniu leveli:

murek mur1;
mur1.x1=0;
mur1.x2=32;
mur1.y1=0;
mur1.y2=32;

 

Czy jakoś tak powinno to wyglądać? Przestudiowałem szybko artykuł napisany przez Vardiego (big thx!).

 

A tak propos: jak można tworzyć zależność od jakiegokolwiek objektu z danej klasy? Chodzi o np. sprawdzanie kolizji z jakimkolwiek objektem klasy mur za pomocą if-ów.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...