ESDE
III miejsce w II Mistrzostwach Polski w Wojnach Rdzeniowych zajął program ESDE, napisany prez Sebastiana Deorowicza z Tarnowskich Gór. ESDE, podobnie jak poprzednio przedstawieni laureaci, jest skanerem, a zatem głównym jego zajęciem jest poszukiwanie przeciwnika. Na tym jednak podobieństwo się kończy. Posłuchajmy więc, jak opisuje swojego zawodnika autor:
Wojownik ESDE stosuje kilka różnych technik walki. Na początku próbuje on zlokalizować przeciwnika.
W tym celu przegląda dwukrotnie arenę, najpierw co 40, a później co 17 komórek.
Przed przystąpieniem do drugiego sprawdzania ESDE uruchamia
niezależny proces w linii obrona1
. Proces ten służy jako
zabezpieczenie przed miotaczami bomb, które ostrzeliwują arenę na ogół
co kilka komórek. Tak więc nawet jeśli główny proces zostanie
uszkodzony, to i tak jest duża szansa, że ESDE nie zginie.
Jeżeli wojownik zlokalizuje przeciwnika, przechodzi do procedury
atak
, gdzie sprawdza, z której strony przeciwnik został
zlokalizowany, po czym wyznacza odpowiednie adresy, a następnie w linii
atak1
wstrzeliwuje do ciała rywala rozkaz skoku
JMP
do linii kasuj
.
Dodatkowo ostrzeliwuje przeciwnika instrukcjami JMP -3
,
które mają na celu skierować nieprzyjacielski proces do instrukcji skoku
JMP
.
Po ostrzelaniu rywala ESDE uruchamia proces
obrona1
, którego znaczenie już opisałem.
Schwytany przeciwnik zostaje uwięziony w procedurze
kasuj
, w której ostrzeliwuje całą arenę komórka po komórce,
niszcząc w ten sposób inne swoje procesy.
Jednocześnie złapany proces cały czas rozmnaża się (instrukcja
SPL kasuj
) spowalniając tym samym pozostałe procesy z nim
sprzymierzone, działające na arenie.
Po ostrzelaniu całego rdzenia uwięziony proces trafi we własny kod, popełniając samobójstwo. W ten sposób zostaną zniszczone wszystkie procesy przeciwnika.
Wracając teraz do głównego kodu wojownika ESDE, po
dwukrotnym sprawdzeniu areny przechodzi on do procedury
kasuj
, w której w zależności od tego, czy przeciwnik został
złapany, czy nie, albo sam ostrzeliwuje arenę, albo przyspiesza
ostrzeliwania areny przez przeciwnika. Po ostrzelaniu rdzenia procesy
kasuj
również popełniają samobójstwo i zostają tylko
procesy obrona1
, które (w najgorszym przypadku) czekają na
remisowe zakończenie walki.
Sebastian opisał nam strategię swojego wojownika bardzo dokładnie, nie powinniśmy więc mieć większych problemów z „rozgryzieniem” kodu programu.
Zachęcam do przeanalizowania pozostałych uczestników tegorocznego turnieju.
Na pewno pomoże to wytrenować nowych wojowników, którzy w przyszłym roku weteranom areny nie dadzą najmniejszych szans.
; Esde
; Sebastian Deorowicz
; Tarnowskie Góry, 1994
plus DAT -80 80
plus0 DAT -33 33
dodac DAT 54 26
minus DAT -5 5
cel0 CMP $20 $20
cel1 DAT $0 $0
adres JMP 0 0
wskok JMP -3
start ADD plus dalej
dalej CMP $20 $20
JMP atak
miara DJN start #61
MOV plus0 plus
MOV cel0 dalej
MOV #148 miara
SPL obrona1
DJN start #2
JMP obrona
atak MOV dalej ce11
ADD minus cel1
CMP @cel <cel1
JMP atak1
SUB dalej cel1
SUB dalej cel1
ADD dodac cel1
atak1 ADD cel1 adres
SUB minus cel1
MOV adres @cel1
atak2 ADD #3 cel1
MOV wskok @cel1
DJN atak2 #16
MOV #16 $-1
SUB adres adres
DJN miara #1
SPL obrona1
JMP miara
obrona SPL kasuj
obrona1 JMP 0 0
DAT 0 4950
kasuj MOV $3 <-1
SPL kasuj
JMP kasuj
END start