Magazyn Enter, październik 1994, strona 130

Adam Ryba

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