Skocz do zawartości

Madness

Użytkownicy
  • Postów

    551
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Madness

  1. No tak, ale to są śmieci, więc wystarczy, że pamięta, iż musi coś "wskazać". A wartość zmiennej nie jest nawet tyle co nadawana automatycznie, a po prostu pozostałość po czymś co wykorzystywało ten obszar pamięci, który zarezerwowaliśmy dla zmiennej. ;)

     

    Poza tym, chyba teraz większość kompilatorów już w tej kwestii jest na tyle zautomatyzowana, że sama wszystko zeruje.

    Miej dobre nawyki, LyanVu, mimo wszystko. ;)

    +1

  2. Jak stworzysz pięć obiektów klasy cEnemy, a później wskaźnik to on nie wskazuje na nic. Dopiero musisz mu coś "wskazać". :)

     

    Hmmm... to nie do końca prawda, on zawsze na coś wskazuje, dlatego najlepiej jest przypisać mu na samym początku wartość NULL, żeby uniknąć komplikacji. W momencie tworzenia jakiejkolwiek zmiennej bądź wskaźnika, zostaje jej/mu nadana automatycznie wartość ( i niestety nie taka, jakiej byśmy się spodziewali).

  3. Krótki przykład:

    int punkty = 3; // tworzymy zmienna i nadajemy jej wartosc
    int * pointer = &punkty; // tworzymy wskaźnik i każemy mu wskazywać na adres zmiennej punkty
    cout << *pointer << endl; // wypisujemy sobie wartość wskaźnika pointer
    punkty = 14; // zmieniamy zawartość zmiennej punkty
    cout << *pointer << endl; // i ponownie wypisujemy wartość wskaźnika
    

    W konsoli powinieneś zobaczyć: 3 i 14.

    Zauważ, że wartość zmiennej punkty zmieniła się dwa razy, a wskaźnik na zmienną ustawiliśmy tylko raz.

    Więc dlaczego wypisało nawet zmienioną zawartość zmiennej punkty ?

    Bo wskazuje na adres komórki pamięci w której zmienna punkty jest przechowywana.

    Ale to jeszcze nie wszystko, teraz za pomocą wskaźnika pointer możesz manipulować zmienną punkty:

    *pointer = 7; // w tej chwili wartość zmiennej punkty zmieni się z 14 na 7
    // sprawdźmy to wypisując jej zawartość
    cout << punkty << endl;
    

     

    W konsoli powinieneś ujrzeć liczbe 7.

    Jest jeszcze sporo zastosowań dla wskaźników, ale to raczej nauczysz się o nich później.

    Musisz pamiętać kilka rzeczy:

    1.Żeby dostać się wartości zmiennej na jaką wskazuje wskaźnik musisz poprzedzić nazwe tego wskaźnika gwiazdką.

    2.Wskaźnik nie przyjmuje żadnych innych wartości niż adres komórki pamięci.

    3.Wskaźnikiem możesz manipulować dowolną zmienną.

    4.Do wskaźnika możesz przypisać dowolną zmienną tylko jeśli są tego samego typu ( są od tego jeszcze wyjątki, ale nie chce Ci mieszać ).

    No, może coś tam jeszcze by się wymyśliło, ale na kursie/w książce na 100% to pisze, a ty i tak musisz poćwiczyć.

  4. Myślę, że jeszcze lepiej byłoby sprawdzać dystans do obiektu i o ile jest w zasięgu to zadawać obrażenia. Ostatecznie możesz podesłać mi na PW ten projekt o ile będę miał chwilkę to zerknę i tak na szybko zarys Ci zrobię. Tylko uważam, że w ten sposób się nie nauczysz, bo nawet jakbym Ci wyczerpująco opisał każdy "ruch" to i tak nie przeanalizujesz tego. Chyba, że się mylę ;)

     

    Samo sprawdzanie dystansu jest połową drogi do sukcesu, bo jeśli dystans będzie odpowiedni, a przeciwnicy zajdą Cie od tyłu i od przodu, to wtedy każdy atak zada obrażenia, każdemu z tych obiektów. Co oznacza tyle, że niechciany efekt się pojawi.

    Pozwól, że do tego coś dodam... prócz dystansu, pasowałoby sprawdzać jeszcze, czy zaszła kolizja od przodu, jeśli tak to dopiero wtedy może odebrać hp przeciwnikowi.

     

    GML
    jeżeli wciśnięto przycisk

    {

    jeżeli dystans do obiektu jest mniejszy od ustalonego to

    {

    jeżeli zaszła kolizja od przodu (np. liniowa)

    odejmij przeciwnikowi hp

    }

    }

     

    Sposoby są różne, co komu pasuje. Jeśli chodzi o sposób MaxGaming'a, to chyba powinien tak właśnie wyglądać.

  5. Inne pytanie

     

    funkcja min zwraca minimalne liczby (np. 0, 1, 2 da 0)

     

    Czy da się podając jako argument (ab, ac) wyciągnąć, który argument jest mniejszy (przykładowo ac)?

     

    Fervi

    Jeśli chodzi Ci o zwykłą funkcje min. to w GM'ie będzie to wyglądało chyba tak:

    GML
    a = argument0;

    b = argument1;

     

    if( a > b )

    return b;

    else

    return a;

    Dawno nie pisałem nic w GM'ie, ale jeśli mnie pamięc nie myli, to robiło się coś w tym stylu. Rzecz jasna tworzysz sobie skrypt, i wklepujesz do niego powyższy kod.

    Potem zwykłe wywołanie skryptu w kodzie, gdzie Ci tam to potrzebne:

    GML
    zmienna = nazwa_skryptu( liczba, liczba ); // I oto do zmiennej zostanie zapisana ta mniejsza liczba.</span>
  6. Ok. Tylko nikt tu nie mówił o żadnym publikowaniu.

    Ja chcę tego używać do własnych celów ;)

    Program nie łamie żadnych praw, natomiast łamanie prawa to upublicznianie plików innym osobom, do własnego użytku można robić co się chce praktycznie :D

    Jak pobierzesz film, i jest na twoim kompie i nikomu nie dajesz, to nie jest łamanie prawa ?

    Chyba, że mówisz o zakupionych przez ciebie rzeczach, ew. o darmowych.

    Sama kopia, jeśli masz oryginał, to nic złego. Jednak jeśli nie masz oryginału, a tylko kopie cudzego pliku, to może się zaliczać do łamania prawa, o ile plik jest np. płatny, a ty go uzyskałeś za darmo.

  7. Normalnie, raczej nie ma takiej możliwości. Pytanie tylko w czym problem ?

    Przykład edytora, wraz ze wczytaniem mapy z pliku *.txt masz gdzieś na stronie, a jeśli chodzi o kodowanie, to nawet jak xor'a nie możesz ogarnąć, to zawsze są inne rodzaje kodowania. Próbuj nikt nie powiedział, że będzie łatwo. Trzeba tylko nad tym chwile posiedzieć.

    Szyfrowanie XOR

    Szyfrowanie DES

    Szyfr Cezara

    I wiele innych... Od biedy to wystarczyłoby, jakbyś w odpowiedni sposób poprzesuwał znaki.

    Na angielskim forum GM'a też coś zapewne znajdziesz.

  8. Odkąd GM potrafi obsługiwać się plikami binarnymi, nie można tego tak napisać. Co nie umniejsza faktu że się nie opłaca pisać własnego LIBa dla GM:S i to w GMLu tylko po to, by rozpakować archiwum. ;D

     

    Popieram jednak towarzysza co do "innego środowiska". Zapoznaj się bliżej z dotNET/Qt/wxWidgets, na pewno znajdziesz coś co Ci będzie odpowiadać.

    Nie wiem jak Qt i dotNET, ale wxWidgets jest dość prosty w użytku, raczej łatwo go ogarnąć. Jak zaczynałem się go uczyć, to miałem lekki problem z tym i owym, ale potem już jakoś szło (nie bawiłem się połączeniami z siecią, raczej interfejsem i rysowaniem graficzek). Jeśli chodzi o licencje, jak dla mnie lepiej jest wybrać wxWidgets'a niżeli Qt. :)

    Poza tym, jeśli chodzi o archiwa ediepl (mogłem się pomylić w pisowni nicku) kiedyś napisał taką biblioteke i udostępnił, nawet dodał kodowanie.

  9. Poszukaj sobie w dokumentacji funkcji która zwraca kolor pixel'a z danych współrzędnych (jeśli się nie myle, to istnieje taka funkcja, jak nie to zawsze możesz poszukać jakichś rozszerzeń do gm'a.), a potem sprawdzaj czy pod/nad tobą jest ten twój czarny pixel, albo po lewej/prawej od cb. Jeśli tak to zaszła kolizja + pasuje info z jakiejż to strony ona zaszła. Najlepiej sprawdzać to zanim w ogóle poruszysz obiektem ( coś jak if( place_free(x,y) ) ).

  10. Taki błąd masz, bo do drugiego elementu tablicy tObrazenia wsadzasz tablice dwuelementową... czy może raczej, jak kto woli po prostu 2 wartości, dla tablicy dwuelementowej.

    Zrób to tak:

    tObrazenia[] = { 0, 0 };

    wtedy tObrazenia[ 0 ] = 0 i tObrazenia[ 1 ] = 0, lub pobaw się wskaźnikami, ja tam nie wiem czego chciałeś dokonać.

  11. Jak wypisuje sobie potem zmienną alertem, to ma taką wartość: <?php echo $variable; ?>

    Za nic nie chce wczytać wartości tej zmiennej.

     

    Przed znacznikiem html mam:

     <?php 
      $variable = 3;
    ?>

     

    I w head wczytuje plik js, z czego funkcja wygląda tak:

    function getZCount()
    {
    count = "<?php echo $variable; ?>";
    alert( count );
    }

     

    I po wyświetleniu się alerta, pokazuje wartość: <?php echo $variable; ?>

  12. Witam. :bye1:

    Problem jest następujący, w php stworzyłem sobie zmienną $zCount = 3, następnie w js starałem się zczytać wartość tej zmiennej, ale bez skutku.

    Zczytywałem zgodnie z tym co piszą na forach: count = "<?php $zCount ?>";

    Nie wiem, czy ja robie coś źle, czy trzeba to jakoś inaczej zrobić ?

    W internecie podawali też zapis "<?= $zCount ?>", ale też bez skutku.

    To w zasadzie jedyne co robie w funkcji js. :mellow:

    Z góry thx za pomoc.

  13. Odpalam apke na bluestacks'ie, i wywala mi komunikat INSTALL_FAILED_OLDER_SDK, zupdatowałem sdk, ale nadal jest to samo. Jeśli ja mam najnowsze, to jakiego potrzebuje bluestacks?

    Po skompilowaniu apki odpalam plik *.apk, bluestacks zaczyna instalować apke, a zaraz po tym wyświetla się ten komunikat.

  14. http://www.ntu.edu.sg/home/ehchua/programm...Android_3D.html

    Mam pytanko, co jest w tym kodzie źle, że kiedy kompiluje apke i odpalam na emulatorze, to pisze tylko że aplikacja została zatrzymana. :mellow:

    Kod kopiowałem do nowo stworzonego projektu, próbowałem apke odpalić zarówno na androidzie 2.2, jak i 4.3 i dzieje się to samo.

    A kopiowałem go do momentu, kiedy teoretycznie było można już wyrysować trójkąt i kwadrat, potem próbowałem jeszcze tą wersje, gdzie można było nadać tym kształtom kolor i nic z tego, nie ma błędów przy kompilacji, ale przy włączeniu po kilku sek. apka zostaje zatrzymana i koniec.

×
×
  • Dodaj nową pozycję...