Skocz do zawartości

candy

Użytkownicy
  • Postów

    491
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez candy

  1. Tylko powiedz jeszcze, co chcesz osiągnąć.
  2. Ale w create czy gdzie indziej? Jak w create, to zmienna=0;
  3. Zadeklaruj zmienną pomocniczą: GML if(keyboard_check_pressed(klawisz)) { if(zmienna==0) { // akcja 1 zmienna=1; } else { //akcja 2 } }
  4. Zrób postaci maskę. Robisz nowy sprite o tych samych rozmiarach co postaci. Rysujesz na nim pole, tak aby nakładało Ci się na nogi gracz. W okienku object gracz masz rozwijaną listę mask. Wybierz nowy stworzony sprite. Teraz wszystkie kolizje będą ograniczały się tylko do sprite'a maski, a nie do sprite'a postaci. E: Ups, za wolny jestem.
  5. Jest tylko mały minus. Trzeba plik w jakiś sposób zabezpieczyć przed odczytem.
  6. Dobra, a co się stanie gdy najedziesz na przeszkodę. Zasięg gracza zmaleje. Tworząc pola za pomocą pętli może się wtedy okazać trudne. Nawet jeżeli przeskoczysz przeszkodę, nie wiesz czy gracz będzie mógł w ogóle wejść na to pole za nią (przed, obok, zależy od strony). Robiąc to za pomocą rekurencji nie musisz się o to martwić. Zaczynasz od pola, na którym stoi gracz. Potem sprawdzasz cztery sąsiednie pola czy są wolne. Jak tak, tworzysz obj_pole i sprawdzasz jego cztery sąsiednie pola. A jak nie jest, przerywamy działanie funkcji dla danego pola. Tym sposobem zaznaczymy wszystkie możliwe pola, na które może wejść postać. Chyba, że udało Ci się to zrobić za pomocą pętli (ja się tego nie podejmuję). Ale i tak wydaję mi się, że rekurencja w tym przypadku jest o wiele łatwiejsza do zrobienia niż zabawa z pętlami.
  7. Załóżmy, że mamy funkcję f_dodaj(x). Dodaje ona do siebie kolejne liczby naturalne od 1 do x. X to wartość wpisana przez Ciebie. Dajmy, że x=5. GML a=0; a=f_dodaj(5);//pierwsze wywołanie funkcji</span> W script f_dodaj piszemy: GML if(argument0) argument0+=f_dodaj(argument0-1); /*else return argument0;*/ Pierwsza linijka sprawdza czy mamy wykonać kolejną rekurencję. W naszym przypadku chcemy dodawać do siebie liczby z przedziału [1,x], więc naszym warunkiem jest sprawdzenie czy kolejna liczba, którą chcemy dodać jest nieujemna. Gdy nie jest, wykonujemy dalej rekurencję, z tą różnicą, że nasz argument zmalał o 1. Gdybyśmy nie dali żadnego warunku sprawdzającego, rekurencja zachowywała by się jak pętla: GML while(true) a+=1; Argument0 to cyfra którą wpisaliśmy w pierwszym odwołaniu. Możesz maksymalnie wpisać 16 argumentów. Ostatnie dwie linijki nie są potrzebne, ale czasem łatwiej jest zwracać wartość funkcji poprzez return, ponieważ zatrzymuje to dalsze wykonywanie funkcji.
  8. Komunikat ten oznacza, że nie zadeklarowałeś zmiennej yes. Zanim odwołasz się do zmiennej musisz ją zadeklarować. Co do tworzenia tego niebieskiego pola, z mniejszych kwadracików. Według mnie najlepiej jest skorzystać z, znienawidzonej przez wszystkich, rekurencji.
  9. candy

    Nana 2

    Tytuł: Nana 2 (tytuł się zmieni) Gatunek: platformówka Troszkę o fabule. Cukierkowa Kraina znowu jest w niebezpieczeństwie. Ktoś wykradł z zamku Magiczne Ciastka. Ciastka jak nie wrócą na czas, stanie się straszna rzecz. Czekoladowa Kraina zniknie i nie będzie już słodyczy na świecie! Nasi dzielni bohaterowie z poprzedniej części, Nana i Yano, wyruszają w niebezpieczną pogoń za złodziejem żeby zapobiec nieszczęściu. W trackie gry poznamy Sakurę, tak jak Nana jest adeptkę czekoladowej magii. Od tej chwili będziemy sterować losami obydwu postaci... i to byłoby tyle, jeżeli chodzi o początek fabuły. W grze planuję zrobić coś takiego, aby gracz mógł sam decydować, którą z dwóch postaci chce grać w danym momencie. (Myślałem także o trzeciej, ale to będzie raczej mało prawdopodobne). W danym momencie oznacza, że będzie można zamienić postać nawet w czasie rozgrywki, nie tylko na początku levela. Pod warunkiem, że dysponujemy jakąś czekoladową komórką, dzięki której wezwiemy wsparcie. Różnice między postaciami: Tylko Nana będzie mogła korzystać z znalezionych na mapkach bonusów. Natomiast Sakura będzie "naparzać" przeciwników czekoladową magią oraz swoją czarodziejską miotłą. Nana jest szybsza, bardziej zwinniejsza (możliwość wall jampa itp.) od Sakury. Sakura będzie także mniej wytrzymała od Nany, zbyt szybkie czarowanie spowoduje, że się zmęczy i nie będzie mogła się ruszyć przez pewien czas. Zamiast screenów wrzucam plik z tym co jest. Nie ma tego dużo. Jak na razie jest prawie dokończone sterowanie Nany, resztę się dorobi jak będą przeciwnicy. Chciałbym także, żebyście sprawdzili (kto oczywiście chce) to co jest pod kątem sterowania. Czy coś jeszcze dodać, czy coś usunąć, poprawić itp i wyłapali jakieś niedopatrzenia. W tej wersji można zbierać czekoladowe ciasteczka. Wbiegnięcie na żółty prostokąt kończy rozgrywkę: Nana 2 Opis sterowania jest dołączony w pliku txt. Byłbym wdzięczny za wszystkie sugestie i opinie. E. Już się poprawiam ;D Screen1 Screen2
  10. candy

    [allegro] c++ prośba/pomoc

    Skoro już tyle masz, to zrobienie systemu walki wydaje się drobnostką ;D
  11. Wpisując samo x i y odwołujesz się do położenia obj. Chyba, że jest w with (obj_jakis){ o tutaj }. Wtedy to x i y dotyczy obj_jakis, mimo, że kod napisany jest w innym obj. Jako ostatni argument wpisujesz obiekt, z którym obj 1 mając kolizję wykonuje akcję.
  12. Chcesz zamienić graficzkę obj 1, gdy obj 2 najedzie na niego i klikniesz jakiś klawisz. Kod wrzuciłeś do obj 2. To pierwszy błąd. Kod który napisałeś odnosi się do obiektu 2. Obj 2 sam sobie zamienia sprite. Jeżeli chcesz aby kod ten był w obj 2, to musisz potem odwoływać się do obj 1 (np za pomocą with(obj 1), albo za pomocą id) Zastanawiam się po co użyłeś object_exists(hero). Chyba, że hero może zniknąć z mapy. A co do skoku w tył. Możliwe, że w innej części kodu (niezwiązanej z tą akcją) masz fragment, który powoduje przesunięcie obj 2. Albo to co napisałeś. Wina leży w źle dobranym origin. Najlepiej jest jak wszystkie grafiki obiektu mają jednakowe rozmiary i wycentrowany origin.
  13. W którym obiekcie masz ten kod? I co oznacza: ?
  14. Tak, sprite_index zmienia Ci sprite'a: GML sprite_index=nazwa_sprite;
  15. Nie ma przykładów na głównej? Czy opcja szukaj się nagle wyłączyła? Jak będziesz chciał, na pewno coś znajdziesz.
  16. Nie przesadzajmy, jak ktoś ma chęci i upór, to o wiele szybciej :D.
  17. A jaki jest znak negacji? Wstaw go przed daną funkcją i masz zaprzeczenie.
  18. Funkcja variable_local_exists, zwraca czy zmienna o danej nazwie istnieje. Więc jeżeli napisałeś zmienna=sprite_add(coś tam), to ją zadeklarowałeś. Jest to równoważne z tym, że już istnieje. A wywala Ci błąd, ponieważ draw_sprite odwołuje się do nie istniejącego pliku graficznego. Lepiej byłoby gdybyś dał warunek: GML if(zmienna!=0) draw() Zakładam, że w create przed zmienna=sprite_add() nie dajesz żadnego warunku na sprawdzanie czy dany plik istnieje, tylko wczytujesz nie zważając na to.
  19. Może gdzieś wcześniej już zdefiniowałeś daną zmienną.
  20. Masz dwa obiekty celownik? Jak tak, to obydwóm musisz wrzucić kod na obracanie.
  21. Celownik ma się obracać wokół osi przechodzącej przez jego środek? Ustawiasz mu origin x i y na środek. A potem w stepie napisz: GML image_angle+=xx; Zobacz w słowniku co oznacza słowo direcion:)
  22. A przerzuć folder z grą na inną partycję. Może pomoże.
  23. Chyba chodzi o to, że GM nie wczytuje jpg. Jeszcze jedno. Mam nadzieję że ta ścieżka, którą podałeś tuta, jest tylko do testów. Nie wszyscy muszą mieć partycję H.
  24. Robisz teraz tak. Dajesz tylko pierwszy warunek. Bawisz się z nim aż w końcu zacznie działać. Następnie wklepujesz drugi i to samo. Metoda może nie zbyt wyszukana, ale nie mam pojęcie gdzie może tkwić błąd.
×
×
  • Dodaj nową pozycję...