Demokratie-Spiel

Passend zu den derzeitigen Präsidentschafts-(Vor-)Wahlen in den USA ein Spiel, das Peter Donelly vom University College of Swansea in Wales und Domenic Welsh von der Oxford University schon in den 80er Jahren des letzten Jahrhunderts untersucht hatten. Populär wurde es dann durch eine Veröffentlichung von Alexander K. Dewdney in der Scientific American und in der deutschen Schwesterzeitschrift Spektrum der Wissenschaft. Er nannte das Spiel »WAEHLER«:

image

In diesem Spiel werden die Felder eines rechteckigen Feldes (hier 10 x 10 Felder) zuerst wahllos mit den Symbolen der Republikaner (Elephant) oder der Demokraten (Esel) besetzt. Das widerspiegelt die politische Einstellung der »Einwohner« dieses »Planeten«. Bei jedem Spielzug wird nun ein Einwohner in seiner politischen Meinung schwankend und nimmt die Einstellung eines seiner zufällig herausgegriffenen Nachbarn an.

Als Nachbarschaft gilt hier die Moore-Nachbarschaft, also alle 8 Nachbarfelder. Die Randbedingungen sind periodisch, d.h. jeder Spieler auf einem Randfeld hat »Nachbarn« auf der gegenüberliegenden Seite, die Spieler in den Eckfeldern sogar auf beiden gegenüberliegenden Seiten. Unser Spielfeld nimmt daher die Form eines Reifens oder eines Torus an, wie auch im Spiel WATOR.

Nun passiert Folgendes: Aus der anfänglich wüsten Verteilung bilden sich im Laufe des Spiels feste Inseln einer Meinung heraus. Und im Endeffekt gewinnt eine Partei die alleinige Herrschaft. Das geschieht manchmal sehr schnell, manchmal dauert es länger, weil sich einige Inseln des Widerstands hartnäckig halten, aber das Endergebnis ist immer gleich: Der Planet wird entweder komplett von Eseln oder komplett von Elephanten regiert. Ob das der Sinn einer Demokratie ist?

Das Spiel ist verwandt mit dem Selektions-Spiel, das Ruthild Winkler und Manfred Eigen schon 1975 in ihrem Buch Das Spiel vorgestellt hatten. Auch wenn die Regeln leicht abgewandelt sind, das Ergebnis ist stets das gleiche. Es überlebt immer nur eine Partei. Das ändert sich übrigens auch nicht, wenn man das Feld mit mehr als zwei Parteien beim Start füllt. Also ist nicht das amerikanische Wahlsystem die Ursache des Übels.

Der Code

Der Processing-Code ist straight forward. Lediglich die Behandlung der Randbedingungen ist allgemeiner gehalten, als unbedingt nötig. Damit sind bei Abwandlungen auch andere Nachbarschaften als die Moore-Umgebung möglich.

int rep = 0;
int dem = 1;

int rows = 10;
int cols = 10;

int neighboorhood [][] = new int[rows][cols];
int neighboorX;
int neighboorY;

int x, y;
int w = 34;
int h = 34;

PImage republikaner;
PImage demokraten;

void setup() {
  republikaner = loadImage("rep.png");
  demokraten   = loadImage("dem.png");
  size(340, 340);
  for (int i = 0; i < rows; i++) {
    y = 0;
    for (int j = 0; j < cols; j++) {
      int rand = round(random(1));
      if (rand == rep) {
        neighboorhood[i][j] = rep;
        image(republikaner, x*w, y*h, w, h);
      }
      else {
        neighboorhood[i][j] = dem;
        image(demokraten, x*w, y*h, w, h);
      }
      y += 1;
    }
    x += 1;
  }
}

void draw() {
  int actorX = round(random(rows - 1));
  int actorY = round(random(cols - 1));
  switch(round(random(7))) {
    case 0:
      neighboorX = actorX;
      neighboorY = (actorY - 1);
      break;
    case 1:
      neighboorX = (actorX + 1);
      neighboorY = (actorY - 1);
      break;
    case 2:
      neighboorX = (actorX + 1);
      neighboorY = actorY;
      break;
    case 3:
      neighboorX = (actorX + 1);
      neighboorY = (actorY + 1);
      break;
    case 4:
      neighboorX = actorX;
      neighboorY = (actorY + 1);
      break;
    case 5:
      neighboorX = (actorX - 1);
      neighboorY = (actorY + 1);
      break;
    case 6:
      neighboorX = (actorX - 1);
      neighboorY = actorY;
      break;
    case 7:
      neighboorX = (actorX - 1);
      neighboorY = (actorY - 1);
      break;
  }
  if (neighboorX < 0) {neighboorX = rows + neighboorX;}
  neighboorX = neighboorX % rows;
  if (neighboorY < 0) {neighboorY = cols + neighboorY;}
  neighboorY = neighboorY % cols;
  if (neighboorhood[neighboorX][neighboorY] == dem) {
    neighboorhood[actorX][actorY] = dem;
    image(demokraten, actorX*w, actorY*h, w, h);
  }
  else {
    neighboorhood[actorX][actorY] = rep;
    image(republikaner, actorX*w, actorY*h, w, h);
  }
}

Wer das Spiel selber nachprogrammieren möchte, hier gibt es auch noch die beiden Icons für die Republikaner (Elephant) und Demokraten (Esel):

image image

Literatur

  • A.K. Dewdney: Wie man π erschießt. Fünf leichte Stücke für WHILE-Schleifen und Zufallsgenerator, oder: lebensechte Simulationen von Zombies, Wählern und Warteschlangen, in: Immo Diener (Hg.): Computer-Kurzweil, Heidelberg (Spektrum der Wissenschaft, Reihe: Verständliche Forschung) 1988
  • Manfred Eigen, Ruthild Winkler: Das Spiel. Naturgesetze steuern den Zufall, München (Piper), 1975 (unveränderte Taschenbuchausgabe 1985)



Sie sind hier: StartProgrammierungCreative CodingProcessing → demokratiespiel.txt


Suche

Werkzeuge