Skocz do zawartości

Silnik do gry Pokemon


Sminer

Rekomendowane odpowiedzi

Witajcie!

Poszukuje silniku do gry Pokemon.

Zaczynam robic grę Pokemon i juz zrobilem ruzne zeczy i wogule ale chcialbym sprawdzic czy idzie to zrobic troche latwiej a niekturych rzeczy po prostu jeszcze zrobic nie umiem.

Byc moze ktos czytajacy ten temat kiedys robil tez gre Pokemon i zna sie troche na zeczy wiec tez by mi mugl duzo pomoc.

Glownie chodzi mi o :

 

Chodzenie ludzika po kratkach 32/32

Gdy wchodzi nasz ludzik w trawe (Tak jak jest w prawie wszystkich wersjach pokemon) losowal sie pokemon i jego poziom.

Menu do gry.

Oraz zmienne w kazdym pokemonie (hp atak obrona)

(Chodzi mi tylko o wzor jak to zrobic)

 

Jezeli chcecie moge wam dac w linku to co juz zdazylem zrobic i wtedy moze byscie mieli pomysl aby cos zmienic.

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzenie ludzika po kratkach 32/32

Gdy wchodzi nasz ludzik w trawe (Tak jak jest w prawie wszystkich wersjach pokemon) losowal sie pokemon i jego poziom.

Menu do gry.

Oraz zmienne w kazdym pokemonie (hp atak obrona)

(Chodzi mi tylko o wzor jak to zrobic)

 

Nie widziałem nigdy pokemona ani gry o pokemonach ale chodzenie pewnie jest na tej zasadzie:

GML
x=mouse_x div 32 *32

y=mouse_y div 32 *32

Wrzuć to do step dowolnego obiektu a mysz zacznie skakać co kratkę.

Menu zazwyczaj robię na osobnym roomie na którym albo wstawiam obiekty reagujące na naciśniecie klawiszy myszy albo tylko rysuję i przy kliknięciu sprawdzam współrzędne.

Co do zmiennych to daj w create zmienne hp, atak, obrona. Podczas tworzenia obiektów instance_create(x,y,obj) zwracane jest ID danego obiektu. Przechowuj te ID w tabeli.

GML
//Tworzy 10 instancji obiektu pokemon_obj

for (i=0; i<10; i+=1){

tabela_z_id_pokemonow:=instance_create(((irandom(room_width) div 32) *32),((irandom(room_height) div 32) *32),pokemon_obj);

 

Do zmiennych danego obiektu odwołujesz się poprzez ID.hp, ID.atak czyli:

tabela_z_id_pokemonow[0].hp:=100; //nadaje hp=100 dla pokenona nr 0

tabela_z_id_pokemonow[5].atak:=250; //nadaje atak=250 dla pokenona nr 5

jaka_obrona:=tabela_z_id_pokemonow[8].oborna;//odczytuje do zmiennej jaka_obrona wartosc zmiennej obrona dla pokemona 8

 

Podobnie możesz operować na wszelkich zmiennych dostępnych dla każdego z obiektów.

Odnośnik do komentarza
Udostępnij na innych stronach

LoL nasrałeś jak... wszystko źle i większość niepotrzebne.

Nie wiem gdzie uczyłeś się liczyć ale tabela_z_id_pokemonow[5].atak:=250 jest dla pokemona nr.6.

Losowanie i nadawanie hp najlepiej robić w instancji.

tabela_z_id_pokemonow[5].atak:=250

Dla czego po "atak" jest dwukropek?

Odnośnik do komentarza
Udostępnij na innych stronach

LoL nasrałeś jak... wszystko źle i większość niepotrzebne.

Nie wiem gdzie uczyłeś się liczyć ale tabela_z_id_pokemonow[5].atak:=250 jest dla pokemona nr.6.

Losowanie i nadawanie hp najlepiej robić w instancji.

 

Dla czego po "atak" jest dwukropek?

 

Przecież wyraźnie liczyłem pokemony od ZERA.

 

:= to to samo co =

{ to to samo co begin

} to to samo co end

 

GML to język wielu składni C, Pascala itp. Ja mam przyzwyczajenia z pascala więc piszę z dwukropkiem.

 

W delphi jesli napiszesz

if costam=100 then {costam=200} nie zadziała bo powinno być if costam==100 then {costam:=200}

== oznacza przyrównanie

:= oznacza przypisanie

 

w GMLu jest to dowolne ale nie raz mniej czytelne.

 

PS.Co niby jeszcze jest źle :)?

Odnośnik do komentarza
Udostępnij na innych stronach

Niech każda instancja trawa, stworzy sobie jedną tablice 32x32.Następnie stwórz zmienną ruch=false w evencie create, jeżeli postać się poruszy, ruch ma być true, a jeżeli zachodzi kolizja z tablicą i postać się rusza, masz 1/5 (20%)szansy, że zajdzie walka.Chyba dobry pomysł, ale może ktoś inny jeszcze coś wymyśli.

Odnośnik do komentarza
Udostępnij na innych stronach

Niech każda instancja trawa, stworzy sobie jedną tablice 32x32.Następnie stwórz zmienną ruch=false w evencie create, jeżeli postać się poruszy, ruch ma być true, a jeżeli zachodzi kolizja z tablicą i postać się rusza, masz 1/5 (20%)szansy, że zajdzie walka.Chyba dobry pomysł, ale może ktoś inny jeszcze coś wymyśli.

Bez sensu :D . Czy nie uważasz, że to co napisałeś nie jest ani trochę logiczne? Tablica nie jest tutaj potrzebna, ba, nie ma nawet racjonalnego zastosowania. Dlatego uważałbym z podawaniem w odpowiedziach czystej teorii, bo gdybym teraz poprosił o przykład ilustrujący twoją ideę, byłoby nieciekawie.

 

Wracając do problemu. Gdy zaczniesz się ruszać, wykonujesz:

GML
_event = true;

A w samym stepie:

GML
if ( x div 32 * 32 == x && y div 32 * 32 == y && _event )

{

_event = false;

if ( random( 1 ) > 0.2 )

{

FIGHT!

}

}

Rozwiązanie proste, ale skuteczne. Po co utrudniać sprawę?

 

Z pewnością sprawa byłaby 10 razy łatwiejsza, gdybyś podał cały kod. Później się dziwicie, że jest beznadziejny.

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ę...