Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Tablica dwuwymiarowa alokowana dynamicznie. Nie moge wykryc znaku.

aest 20 May 2011 11:23 2831 2
  • #1
    aest
    Level 9  
    Witam. Mam problem z prostym programem w ktorym kolko poruszalo by sie od gory do dolu po tablicy. Granice sa oznaczone przez znak '*'. Kolko zaczyna ruch z dolnego lewego rogu po natrafieniu na gorna granice powinno zmienic kolumna na o jedna w prawo i potem jechac w dol etc. Niestety kolko zmienia swoja kolumne o wiele, wiele za wczesnie. Mysle ze problem lezy w funkcji collision odpowiedzialnej za wykrycie kolizji, ale nie wiem gdzie dokladnie.






    Code: cpp
    Log in, to see the code
  • #2
    kubsztal
    Level 11  
    Tak wygląda kawałek pamięci, na który wskazują wskaźniki w tablicy "field":
    Tablica dwuwymiarowa alokowana dynamicznie. Nie moge wykryc znaku.
    Na czerwono masz zaznaczone znaki '*' (0x2a). W funkcji "collision" zaczynasz od sprawdzenia adresu 0x0039c8bb (zielone kółko), potem sprawdzasz 0x0039c8ba (niebieskie kółko) i za trzecim razem sprawdzasz 0x0039c8b9 (czerwone kółko) wykrywając '*'. Jeśli wskaźniki w "field" wskazują poprawnie te adresy pamięci, o które Ci chodzi, to masz rację - musisz poprawić wykrywanie kolizji. W przeciwnym razie popraw alokowanie.
  • #3
    azra
    Level 16  
    Tak na marginesie:
    Code: cpp
    Log in, to see the code

    Coś mi nie pasuje w zwalnianiu... Czyżbyś zwalniał N-ty element field, gdzie N to ilość wszystkich elementów? Nie wydaje Ci się, że ta pętla jest troszkę... Jałowa?

    No i w C++ używasz malloc? Jakiś konkretny powód? ;)
    sizeof(char) zawsze zwróci jeden, więc możesz sobie mnożenie przez niego podarować, zajmuje tylko miejsce w pliku źródłowym. :P

    Wybacz, ale nie bardzo mam ochotę na głębsze zapoznanie się z tym kodem, głównie przez bardzo chaotyczne, wręcz niechlujne formatowanie.