Diskuze: Umělá inteligence

Ostatní jazyky GameMaker GameMaker Umělá inteligence

Avatar
Karak Dalík
Člen
Avatar
Karak Dalík:

Dobrý den, potřeboval bych pomoct/poradit, dělám hru v bludišti, kde hráč hledá zlatou sochu a musí se vyhýbat "kledbě" (takové černé stonožce). A já potřebuji aby ta stonožka projížděla bludištěm a hráče hledala, tedy aby nejezdila od zdi ke zdi, ale i sama občas zatočila. A moc mi to nejde vždy se něco pokazí.

Takhle vypadá její step:
if 1=1 {if point_distance(x,y,Pla­yer.x,Player.y)<200
and not collision_line(x,y,Pla­yer.x,Player.y,Ste­na,false,true){ak­ce=1}
if akce =1 { if point_distance(x,y,Pla­yer.x,Player.y)>250{ak­ce=0}
else{mp_grid_p­ath(mpg,path0,x,y,Pla­yer.x,Player.y,0)
path_start(pat­h0,3,0,1)}}}
if akce=0{
if smner=0{if !place_free(x,y+3) then smner=2} else { //odraz

if smner=1{if !place_free(x-3,y) then smner=3} else {

if smner=2{if !place_free(x,y-3) then smner=0} else {

if smner=3{if !place_free(x+3,y) then smner=1} else {
}}}}
if smner=0{if place_free(x-3,y) then smner=1} else { //zatáčení

if smner=1{if place_free(x,y+3) then smner=2} else {

if smner=2{if place_free(x+3,y) then smner=3} else {

if smner=3{if place_free(x,y+3) then smner=1} else {
}}}}

if smner=0 {direction=270}
if smner=1 {direction=180}
if smner=2 {direction=90}
if smner=3 {direction=0}
}

Editováno 11. srpna 11:25
 
Odpovědět 11. srpna 11:24
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Karak Dalík
TomBen:

Když už píšeš jako prase, alespoň používej beautifier. Tenhle funguje i na GM kódy:
http://jsbeautifier.org/

Pár poznatků ke uvedenému kódu:

  • If 1=1 je nesmyslná podmínka, která platí vždycky.
  • point distance testuj vždy jen jednou za step

    ( pro další podmínky si výsledek schováš do proměnné a testuješ jen ji )

  • spousta ifů, programátorova smrt ( používej krátké skripty, ne špagetový kód )

Osobně bych na problém zkusil jít úplně jinak, takříkajíc od lesa. V bludišti bych rozmístil neviditelné objekty jako sensory a když by byl hráč u nich, housenka by lezla směrem k cíli náhodně zvolenému z několika volných míst okolo sensoru. Vypadalo by to, že hráče hledá. Na hráče by se pak vrhala jen v přímém dohledu.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 11. srpna 17:23
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.