Pluton
Jak już informowałem, trzecie miejsce w I Mistrzostwach Polski w Wojnach Rdzeniowych zdobył młody wojownik z Turka, Pan Robert Grzymowicz. Pluton Roberta był jednym z najciekawiej skonstruowanych programów. Oddajmy głos autorowi:
Program ostrzeliwuje arenę zadaną liczbą bomb. Potem kopiuje w nowe miejsce swego współtowarzysza i uruchamia go jako proces równoległy. Czynności te Pluton powtarza w nieskoczoność. Oto jego opis:
skąd DAT #0
start MOV #160 dokąd
MOV #5 cel
skok3 MOV #14 skąd
MOV #20 ileb
Ustalenie wartości początkowych zmiennych programu. Zmienna
ileb
oznacza liczbę bomb do wystrzelenia.
skok1 MOV bomba @cel
ADD #7 cel
ileb DJN skok1 #0
Powyższy fragment jest właściwą pętlą, w której następuje atak poprzez ostrzał areny co 7 komórek.
skok2 MOV @skąd <dokąd
DJN skok2 skąd
dokąd SPL @dokąd
Tutaj Pluton stworzył i uruchomił nowego wojownika. Nowy
wojownik to tylko 14 instrukcji, począwszy od etykiety
start
(jest to regulowane przez wartość wpisywaną do
zmiennej skąd
). Dlaczego tylko 14 instrukcji, wyjaśnię za
chwilę.
ADD dokąd dokąd
ADD dokąd cel
ADD dokąd dokąd
Powyższe trzy rozkazy zajmują się takim wyliczeniem nowych adresów rzucenia bomb i umieszcenia kolejnego potomka, by nie kolidowały one ze strefami wpływów wcześniej uruchomionych wojowników.
JMZ skok3 skąd
bomba DAT 0 0
Przy poprawnym działaniu programu wartość zmiennej skąd
w powyższym fragmencie zawsze powinna wynosić zero. Instrukcja
JMZ
specjalnie została umieszczona na początku programu
jako czujnik kontrolujący, czy wojownik nie jest atakowany przez
przeciwnika, np. Skoczka. Jeżeli zmienna skąd
jest
różna od zera, wojownika natychmiast popełnia samobójstwo, aby nie
spowalniać działań swych współtowarzyszy.
MOV #-6 cel
skok4 MOV bomba <cel
MOV sznur <cel
JMP skok4 <cel
sznur SPL 0
cel DAT 0
Powyższa część występuje tylko w przypadku pierwszego wojownika, umieszczonego na arenie przez sędziego i nie jest kopiowana do potomków. Jej zadaniem jest ochrona przed przeciwnikiem uderzającym od tyłu. Ochrona polega na intensywnym ostrzale areny sznurami i bombami. Powoduje to zniszczenie własnego kodu umieszczonego przed tą częścią i ewentualnego intruza, który może się tam znajdować. Oczywiście ta częśc programu może być uruchomiona tylko przez przeciwnika.