Gra w życie - implementacja w StarLogo

Uwaga!

Po zajeciach przy jednym z komputerów znaleziono pamięć przenośną (pendrive).
Po zgubę można się zgłosić na zajęciach za tydzień.

Automaty komórkowe:

Automaty komórkowe - wikipedia

Gra w życie:

Gra w życie - wikipedia

Kod programu Gra w życie w Starlogo:

; Gra w zycie

; Stan biezacy kazdego pola przechowujemy w kolorze
; kolor czarny - pole martwe, inny - pole zywe
; Stan w kroku kolejnym przechowujemy w zmiennej alive-next
; wartosc 0 - pole zywe, wartosc 1 - pole martwe

; definicja zmiennej alive-next dla kazdego pola
patches-own [ alive-next ]

; metoda czyszczaca plansze
to setup
 ca
end

; kroki gry
to go
  next-step     ; wyznacz kolejny stan
  color-patches ; pokoloruj pola zgodnie z wyznaczonym powyzej stanem
end

to next-step
  ask-patches [      ; wykonuj polecenia na wszystkich polach
    let [:licznik 0] ; definicja zmiennej lokalnej licznik

    ; sprawdz stany (kolory) wszystkich 8 sasiadow
    ; jesli zywy (nie czarny) zwieksz licznik o jeden

    if (pc-at -1 -1) != black [set :licznik :licznik + 1]
    if (pc-at -1  0) != black [set :licznik :licznik + 1]
    if (pc-at -1  1) != black [set :licznik :licznik + 1]
    if (pc-at  0 -1) != black [set :licznik :licznik + 1]
    if (pc-at  0  1) != black [set :licznik :licznik + 1]
    if (pc-at  1 -1) != black [set :licznik :licznik + 1]
    if (pc-at  1  0) != black [set :licznik :licznik + 1]
    if (pc-at  1  1) != black [set :licznik :licznik + 1]

    ; Regula Zycia
    ; Jesli komorka jest martwa (czarna)
    ;   i ma dokladnie 3 zywych sasiadow
    ;      to staje sie zywa
    ;      w przeciwnym razie pozostaje martwa 
    if pc = black
        [ ifelse :licznik = 3 
             [set alive-next 1]  
             [set alive-next 0] ]

    ; Regula Smierci
    ; Jesli komorka jest zywa (nie czarna)
    ;   i ma 2 lub 3 zywych sasiadow
    ;      to pozostaje zywa
    ;      w przeciwnym razie umiera
    if pc != black
        [ ifelse (:licznik = 2) or (:licznik = 3)
             [set alive-next 1]
             [set alive-next 0] ]
  ]
end

to color-patches
  ask-patches [ ; wykonuj polecenia na wszystkich polach

    ; jesli komorka ma byc martwa
    ;   pokoloruj ja na czarno
    ;   w przeciwnym razie na czerwono
    ifelse alive-next = 0
      [ setpc black ]
      [ setpc red   ]
  ]
end

Plik programu StarLogo do ściągnięcia tutaj.

© A. Czoska, M. Komosiński, B. Kroll, A. Kupś, A. Mensfelt, B. Szopka