Hey Leute,
ich habe gerade eine neue Code-Competition von IT-Talent gesehen, die bis Ende Januar läuft.
In dieser soll man ein kleines "Spiel" programmieren und kann sogar was gewinnen.
Ist vielleicht für den einen oder anderen interessant![Smile :) :)](https://ngb.to/images/smilies/smile.png)
Hier der Link
Ich fange dann auch mal direkt mit den ersten paar Zeilen an - wie immer in Java.
ich habe gerade eine neue Code-Competition von IT-Talent gesehen, die bis Ende Januar läuft.
In dieser soll man ein kleines "Spiel" programmieren und kann sogar was gewinnen.
Ist vielleicht für den einen oder anderen interessant
![Smile :) :)](https://ngb.to/images/smilies/smile.png)
Hier der Link
Da der Link immer zur aktuellen Code-Competition führt:
___
Code Competition: Convays Game of Life
{ABOUT}
Convay's Game of Life ist eine klassische Aufgabe in der Informatik. Es handelt sich dabei um einen zweidimensionalen, zellulären Automaten.
Ausgangspunkt ist ein Spielfeld mit X mal X Zellen. Alle Zellen können entweder tot oder lebendig sein (also Status 0 oder 1 haben).
Der Status der Zellen wird durch ein Regelset bestimmt und das Spiel ist rundenbasiert. Jede Spielrunde (auch "Generation" genannt), wird anhand dieser Regeln bestimmt, ob die Zelle tot oder lebendig ist.
Begonnen wird das Spiel mit einer "Startgeneration". Eine Startgeneration ist nichts anderes als die initiale Belegung der Zellen mit einem Status.
Wir können mit Hilfe von Convays Game of Life den "Lebenszyklus" von Formen auf dem Spielfeld simulieren. Je nach Form kommen dabei mitunter spannende Ergebnisse zum Vorschein.
{INPUT}
Deine Aufgabe ist es, das Game of Life einmal selbst zu programmieren. Das ist gar nicht so schwer, wie es sich anhört, macht viel Spaß und man erfährt viel über die in der Informatik immer wieder auftauchenden "Automaten".
{REQUIREMENTS}
Um an der Code Competition teilzunehmen, musst Du den Quellcode Deines Programms, sowie ein Binary abgeben (per E-Mail an cc@it-talents.de).
Dein Programm muss folgendes beinhalten:
Spielfeld und Zellen
Das Spielfeld ist ein Gitternetz aus X mal X Zellen. Diese Zellen können jeweils zwei Zustände haben: tot, oder lebendig (0 bzw. 1)
Jede Zelle auf dem Spielfeld hat 8 Nachbarzellen. Wird das Spielfeld am Rand verlassen, so wird es an der gegenüberligenden Seite wieder betreten. Eine Zelle am Rand des Spielfeldes hat ihre Nachbarzellen also auch auf der gegenüberliegenden Seite.
Das grundlegende Objekt ist eine Zelle. Diese Zelle muss ihre Position kennen (die Position einer Zelle wird im Verlauf nicht gewechselt, nur der Status) und einen Status haben.
Tipp: Damit eine "Lebensform" aus dem Spielfeld heraus laufen und am gegenüber liegenden Ende wieder auftauchen kann, muss eine Zelle auch die Grenzen des Spielfeldes kennen.
Das Spielfeld ist demnach eine Anordnung von allen lebenden und toten Zellen.
Zyklus
Das "Game of Life" ist zyklisch angelegt. Das bedeutet, es wird nach und nach immer wieder eine Spielrunde ausgeführt. In jeder Spielrunde werden alle Regeln abgefragt und entsprechend dieser Regeln der neue Status der Zelle (tot oder lebendig) bestimmt.
Spielregeln
Die nächste Generation an lebenden Zellen (also der Status aller Zellen in der nächsten Spielrunde) wird durch ein einfaches Regelset berechnet:
1) Jede lebende Zelle, die weniger als 2 lebende Nachbarzellen hat, stirbt
2) Jede lebende Zelle, die 2 oder 3 lebendige Nachbarzellen hat, lebt weiter
3) Jede lebende Zelle, die mehr als 3 lebende Nachbarzellen hat, stirbt
4) Jede tote Zelle, die genau 3 lebende Nachbarzellen hat, wird lebendig
Ausgabe
Das Game of Life muss eine grafische Ausgabe haben und es müssen Parameter übergeben werden können. Ob Du dabei eine Ausgabe des Spielfeldes und die Übergabe von Mustern (Erstbesetzung des Spielfeldes) auf der Kommandozeile realisierst, oder ob Du eine grafische Oberfläche erstellst, bleibt Dir überlassen.
{REVIEW}
Worauf achten wir bei der Bewertung Deines Programms?
Funktionalität: Lässt sich das Programm ausführen? Tut es, was es soll?
Code-Lesbarkeit: Lässt sich der Quellcode nachvollziehen?
Dokumentation: Verstehen wir die Bedienung des Programms? Ist der Code kommentiert?
Zusätzliche Features: Auch besonders aufwändige GUIs oder sinnvolle Zusatzfeatures fließen mit in die Wertung ein![Wink ;) ;)](https://ngb.to/images/smilies/wink.png)
___
Code Competition: Convays Game of Life
{ABOUT}
Convay's Game of Life ist eine klassische Aufgabe in der Informatik. Es handelt sich dabei um einen zweidimensionalen, zellulären Automaten.
Ausgangspunkt ist ein Spielfeld mit X mal X Zellen. Alle Zellen können entweder tot oder lebendig sein (also Status 0 oder 1 haben).
Der Status der Zellen wird durch ein Regelset bestimmt und das Spiel ist rundenbasiert. Jede Spielrunde (auch "Generation" genannt), wird anhand dieser Regeln bestimmt, ob die Zelle tot oder lebendig ist.
Begonnen wird das Spiel mit einer "Startgeneration". Eine Startgeneration ist nichts anderes als die initiale Belegung der Zellen mit einem Status.
Wir können mit Hilfe von Convays Game of Life den "Lebenszyklus" von Formen auf dem Spielfeld simulieren. Je nach Form kommen dabei mitunter spannende Ergebnisse zum Vorschein.
{INPUT}
Deine Aufgabe ist es, das Game of Life einmal selbst zu programmieren. Das ist gar nicht so schwer, wie es sich anhört, macht viel Spaß und man erfährt viel über die in der Informatik immer wieder auftauchenden "Automaten".
{REQUIREMENTS}
Um an der Code Competition teilzunehmen, musst Du den Quellcode Deines Programms, sowie ein Binary abgeben (per E-Mail an cc@it-talents.de).
Dein Programm muss folgendes beinhalten:
Spielfeld und Zellen
Das Spielfeld ist ein Gitternetz aus X mal X Zellen. Diese Zellen können jeweils zwei Zustände haben: tot, oder lebendig (0 bzw. 1)
Jede Zelle auf dem Spielfeld hat 8 Nachbarzellen. Wird das Spielfeld am Rand verlassen, so wird es an der gegenüberligenden Seite wieder betreten. Eine Zelle am Rand des Spielfeldes hat ihre Nachbarzellen also auch auf der gegenüberliegenden Seite.
Das grundlegende Objekt ist eine Zelle. Diese Zelle muss ihre Position kennen (die Position einer Zelle wird im Verlauf nicht gewechselt, nur der Status) und einen Status haben.
Tipp: Damit eine "Lebensform" aus dem Spielfeld heraus laufen und am gegenüber liegenden Ende wieder auftauchen kann, muss eine Zelle auch die Grenzen des Spielfeldes kennen.
Das Spielfeld ist demnach eine Anordnung von allen lebenden und toten Zellen.
Zyklus
Das "Game of Life" ist zyklisch angelegt. Das bedeutet, es wird nach und nach immer wieder eine Spielrunde ausgeführt. In jeder Spielrunde werden alle Regeln abgefragt und entsprechend dieser Regeln der neue Status der Zelle (tot oder lebendig) bestimmt.
Spielregeln
Die nächste Generation an lebenden Zellen (also der Status aller Zellen in der nächsten Spielrunde) wird durch ein einfaches Regelset berechnet:
1) Jede lebende Zelle, die weniger als 2 lebende Nachbarzellen hat, stirbt
2) Jede lebende Zelle, die 2 oder 3 lebendige Nachbarzellen hat, lebt weiter
3) Jede lebende Zelle, die mehr als 3 lebende Nachbarzellen hat, stirbt
4) Jede tote Zelle, die genau 3 lebende Nachbarzellen hat, wird lebendig
Ausgabe
Das Game of Life muss eine grafische Ausgabe haben und es müssen Parameter übergeben werden können. Ob Du dabei eine Ausgabe des Spielfeldes und die Übergabe von Mustern (Erstbesetzung des Spielfeldes) auf der Kommandozeile realisierst, oder ob Du eine grafische Oberfläche erstellst, bleibt Dir überlassen.
{REVIEW}
Worauf achten wir bei der Bewertung Deines Programms?
Funktionalität: Lässt sich das Programm ausführen? Tut es, was es soll?
Code-Lesbarkeit: Lässt sich der Quellcode nachvollziehen?
Dokumentation: Verstehen wir die Bedienung des Programms? Ist der Code kommentiert?
Zusätzliche Features: Auch besonders aufwändige GUIs oder sinnvolle Zusatzfeatures fließen mit in die Wertung ein
![Wink ;) ;)](https://ngb.to/images/smilies/wink.png)
Ich fange dann auch mal direkt mit den ersten paar Zeilen an - wie immer in Java.