[ROZWIĄZANE] Kolejnosc warukow i ich optym...
Najlepsza odpowiedź
sebul
15.01.2014 08:24

Rivit
14.01.2014
Jaka jest najoptymalniejsza kolejnosc warunkow?
Przyklad
public TakeDamage() { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(damagebits & DMG_BULLET) { new weapon = get_user_weapon(idattacker); if(weapon == CSW_KNIFE && damage > 20.0 && random_num(1,2) == 1) } }a moze taka
public TakeDamage() { if(!is_user_connected(idattacker)||!ma_klase[idattacker]||!(damagebits & DMG_BULLET)) return HAM_IGNORED; new weapon = get_user_weapon(idattacker); if(weapon == CSW_KNIFE && damage > 20.0 && random_num(1,2) == 1) }lepiej pakowac wszystko do jednego if i jesli jest rozne to ham ignored czy lepiej jest uzyc jednego if i zrobic jeden dlugi warunek za pomoca '&&', a moze podzielic (na poczatku if connected, potem ma klase, potem czy dmg jest z broni (damagebits), a na koncu random itp.). Jak to zrobic optymalnie. proszę o rozwiniecie odpowiedzi bo zzera mnie ciekawosc.
sebul
14.01.2014
Droso
14.01.2014
Oba przypadki, które podałeś są takie same.
W drugim przypadku i tak leci po kolei od lewej czyli sprawdzi po kolei jak wyżej .
+ Jeżeli ogólnie chodzi o kolejność to zawsze na początku sprawdzaj czy jest połączony - potem czy zmienna jest np. true, a potem twoje inne warunki .
DarkGL
14.01.2014
lepiej pakowac wszystko do jednego if i jesli jest rozne to ham ignored czy lepiej jest uzyc jednego if i zrobic jeden dlugi warunek za pomoca '&&', a moze podzielic (na poczatku if connected, potem ma klase, potem czy dmg jest z broni (damagebits), a na koncu random itp.)
różnica jest minimalna i pomijalna a długie ify są trudniejsze do czytania przez programistę więc po prostu łącz obie techniki z głową
Rivit
15.01.2014
warunek && warunek
i pierwszy jest falsz to drugi sprawdza wtedy czy nie? Bo wtedy ulozenie warunkow chyba cos daje?
Najlepsza odpowiedź
sebul
15.01.2014
Rivit
15.01.2014
Czyli opłaca się używać warunków w jednej linii.
A jak je ustawić?
dajmy na to mam dane:
ma_perk is_user_connected(id) random_num (1, 3) == 1 damagebits & DMG_BULLET
Jak je ustawić od lewej do prawej?
Zabijaka Gryps
15.01.2014
^Grzyboo
15.01.2014
is_user_connected(id) - oczywiste, sprawdzamy, czy gracz jest połączony - to chyba podstawa
ma_perk[id] - wypadałoby sprawdzić, czy gracz ma ten item, zanim coś zaczniemy działać.
damagebits & DMG_BULLET - gdy już ustalone wszystko, sprawdzamy czy to obrażenia od kul
losowanie - raczej na końcu się daje. Nie ma sensu losować, gdy np. kolejny warunek nie zostanie spełniony.