1. ROBOT WARFARE 1 - ŽAIDIMAS E-PAŠTU
1.1
ĮVADAS
1.2 ŽAIDĖJAI
1.3 ELEKTRONINIAI ADRESAI, KONFERENCIJA
1.4 E-PAŠTO NAUDOJIMAS
2. ŽAIDIMO TAISYKLĖS
2.1 KAIP, KADA, KUR VYKSTA ŽAIDIMAS
2.2 KĄ GALI ŽAIDIMO NUGALĖTOJAS
2.3 REZULTATŲ SKAIČIAVIMAS IR LAIMĖTOJO
PASKELBIMAS
2.4 ROBOTO TAPATYBĖS NUSTATYMAS
2.5 ROBOTO IŠTRYNIMAS
3. MŪŠIO TAISYKLĖS
3.1 MŪŠIO LAUKAS
3.2 ROBOTO ĮRANGA
3.3 JUDĖJIMAS IR ROBOTO KOORDITADĖS
3.4 ENERGIJA
3.5 SIENOS IR AKMENYS
3.6 GINKLŲ NAUDOJIMAS
3.7 AKIES NAUDOJIMAS
3.8 RADARO NAUDOJIMAS
4. "ROBOT
WARFARE 1" (RW1) PROGRAMAVIMO KALBA
4.1 RW1-TEKSTAS IR RW0-PSEUDOKODAS
4.2 ROBOTO PAVYZDYS
4.3 RW1-PROGRAMAVIMO KALBA
    1. ROBOT WARFARE 1 - ŽAIDIMAS ELEKTRONINIU PAŠTU
    1.1 ĮVADAS
      ROBOT WARFARE 1 yra žaidimas, kurį gali
žaisti visi. Jums tereikia perskaityti taisykles, aprašyti savo
roboto elgesį specialia RW programavimo kalba ir savo programą
išsiųsti e-paštu (rwar@shaos.ru). Nepamirškite SUBJECT laukelyje
įrašyti RW1 ir savo Nick'ą.. (Pvz.: RW1:Jonas).
    1.2 ŽAIDĖJAI
       Žaidėjas yra roboto autorius. Jis
naudoja savo nick'ą.. Jeigu jis nori atsiųsti savo naują robotą,
jis turi parašyti savo nick'ą laiško subject'e (pvz.: RW1:JONAS),
bet prieš tai jis turi tą savo nick'ą užregistruoti mūsų duomenų
bazėje. Norint užsiregistruoti, reikia išsiųsti e-žinutę ir subject'e
parašyti REG:NICKNAME (Pvz.: REG:JONAS). Šiame laiške žaidėjas
taip pat gali nurodyti savo amžių, profesiją, lytį ir bet kokią
kitą informaciją. Galit būti ramūs, niekas nesužinos šios asmeninės
informacijos be jūsų leidimo, tačiau ši informacija mums padės
išvengti nesusipratimų, jei kitas žaidėjas norės užsiregistruoti
tokį patį Nick'ą.
    1.3 ELEKTRONINIAI ADRESAI, KONFERENCIJA
       Jei žaidėjas nesutinka, kad jo e-pašto
adresas būtų paskelbtas viešai, jis būna žinomas tik mums. Jei
jūs norite parašyti tokiam žaidėjui, pasinaudokite rwar@shaos.ru
paslaugomis :) Siųskite žinutę adresu rwar@shaos.ru, o subject'e
parašykite MAIL:ŽAIDĖJO, kuriam norite parašyti NICK'AS (pvz.:
MAIL:JONAS). Laiškas tą žaidėją pasieks per 1 dieną.
       Jei norite užsisakyti RW konferenciją
lietuvių kalba, nusiųskite tuščią laišką adresu rware-subscribe@yahoogroups.com.
Jei nebenorite gauti laiškų, adresu rware-unsubscribe@yahoogroups.com
    1.4 E-PAŠTO NAUDOJIMAS
       Daug ką jūs galite parsisiųsti paprasčiausiai
e-paštu. Tam jums reikia siųsti laiškus rwar@shaos.ru,
o subject parašyti REQUEST:VIENAS
IŠ ŠIŲ ŽODŽIŲ:
          1) RULES
(Angliškos, rusiškos, lietuviškos taisyklės) (20K)
          2) RW1_COMP
