[PYTHON] Zura machte wie ein Lebensspiel

Was ist ein Lebensspiel?

Video *** Von youtube ausgeliehen ***

Ist es so Ist es ein bisschen anders als das eigentliche Lebensspiel? Es scheint, dass es auch ein Invasionsspiel genannt wird.

[Wikipedia Life Game](https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B2%E3%83%BC%E3 % 83% A0) Klicken Sie hier für die eigentliche Definition. Vielleicht unterscheidet sich das, was ich machen möchte, von Lebensspielen.

Lass es uns machen

Normalerweise schreibe ich Python, also habe ich auch dieses Mal Python übernommen Python ist einfach (^ q ^)

Klicken Sie hier für den Code Wir haben den Betrieb mit Ubuntu 14.04 + Python 3.5 bestätigt.

Ein kleiner Kommentar

Python ist funktional und einfach zu schreiben, also für und wenn Anweisungen reduziert werden können und es wirklich einfach zu schreiben ist Zuerst dachte ich, ich würde es objektorientiert schreiben, Es schien ziemlich cool, nur die Listeneinschlussnotation und die Funktion zu kombinieren Diesmal habe ich keinen Unterricht gemacht.

main.py


def next_state(f, i, j):
  s = f[i][j]
  e = environment(f, i, j)
  if all(map(lambda x: x == s, e)):
    return s
  else:
    num_friend = len(list(filter(lambda x: x == s, e)))
    num_enemy = len(list(filter(lambda x: x != s, e)))
    prob = 50 + (num_friend - num_enemy) * 6
    alive = random.randint(0, 100) < prob
    if alive:
      return FRIEND if s == FRIEND else ENEMY
    else:
      return ENEMY if s == FRIEND else FRIEND

Klicken Sie hier für die Hauptlogik Die aktuelle Umgebung für 8 Zellen um eine Zelle wird erfasst und der Zustand des nächsten Schritts bestimmt. Je mehr Verbündete um dich herum sind, desto leichter ist es zu überleben und je mehr Feinde du hast, desto leichter ist es zu sterben. Benutze Lambda und werde es los (^ q ^)

Ausgabe in Bild

Schließlich wird der Kampf als GIF-Video ausgegeben.

main.py


def output_field(f, step):
  f = list(filter(lambda x: not all(list(map(lambda e: e == '*', x))) , f))
  f = list(map(lambda x: list(filter(lambda e: e != '*', x)), f))
  f = list(map(lambda x: list(map(object2color ,x)) ,f))
  arr = np.array(f, dtype=np.int8)
  image = Image.fromarray(arr.astype('uint8'))
  image.save('./tmp/' + '%07d.png' % step) 

Dieser Code konvertiert ein zweidimensionales Array in RGB-Werte und gibt es an das Verzeichnis tmp aus. Schließlich wird es von ImageMagick in GIF konvertiert und in das Ausgabeverzeichnis ausgegeben. Da es sich um ein zweidimensionales Array handelt, wird das Lambda dupliziert. Wenn es Lambda gibt, ist es einfach (^ q ^)

Ich habe versucht zu spielen

movie.gif Oh, es fühlt sich gut an. Wenn Sie keine Parameter entwickeln, konvergiert diese in einem bestimmten Zustand. Es kann interessant sein, eine Kommandantenzelle zu erstellen und die Gewinnrate der umgebenden Masse zu korrigieren. Es ist eine originelle Implementierung, die sich ein wenig von den Regeln von Wikipedia unterscheidet. Es ist also vielleicht kein Lebensspiel, aber ich persönlich bin zufrieden.

Impressionen

Ich habe in letzter Zeit mit Lisp gespielt, was die Verwendung von Lambda vereinfacht (oder mehr, ich versuche es zu verwenden). Wenn es Lambda gibt, ist es einfach (^ q ^)

Recommended Posts

Zura machte wie ein Lebensspiel
Ich habe ein Lebensspiel mit Numpy gemacht
〇✕ Ich habe ein Spiel gemacht
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Lass uns ein Squashspiel machen
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe mit Ren’py ein Einführungsspiel für das Schulfest gemacht
Ich habe mit Sense HAT ein gefallenes Monospiel gemacht
Mach ein Spiel im Tetris-Stil!
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Erstellen Sie ein Lebensspiel, das manuell mit tkinter aktualisiert wird
Ich habe ein Numer0n-Kampfspiel in Java gemacht (ich habe auch KI gemacht)
Ich habe einen Python-Text gemacht
Befehl für FizzBuzz erstellt
Ich habe einen Zwietrachtbot gemacht
Lebensspiel mit Python [ich habe es geschafft] (auf Terminal & Tkinter)
Ich habe ein Spiel namens Battle Ship mit Pygame und Tkinter gemacht
Erstelltes WebSocket Client / Server-CLI-Tool (wie WebSocket Version Netcat)
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
Ich habe eine Webanwendung erstellt, die das auf Google Home aufgezeichnete Lebensprotokoll wie ein Gantt-Diagramm grafisch darstellt.