Skip to content

A small virus simulation in game-of-life style.

Notifications You must be signed in to change notification settings

mbbl33/GameOfCorona

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Game of Corona

Eine kleine Virus-Simulation im Game-of-Life-Stil.

Hinweis:

Bei dem Projekt handelt es sich um mein erstes "größeres" Programmierprojekt, welches ich in meinem zweiten Semester im Rahmen der Veranstaltung "Programmieren interaktiver Systeme" an der THM umgesetzt habe.

Aus der Aufgabenstellung entnommen: "Thematisch ist die Aufgabe, eine Animation, eine Simulation oder ein Spiel umzusetzen. Die Anwendung muss interaktiv sein (Beispiel: Spiel) bzw. interaktiv parametrisierbar sein (Beispiel: Animation, Simulation). Ziel ist es zu zeigen, dass Sie eine eigenständig gewählte Aufgabe alleine und selbstständig gemäß den in der Veranstaltung vermittelten Inhalte umsetzen können und die durch die Bewertungskriterien erfassten Kompetenzen erworben haben."

Für die volle Punktzahl wurden die Lines-of-Code auf 480 Zeilen beschränkt.

Kurzbschreibung:


„Game of Corona“ ist eine Abwandlung des Klassikers „Game of Life“. Der User kann einzelne Zellen „infizieren“ und benachbarte Zellen können sich anders als beim Original „Game of Life“ anhand eines Zufallswertes anstecken. Zellen mit Maske können eine geringere Ansteckungswahrscheinlichkeit haben. Die Zellen können nach einer Infektion sterben oder immun werden. Der User soll die Simulation beeinflussen können, indem er Zellen infiziert, impft, Masken tragen lässt oder tötet. Darüber hinaus kann über verschiedene Parameter festgelegt werden wie schnell die Simulation ist, wie hoch Infektionswahrscheinlichkeit von Zellen mit erkranktem Nachbarn ist, wie effektiv eine getragene Maske vor einer Erkrankung schützt, wie tödlich diese ist und mit welcher Wahrscheinlichkeit es zu einer erneuten Infektion trotz eigentlicher Immunisierung kommen kann. Zusätzlich kann man die „ticks till event“ konfigurieren, von welchen die Dauer einer Infektion und der Immunität abhängen.

Anmerkung: Ursprünglich war ein Feature geplant, welches die Anzahl der Zellen dynamisch skalierbar gemacht hätte. Einige der Datenstrukturen und Umsetzungen berücksichtigen dies auch bereits, um eine eventuelle Umsetzung in der Zukunft zu vereinfachen. Damit die Anzahl der Zeilen nicht 480 übersteigt, wurde dies jedoch noch nicht implementiert.

Screenshot zur Anwendung:


Legende zu den Zellen-Icons

Zellen Icon Zustand Kurzbeschreibung
gesund Eine gesunde Zelle; sie kann infiziert, maskiert, geimpft oder getötet werden.
maskiert Eine maskierte Zelle; sie kann ein geringeres Infektionsrisiko haben, verhält sich ansonsten aber wie eine gesunde Zelle.
immun Eine immune Zelle; sie kann nicht mehr erkranken und auch keine Maske tragen, der Spieler kann sie aber dennoch töten. Ihre Immunität verschwindet nach einer gewissen Zeit.
krank Eine kranke Zelle steckt ihre Nachbarn an und kann entweder an der Infektion sterben oder anschließend eine Immunität entwickeln.
tot Eine tote Zelle kann nichts mehr machen und nur durch einen kompletten Reset wiederbelebt werden.

Bedienungshinweise:


Erklärung der Buttons

Durch einen Klick auf die entsprechenden Button können die folgenden Aktionen durchgeführt werden:

Button Beschreibung Mouseicon
reset Setzt das Spiel und den Mausmodus zurück. Die Statistiken werden genullt.
infect Die Maus wird in einen "Infektionsmodus" versetzt. Ein Klick auf eine Zelle infiziert diese.
mask Die Maus wird in einen "Maskenmodus" versetzt. Ein Klick auf eine Zelle stattet diese mit einer Maske aus.
vaccinate Die Maus wird in einen "Impfmodus" versetzt. Ein Klick auf eine Zelle impft diese.
kill Die Maus wird in einen "Tötungsmodus" versetzt. Ein Klick auf eine Zelle tötet diese.

Erklärung der Slider

Der Wert eines Sliders kann entweder durch Klicken einer Position innerhalb des selbigen oder durch Hovern und Verwendung des Mausrades verändert werden.

Titel Beschreibung von bis Einheit
ms delay between updates Die Zeit, die zwischen Update-Ticks vergeht. 0 2500 Millisekunden
infection probability Die Wahrscheinlichkeit, mit welcher sich eine Zelle bei einem infizierten Nachbarn im nächsten Update ansteckt. 0 100 %
infection reduction by mask Wie effektiv eine Maske vor einer Infektion schützt. 0 100 %
death probability Die Wahrscheinlichkeit, mit welcher eine Zelle an einer Infektion stirbt. 0 100 %
chance of becoming infectabel Die Wahrscheinlichkeit, mit welcher sich eine Zelle nach der Immunisierung wieder infizieren kann. Nach Ablauf der garantierten Immunitätsdauer wird jede Runde gewürfelt. 0 100 %
random tickeventrange Die Tickrange bestimmt, wie lange eine Zelle höchstens krank sein kann. Der Wert multipliziert mit fünf bestimmt die garantierte Immunitätsdauer einer Zelle. Die "ticks till event" sind ein Versuch, die Willkür des Lebens zu erfassen. 0 100 "game ticks"

Übersicht über die Dateien und die Lines of Code:


Einzeldateien:

Name Paket Teil von Type LOC Anteil in % Kurzbeschreibung
Cell engine AL Klasse 32 ≈ 7% Eine einzelne Zelle der Simulation.
CellStatus engine AL Enum 4 ≈ 1% Die möglichen Zustände, die eine Zelle annehmen kann.
Engine engine AL Klasse 172 ≈ 38% Der Kern der Anwendung.
GameOfCorona engine AL Interface 37 ≈ 8% Die Schnittstelle zwischen AL und PI.
Grid presentation PI Klasse 33 ≈ 7% Raster zur Ausrichtung der Zellen.
PI presentation PI Klasse 172 ≈ 38% Die Präsentation und Interaktion der Simulation.
Main - - Klasse 8 ≈ 2% Die Klasse mit der Main-Methode.

Projektabschnitte:

Name Paket LOC Anteil in % Kurzbeschreibung
engine AL 245 ≈ 54% Zusammenfassung des Pakets "engine".
presentation PI 206 ≈ 45% Zusammenfassung des Pakets "presentation".
Gesamtes Projekt - 458 - Gesamtzeilen des Projekts = AL + PI + Main-Klasse

Quellen:


Genutzte Nachschlagewerke:

Zusätzlich genutzte Bibliothek für Buttons und Slider "controlP5":

Sonstiges:

Alle Links wurden zuletzt am 11.06.2021 geprüft.

About

A small virus simulation in game-of-life style.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published