- RW1 kompiliatorius (25K)
          3) RW1_DUEL
- kovų peržvalga (50K)
          4) RW1_SND
- soundblaster palaikymas RW1_DUEL'iui (19K)
          5) RESULTS
- visi rezultatai ir statistika (60-80K)
          6) ROBOT
"robotovardas" - bet kuris robotas iš paskutinių kovų
(0.1-4K) arba
              ROBOT SRC
- visus robotus, kurie turi source'us..
              ROBOT
A - robotai iš A kategorijos
              ROBOT
B - robotai iš B kategorijos
Įrašykite vieną iš šių punktų ir jūs gausite tai, ko norit.. :)
Pvz.: REQUEST:RW1_COMP - ir po kelių sekundžių jūs gaunate RW1
kompiliatorių.
   2. ŽAIDIMO TAISYKLĖS
   2.1 KAIP, KADA, KUR VYKSTA ŽAIDIMAS
       Kovos kiekvieną savaitę vyksta
mūsų serveryje. Rezultatai taip pat atnaujinami kas savaitę. Mūsų
WWW jūs rasite rezultatus, statistikas visa kita.
   2.2 KĄ GALI ŽAIDIMO NUGALĖTOJAS
       Geriausio roboto autorius gali į
mūsų WWW patalpinti savo nuotrauką (iki 16KB) ir trumpuką komentarą.
   2.3 REZULTATŲ SKAIČIAVIMAS IR LAIMĖTOJO PASKELBIMAS
       Visi robotai suskirstyti į kelias
kategorijas. Pati aukščiausi yra A kategorija. Kiekvienoje kategorijoje
yra po 16 robotų, išskyrus žemiausią kategoriją, kur gali būti
nuo 5 iki 20 robotų. Kovos vyksta tarp dviejų tos pačios kategorijos
robotų. Kiekviena kova trunka 10000 tik'ų. Robotas laimi, jei
jis lieka gyvas ir užmuša priešą. Po kiekvienos kovos, laimėtojas
gauna 1, o pralaimėtojas 0 taškų. Taip gaunami trys blogiausi
ir trys geriausi kategorijos robotai.. Blogiausieji pereina į
žemesnę kategoriją (jei robotas jau ir taip buvo žemiausioje kategorijoje,
jis iškrenta), o geriausieji pereina į aukštesnę kategoriją (jei
robotas ir taip buvo aukščiausioje kategorijoje, jis laikomas
nugalėtoju).
   2.4 ROBOTO TAPATYBĖS NUSTATYMAS
       Jūs turite išsirinkti:
          Unikalų savo roboto
vardą
          Roboto spalvą (RGB)
          Maža paveiksliuką
(8x8 - 16 colors). Paveiksliukas nebūtinas.
   2.5 ROBOTO IŠTRYNIMAS
       Robotas gali būti ištrintas trimis
atvejais:
          - roboto autorius
ne pats pasidarė robotą, o jį nuplagijavo ir buvo sučiuptas.
          - robotas buvo žemiausioje
kategorijoje ir surinko mažiausiai taškų.
          - žaidėjas pats norėjo
ištrinti savo robotą. Šiuo atveju jis turi išsiųsti laišką rwar@shaos.ru
su subject'u "DEL:ROBOTOVARDAS" (ROBOTOVARDAS, tai žaidėjo roboto
vardas. Pvz.: DEL:BANZAI) Atkreipkite dėmesį į tai, kad laiškas
turi būti išsiųstas iš to pačio e-pašto adreso, kuriuo žaidėjas
užsiregistravo ir atsiuntė savo robotą. Be to, jei robotas yra
A kategorijoje, jo ištrinti negalima!!!
   3. MŪŠIO
TAISYKLĖS
   3.1 MŪŠIO LAUKAS
       Kova vyksta 10x20 lauke. Aplinkui
yra sienos. Akmenys išmėtomi atsitiktinai (random). Robotas negali
jų pervažiuoti, bet gali juos susprogdinti. Kovos lauke yra šie
objektai:
0 - Nieko
1 - Duobė
2 - Akmuo
3 - Dėžė su amunicija
4 - Atominė elektrinė
5 - Skriejanti raketa
6 - Robotas
10- Siena
       Žaidimo
pradžioje robotai atsiranda bet kurioje mūšio lauko vietoje. Kaip
atrodo mūšio laukas nustatoma pagal realųjį skaičių iš intervalo
nuo 0 iki 1.
       Robotas gali judėti į aplink jį
