|
       Čia
pateiksime kelis robotų pavyzdžius, kad jums būtų lengviau susikonstruoti
savąjį :)        Jei jūs padarėte labai "kietą"
robotą ir manote, kad jis tiktų šiai skilčiai, t.y. iš jo būtų galima
daug ko išmokti, atsiųskite jį ir jo aprašymą mums
:)
%============WINSIMPLE.RW1==============
%Paprasčiausio roboto su viena akim ir ginklu pavyzdys
%Paleidimas: RW1_DUEL.EXE WINSIMPLE.RW1
"WinSimple robot" %Roboto vardas
COLOR FFD010 %Roboto spalva
FRONT EYE %Robotas su akim priekyje
LEFT GUN %ir ginklu kairėje
START:
   ACT FRONT % Pažiūri į priekį.
   IF N!=6 : L1 % Jeigu priekyje nėra priešo,
eiti į L1.
   RIGHT % Kitu atbeju, pasisuka į dešinę ir
   ACT LEFT % šauna.
   LEFT % Atsisuka atgal.
   GOTO START % Grįžta į pradžią
L1: % Nuoroda "L1"(label)
   IF N!=3 : L2 % Jei priekyje nesimato dėžės su raketom,
   %eina į žymą "L2"
   STEP % Kitu atveju, žengia į priekį.
   GOTO START % Grįžta į pradžią
L2: %Jei priekyje NĖRA nei kito roboto nei raketų dėžės,
   %reiškia gali būti tik siena arba tuščia erdvė
   IF D<1 : L3 %Jei distancija iki artimiausio objekto
mažesnė nei 1,
   %eina į "L3"
   STEP %Kitu atveju, eina į priekį.
   GOTO START % Grįžta į pradžią
L3:
   RIGHT % Pasuka dešinėn ir
   GOTO START % grįžta į pradžią
END %Programos pabaigos ženklas
%============Monster-7==============
% Robotas su akimi priekyje ir ginklu kairėje..
% Autorius - Yaroslav Malygin
ROBOT "Monster"
COLOR 000000
FRONT EYE
LEFT GUN
image 0 0 C C C C 0 0 % Paveiksliukas
image 0 C 0 0 0 0 C 0
image C 0 0 C C 0 0 C
image C 0 C 0 0 C 0 C
image C 0 C 0 C 0 0 C
image C 0 0 C 0 0 C 0
image 0 C 0 0 C C 0 0
image 0 0 C 0 0 0 0 0
START:
% Šis masyvas leidžia sumažinti operatorių skaičių, o kartu ir pagreitinti
robotą..
% Tai yra labai svarbu, kai robotas šaudo arba turi bėgti..
% Gaila, bet tai užima 19 mūšio laiko TIK'ų
% pačioje žaidimo pradžioje..
   def object[11]
   def R_O[11]
   eneg=E % Išsaugome savo energiją..
   object[0]=3
   object[1]=0
   object[2]=1  
   object[3]=5
   object[4]=4
   object[10]=2
   object[5]=6
   object[6]=7
   R_O[0]=0
   R_O[1]=1
   R_O[2]=1
   R_O[3]=0
   R_O[4]=1
   R_O[5]=1
   R_O[6]=1
   R_O[10]=1
start1: % Pagrindinės žymos pradžia
   ACT FRONT % Pažiūri į priekį..
   if object[N]<6 : L1 % Jeigu ten nėra nei roboto,
nei raketos, tada einam į L1
L0:
   dist=D % Išsaugo atstumą iki (galbūt) priešo..
   RIGHT % Atsuka ginklą į priešą..
shoot:
   ACT LEFT % Šauna tris kartus..
   ACT LEFT
   ACT LEFT
   IF M<2 : uhod % Jei robotas neturi pakankamai raketų,
tai jis bando pabėgti..
   delta=eneg-E
  if delta>=2 : last_stand % Jeigu robotas yra sunkiai
sužeistas, tuomet padidinamas jo
  % šaudymo greitis..
   SPY % Patikrinama paskutinė raketa.. (Praėjo trys
TIK'ai po paskutinio šūvio,
   % taigi raketa galėjo pajudėti per 3*5=15 celių..)
  if object[N]>=6 : shoot % Priešas buvo sužeistas arba
matoma kita raketa,
  % taigi šaudymas pakartojamas..
  if m<5 : L6 % Jei robotas neturi pakankamai raketų,
tai
  % grįžta į paskutinę paziciją ir eina prie pagrindinės
žymos..
  LEFT
  act front % Pasižiūri priešo kryptimi..
  if object[N]>=6 : L0 % Jei pamato robotą (arba raketą)
tai šaudymą pakartoja.
pr1: % Kitu atveju vejasi priešą..
  if dist<3 : pr2
  STEP % Roboto persekiojimas (t.y. robotas nukeliauja
į tą vietą, kur
  STEP % paskutinį kartą buvo priešas, kaip galima greičiau..)
  dist=dist-3
  goto pr1
pr2:
  if dist==0 : pr3
  STEP
  if dist==1 : pr3
  step
pr3: % Robotas pasiekia tą vietą..
  LEFT
  ACT FRONT % Pasižiūri į priekį (kur gali būti priešas..)
  RIGHT
  if object[N]>=6 : shoot % Jei pamato priešą (arba raketą),
tada šauna..
  RIGHT % Kitais atvejais dar kartą pasisuka
  goto start1 % ir grįžta prie pagrindinės žymos..
