Skocz do zawartości

Losowy Poziom


Sminer

Rekomendowane odpowiedzi

Witajcie!

Aktualnie tworzę grę "Pokemon"

I mam problem, że podczas walki z dzikim Pokemonem chcę aby jego poziom byl losowy.

Naprzyklad od poziomu 1 do poziomu 3.

 

W draw mam kod aby pokazywał poziom :

 

draw_text(view_xview+200,view_yview+80,"Poziom: "+string(Pokemon_poziom))

 

 

Mam też drogi problem z zyciem tych Pokemonow.

Chce zeby Pokemon z poziomem 1 mial 5 hp a z poziomem 2 8 hp itd.

wiec w draw mam jeszce 1 kod:

 

draw_healthbar(view_xview+110,view_yview+150,view_xview+450,view_yview+180,zycie

,0,c_red,c_green,0,1,1)

 

ale gdy robie 5 hp to mi sie zapelnia 1/20 paska zycia ;/

 

Dzieki za pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

Ad.2

GML
//create:

zycie=100

GML
//step:

if pokemon_poziom=2

{

zycie=140

}

if pokemon_poziom=3

{

zycie=140

}

GML
//draw:

draw_healthbar(view_xview+110,view_yview+150,view_xview+450,view_yview+180,zycie

,0,c_red,c_green,0,1,1)

Edie - draw_healthbar będzie miało tyle ile poda w argumencie . EDIT Chyba , że źle Cie zrozumiałem .

Odnośnik do komentarza
Udostępnij na innych stronach

Dziekuje wam za odpowiedzi wszystko dziala zgodnie z planem.

Trudzilem sie kilka godzin nad tym a odpowiedz w 5 minut od was dostalem ;)y dopiero potem ten pasek sie zmni

 

 

A tak wogule to idzie zrobic ze pasek zecia jak poczatkowo ma np 100 hp i 27 hp to zeby byl takiej samej dlugosci??

Bo to wyglada tak:

 

Sprite z 100 hp

[------------------------------------]

Sprite z 27 hp

[-----------]

 

I zeby dopiero po udezeniu ten pasek sie zmniejszal a nie na pocaztku ;/

Odnośnik do komentarza
Udostępnij na innych stronach

osobiście zrobiłbym te życie nieco inaczej (na poziomach 1-3 jeszcze ify ujdą, wyższe poziomy to już switch ale najlepiej byłoby znaleźć zależność i wpisać wzór, np zycie = 4+power(poziom, 2); albo zycie = 2+poziom*3; itd.

 

draw_sprite_ext w porównaniu do draw_healthbar nie jest najlepszym rozwiązaniem, potrzebny jest sprite. Nie mniej jednak można to obejść i to na dwa sposoby :) .

 

GML (Create)
max_zycie = 160;

zycie = max_zycie;

1. - przekształcenie draw_healthbar:

GML (Draw1)
draw_healthbar(view_xview[0]+110, view_yview[0]+150, view_xview[0]+450, view_yview[0]+180,

zycie*100/max_zycie, 0, c_red, c_green, 0, 1, 1);

 

2. - symulowanie draw_healthbar:

GML (Draw2)
draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0));

draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0);

draw_set_color(c_black);

draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 0);

Odnośnik do komentarza
Udostępnij na innych stronach

2. - symulowanie draw_healthbar:

GML (Draw2)draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0));

draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0);

draw_set_color(c_black);

draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 0);

Właśnie przykryłeś czarnym prostokątem pasek życia :P . Prawidłowo:

GML
draw_set_color(c_black);

draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 0);

draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0));

draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0);

Ewentualnie, zamieniając false na true:

GML
draw_set_color(make_color_rgb(floor(min(255, 510-zycie*510/max_zycie)), floor(min(255, zycie*510/max_zycie)),0));

draw_rectangle(view_xview[0]+110, view_yview[0]+150, view_xview[0]+110+340*zycie/max_zycie, view_yview[0]+180, 0);

draw_set_color(c_black);

draw_rectangle(view_xview[0]+109, view_yview[0]+149, view_xview[0]+451, view_yview[0]+181, 1);

Odnośnik do komentarza
Udostępnij na innych stronach

Od teraz muszę sprawdzać co piszę ;D . Ale co tam, wprawny uczeń znalazłby błąd :) .

 

No tak, zał: zycie należy do <0, max_zycie> :)

 

Bez nawiasu będzie nawet lepiej, komputer najpierw mnoży, potem dzieli, dzięki temu działa na przyjaznych jemu większych liczbach. A efekt ten sam :) . Wtedy można nawet to rozwiązać na liczbach całkowitych ;P .

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