esančias celes keturiomis kryptimis: į priekį, kairėn, dešinėn,
atgal. Robotas, kuris įkrenta į duobę, laikomas nugalėtu. Robotas
gali rinkti dėžes su raketomis. Kiekvienoje dėžėje yra po 10 raketų.
Pačioje žaidimo pradžioje robotai turi tik po 5 raketas, bet jų
galima prisirinkti, kiek nori.
   3.2 ROBOTO ĮRANGA
       Robotas turi keturias vietas (priekis,
nugara ir šonai) įrengimams :) Kiekvienoje iš šių vietų gali būti
ginklas, akis arba nieko. (Pvz.: robotas su trimis akimis ir vienu
ginklu).
   3.3 JUDĖJIMAS IR ROBOTO KOORDITADĖS
       Robotas gali judėti tik tiesiomis
linijomis sukiodamasis kairėn arba dešinėn. Robotas gali atsitrenkti
į akmenis arba sienas. Dėl to jo energija nesumažėja (svarbiausia
neįkristi į duobę! :)). Kiekvienas veiksmas trunka vieną laiko
dalelytę (1 iš 10000).
       Roboto koordinatės reliatyvios.
Robotas visada yra koordinačių pradžios taškas, t.y. jo koordinatės
(0,0). Išilgai roboto eina ordinatė (Y), o skersai abscisė (X).
   3.4 ENERGIJA
       Žaidimo pradžioje abiejų robotų
energija būna lygi 5. Aukščiausias energijos lygis gali būti 13.
Jeigu į robotą pataiko raketa, jo energija sumažėja 1. Robotas
gali užsikrauti energijos, priartėdamas prie atominės elektrinės.
Jei robotas stovi prie atominės elektrinės, jo energijos lygis
kas 5 laiko dalis padidėja 1'etu. Jeigu atsitinka taip, kad robotas
atsiduria iš kart prie (tarp) dviejų elektrinių, jo energijos
lygis kas 5 laiko dalis padidėja net 2.
   3.5 SIENOS IR AKMENYS
       Robotai negali kirsti mūšio lauką
supančių sienų. Nieko neatsitinka ir tada, kai robotas šauna į
sieną. Robotai negali pravažiuoti per akmenis, bet šiuos galima
sunaikinti, šaunant 5 kartus.
   3.6 GINKLŲ NAUDOJIMAS
       Robotas gali šauti bet kuria kryptimi
(žinoma, jei jis toje pusėje turi ginklą!). Raketos greitis yra
5 celės per 1 laiko dalį. Raketa skrenda tol, kol atsitrenkia
į kokią nors kliūtį. Jeigu raketa pataiko į raketų dėžę, ši sprogsta
ir viską sunaikina ją supančiame 3x3 celių plote. Jeigu šioje
zonoje būna robotas, jo energijos lygis sumažėja 3. Tas pats atsitinka
ir tada, kai raketa pataiko į atominę elektrinę, tik pavojingasis
plotas yra 5x5, o šiame plote atsidūrusio roboto energija nukenčia
net 5.
   3.7 AKIES NAUDOJIMAS
       Kad robotas galėtų matyti, jam reikalingos
akys (akis). Kiekviena iš jų suteikia šią informaciją:
- objekto,
kurį pamatė akis, tipas (siena, dėžė, priešas ir t.t.)
- atstumas iki to objekto (jeigu objektas yra jau kitoje celėje
D=1)
- papildoma informacija:
-- kai matomas kitas robotas - jo energijos lygis (1..13)
-- kai matomas akmuo - jo "kietumas" (1..5)
-- kai matoma raketa - jos kryptis (1 - raketa juda link roboto,
0 - raketa juda tolyn)
   3.8 RADARO
NAUDOJIMAS
       Naudojant radarą, mažėja jūsų roboto
energijos lygis. 1 panaudojimas "suvalgo" 1 dalį roboto energijos.
Naudojant radarą, jums reikia nurodyti objekto, kurio ieškote
tipą, o radaras jums pasakys reliatyvias artimiausio jūsų ieškomo
objekto koordinates.
   4. "ROBOT
WARFARE 1" (RW1) PROGRAMAVIMO KALBA
   4.1 RW1 - TEKSTINIS IR RW0 - KODUOTAS
       Roboto programos tekstas yra surašytas