L1: % Robotas nepamatė nei priešo, nei raketos..
  if eneg>E : what % Jeigu roboto energija sumažėjo,
tada patikriname, kas atsitiko..
  eneg=E % Išsaugome savo energiją..
  if N!=3 : L3 % Jei nemato dėžės, einam į L3.
L5:
  STEP % Pajuda
  goto start1 % ir grįžtam prie pagrindinės žymos..
L3:
  if N!=4 : walk % Jei namato atominės elektrinės, eina
pasivaikščiot..
  if E<13 : reactor % Jeigu neturi pakankamai energijos,
eina užsikraut..
  if D<4 : walk % Jei reaktorius netoli, eina pasivaikščiot..
  if M<35 : walk % Jeigu neturi pakankamai raketų, eina
pasivaikščiot..
blow: % Elektrinės sunaikinimas..
  RIGHT % (Tikslas: Mūsų robotui energija nebereikalinga,
o elektrine gali
  ACT LEFT % pasinaudoti priešas..)
L6:
  LEFT
  GOTO start1
reactor:
  if D!=1 : L5 % Juda link elektrinės..
L7: % Užsikrauna..
  RIGHT % Robotas sukiojasi ir stebi ar nėra priešo
  ACT FRONT % kol visiškai užpildoma energija..
  if object[N]>=6 : start1
  if E == 13 : start1 % Tada grįžtam prie pagrindinės
žymos..
  goto L7
walk: % Kairėje esančių "apylinkių" apžiūrinėjimas.. (vaikščiojant)
  if D==1 : L4 % Jei kelyje yra kliūtis, pasisukam..
  STEP % Judam..
  if r<80 : L4 % Pasisukam (8% tikimybė)
  left
  act front % Dirstelnam kairėn..
  if object[N]>=6 : L0 % Pamačius prieša, jį atakuojam..
  if N==3 : L5 % Pamačius dėžę, judam link jos..
  if N==4 : wh01 % Jei pamato elektrinę, einame į wh01
wh02:
  right % Nepamato nieko įdomaus, taigi pasisukam atgal..
  if eneg<=E : start1 % grįžtame prie pagrindinės žymos..
  goto what % Jeigu energija sumažejo, patikriname kas
atsitiko..
wh01:
  if e<13 : reactor % Robotas mato elektrinę ir pakartoja
beveik tą patį..
  if d<4 : wh02
  if m<35 : wh02
  if eneg<=E : blow % Jeigu robotas turi pakankamai energijos,
susprogdinam elektrinę..
  goto what % Sumažejus energijai, patikriname kas atsitiko..
L4:
  if r>500 : L11 % Atsitiktinai pasukam dešinėn arba
kairėn..
  RIGHT
  goto walk1
what: % Čia patikrinama, kas atsitiko, kai robotas buvo pažeistas..
  right
  right % Apsisuka..
  act front
  if object[N]>=6 : L0 % Jeigu užnugaryje buvo priešas,
robotas šauna..
uhod: % Atsitraukimas.. Dažniausiai priešas būna dešinėje..
  % Mūsų robotas nori pabėgti iš pavojingos zonos..
  ACT FRONT
  if D>R_O[N] : L9 % Jeigu priekyje nieko nėra arba ten
dėžė, pajudam į priekį..
  RIGHT
  RIGHT % Kitu atveju mes pasukam atgal..
  ACT FRONT
  if D>R_O[N] : L9 % Patikriname galimybę judėti į priekį..
  LEFT % Jei ne, pasukame į kairę.. Didelė tikimybė,
jog robotas užnugaryje..
  ACT FRONT
  if D>R_O[N] : L8 % Ar galima judėti atgal?
  RIGHT
L10:
  RIGHT % Pagaliau mes bandome judėti link priešo (kito
kelio nėra).
  STEP
  RIGHT
  ACT FRONT
  if D>R_O[N] : L9 % Patikriname galimybę pajudėti į kitą
celę..
  RIGHT
  RIGHT
  ACT FRONT
  if D<=R_O[N] : L10
L9:
  STEP % Atrodo, jog išsigelbėjom..
  eneg=E % Išsaugome energija ir grįžtame prie
  goto start1 % pagrindinės žymos..
L8: % Judėjimas pavojinga linija..
  STEP
  LEFT
  goto uhod % Dar kartą pamėginame pasitraukti iš pavojingos
linijos..
LAST_STAND:  % Šaudymo greičio padidinimas (jeigu robotas
gerokai sužeistas)
  if m<3 : uhod % Jeigu robotas neturi pakankamai raketų,
tada bando pabėgti..
  SPY % Patikrinam paskutinę raketą..
  if object[N]<6 : L6 % Jei priešo nėra, einam į L6..
  act left
  act left
  act left % Kelis kartus šaunam..
  act left
  act left
  goto last_stand % ir dar kartelį..
L11:
  LEFT % pasuka kairėn (pvz.: jei kelyje yra kliūtis..)
walk1: % Ar galima judėti šia kryptimi???
  act front % Šia kryptim judėti galima, jei atstumas
iki
  if d>1 : start1 % objektto > 1 arba
  if object[N]>2 : start1 % ten yra naudingas objektas
(naudinga viskas, išskyrus sienos,
  % akmenys ir skylės..)
  left
  left % Kitais atvejais robotas pasisuka atgal.
  if eneg<=E : start1
  goto what % Jeigu energija sumažėjus, patikriname,
kas atsitiko..
END
|