į failą su .rw1 praplėtimu. Sukompiliuota programa įgyja .rw0
praplėtimą. Failai su .rw0 praplėtimu yra ne perskaitomi, kai
tuo tarpu .rw1 gali būti perskaityti kaip eilinis programos tekstas.
   4.2 ROBOT SAMPLE
%============WINSIMPLE.RW1==================
%Paprasčiausio roboto pavyzdys
%Su viena akim ir ginklu
%Paleidimas: RW1_DUEL.EXE WINSIMPLE.RW1 ROBOT
"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ūrėti į priekį
IF N!=6 : L1 %Jei nesimato roboto eiti į nuorodą "L1"
RIGHT % Jei visgi robotą mato, pasisukti į dešinę
ACT LEFT %Šauti
LEFT %Pasisukti į kairę
GOTO START %Eiti į nuorodą "START" - pradžia
L1: %Nuoroda "L1"(label)
IF N!=3 : L2 %Jei priekyje nesimato dėžės su raketom,
%eiti į nuorodą "L2"
STEP %Kitu atveju žingsnis į priekį
GOTO START
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,
%eiti į "L3"
STEP %Kitu atveju žengti į priekį
GOTO START
L3:
RIGHT
GOTO START
END %Programos pabaigos ženklas
    4.3 RW1
- KALBA
      Pastaba:
Patariama turėti nors kiek patirties programavime (tiks bet kokia
kalba), prieš bandant naudoti šia kalbą. Žiūrėkit roboto pavyzdį
"WinSimple.rw1" prieš tai buvusiame skyriuje. Komentarai: Komentarai
programoje turi būti pažymėti simboliu "%" (taip pat kaip ";"
Asembleryje arba "//" C++). Kiekviena komanda užtrunka 1 "tik'a".
Programa prasideda komanda ROBOT ir roboto vardu kabutėse. Programa
užbaigiama komanda END. Roboto spalva nustatoma komandos COLOR
pagalba. PVZ.:
COLOR
FF0000 % Raudona
COLOR 00FF00 % Žalia
COLOR 0000FF % Mėlyna
COLOR FFFFFF % Balta
COLOR C0C0C0 % Šviesiai pilka ir t.t.
       Paveiksliukas
esantis ant roboto yra saugomas aštuoniose komandos IMAGE eilutėse,
kiekvienas skaitmuo - nuoroda i pikselį:
IMAGE 0 0 0 0 0 0 0 0
% Pirmoji eilutė: 8 juodi pikseliai
IMAGE 0 0 0 0 0 0 0 0 % Antroji eilutė...
IMAGE 0 0 1 1 1 1 0 0 .....
IMAGE 0 0 1 A B 0 0 0
IMAGE 0 0 0 0 0 0 0 0 % Aštuntoji eilutė.
|
Spalvos:
|
| 0 - JUODA |
8 - TAMSIAI
PILKA |
| 1 - MĖLYNA |
9 - ŠVIESIAI
MĖLYNA |
| 2 - ŽALIA |
A - ŠVIESIAI
ŽALIA |
| 3 - ŽYDRA |
B - ŠVIESIAI
ŽYDRA |
| 4 - RAUDONA |
C - ŠVIESIAI
RAUDONA |
| 5 - VIOLETINĖ |
D - ŠVIESIAI
VIOLETINĖ |
| 6 - RUDA |
E - GELTONA |
| 7 - ŠVIESIAI
PILKA |
F - BALTA |
       Roboto
įrenginių nustatymui reikės naudoti šias komandas: FRONT, BACK,
LEFT, RIGHT ir priedą GUN arba EYE. Pavyzdžiui, jei jūs norite,
kad jūsų robotas turėtų keturis ginklus (iš visų pusių), jums
reiktų parašyti:
FRONT GUN
BACK GUN
LEFT GUN
RIGHT GUN
       Jei
norite roboto su ginklu priekyje ir ginklu nugaroje, parašykite:
                FRONT
GUN
                BACK
EYE
       Roboto konfigūracija (spalva, paveikslėlis
ir įrenginiai) turi būti aprašyti tarp pirmosios komandos ROBOT
ir pirmosios nuorodos START.
       Nuoroda yra žodis ir dvitaškis po
jo.
       Pirmoji nuoroda turi būti:
                START:
      Pastaba:
Negalima rašyti jokių komandų išskyrus komentarus toje pačioje
eilutėje, kur jau yra nuoroda. Nuoroda - ne komanda, todėl ji
nėra vykdoma ir neužima laiko.
Jei jūs norite naudoti masyvus, jums reiks juos aprašyti po nuorodos
START, kaip pvz.:
                DEF
vardas[k] %Kur k yra skaičius nuo 1 iki 10000
       Pastaba:
Visu masyvų skaičius ir ilgis negali būti didesnis nei 10000.
Kintamieji atsiranda nuo tada kai jie būna pirma syki panaudoti.
Kintamųjų reikšmė gali būti nuo -32768 iki 32767.
       Visi masyvai, kintamieji ir nuorodos
turi turėti unikalius pavadinimus. Komandos, registrų vardai negali
būti jų vardais.
Roboto
registrai (jie yra tik skaitymui (read only)):
X,Y
- reliatyvios objekto koordinatės
D - atstumas, distancija
N - objekto tipas (žiūr. 3.1)
K - extra registras
R - atsitiktinis skaičius
0..999
T - "ticks" skaitiklio reikšmė
E - jūsų roboto energijos
lygis
M - raketų skaičius, kurias
turi jūsų robotas.
RW1 kalbos komandos:
GOTO nuoroda %eiti į nuoroda,
kurios pavadinimas "nuoroda"
CALL nuoroda %iškvieti procedūrą,
iš nuorodos "nuoroda"
RET %Grįžti iš procedūros
STEP %Žengti žingsnį, į ta
pusę į kurią robotas atsisukęs
RIGHT %Pasisukti į dešinę
LEFT %Pasisukti į kairę
SAY "žodis" %Robotas pasako "žodis"
(bus parodyta terminale)
PRINT n %robotas išmeta kintamojo
arba masyvo reikšmę į terminalą
ACT n %Panauduoti kokį nors
roboto įrenginį (akį arba ginklą)
%nurodoma tik roboto pusė, (ty RIGHT, LEFT ir tt)
%( 0- priekis, 1- dešinė, 2- nugara, 3- kairė arba
%tiesiog FRONT, RIGHT, BACK and LEFT),
%akis perduoda informaciją i registrus:
%D - atstumas/distancija iki objekto
%N - Objekto tipas (žiūr. 3.1),
%K - kito roboto energijos lygis, jei jis matomas
SPY %Gauti informacijos apie
paskutinę paleistą raketą
%Jei raketa pataikė į ką nors, komanda persiunčia
%objekto koordinates į X ir Y registrus
%N registrą - objekto tipas (žiūr. 3.1),
%0 - jei raketa skrenda, %1 - jei raketų nebuvo paleista.
RADAR n %galima naudoti radarą
objektų N =0...6 suradimui
%koordinatės bus persiustos i X ir Y registrus
%jei X ir Y lygūs nuliui - objektas nerastas.
%K - kvadrantas (0,1,2,3)
%n gali būti kintamasis, masyvo elementas
%M,K gali būti numeris, kintamasis, masyvo elementas arba registras.
IF k>m : aaa % jei k yra didesnis nei m tada eiti į nuorodą
aaa
IF k<m : aaa % jei k yra mažesnis nei m tada eiti į nuorodą
aaa
IF k<=m : aaa % jei k yra mažesnis arba lygus m tada eiti į nuorodą
aaa
IF k>=m : aaa % jei k yra didesnis arba lygus m tada eiti į nuorodą
aaa
IF k==m : aaa % jei k lygus m tada eiti į nuorodą aaa
IF k=m : aaa % jei k lygus m tada eiti į nuorodą aaa
IF k!=m : aaa % jei k ne lygus m tada eiti į nuorodą aaa
IF k<>m : aaa % jei k ne lygus m tada eiti į nuorodą aaa
n=m % kintamajam n suteikti m reikšmę
n=-m % kintamajam n suteikti neigiamą m reikšmę
n=m+k % sudėtis
n=m-k % atimtis
n=m/k % dalyba. n bus sveikas skaičius
n=m*k % daugyba
n=m%k % m priklausomybė nuo k
    Jei jūs neteisingai naudosite komandas CALL ir
RET, robotas gali "pakibti", tai reiškia - jūsų robotas miręs.
|