Für Programmierfreakz (magische Zauberkugel, Game of Life) ~ Java - jede Woche neu !

Dieses Thema im Forum "Schule, Studium, Ausbildung" wurde erstellt von Schniefer, 7. November 2007 .

  1. 7. November 2007
    Brauche dringend Hilfe bei folgenden Aufgaben. Die Programmierfreakz unter euch werdens sicher packen, die Ergebnisse könnt ihr mir per PN schicken oder auch hier reinstellen. Ich hab mir auch schonmal überlegt, ob ich hier jede Woche 'n paar Aufgaben reinstelle, um die Programmierer in Java hier im Forum mal 'n bissel zu fordern. Natürlich helfen mir eure Lösungen auch weiter.
    Also los gehts:

    [Aufgabe 4.1]

    Betrachten Sie die Zauberkugel unter
    http://www-lehre.inf.uos.de/~ainf/2007/Uebung/Blatt4/kugel.swf . Schreiben Sie ein Java-Programm, welches die Zauberkugel nachahmt. Geben Sie dazu eine Tabelle mit den Zahlwerten von 00 bis 99 aus. Ordnen Sie jedem Zahlwert zufällig einen Großbuchstaben zu. Sie erhalten mit dem Aufruf double zahl = Math.random(); eine Zufallszahl aus dem halboffenen Intervall {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img1.gif}
    . Multiplizieren die Zufallszahl mit dem Wert 26. Das Ergebnis casten Sie zu einem int, so dass Sie einen ganzahligen Wert aus dem Intervall [0,25] erhalten. Mit diesem Wert können Sie den Buchstaben ermitteln.
    Nachdem die Tabelle ausgegeben wurde, wartet das Programm (z.B. mit IO.readString() , bis der Benutzer den für seine Zahl passenden Buchstaben gefunden hat. Ist das der Fall, betätigt der Benutzer die Returntaste und der passende Buchstabe wird ausgegeben.
    Damit das Spiel funktioniert, muss allen Vielfachen von 9 der gleiche Buchstabe zugeordnet werden, der bei Programmstart ebenfalls per Zufall bestimmt wird.
    Achten Sie auf eine geeignete Benutzerführung.

    [4.2]

    Ein magisches Quadrat ist eine quadratische Beispiel für {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img2.gif}
    : 8 1 6 Anordnung natürlicher Zahlen, wobei die 4 9 2 Summe der Zahlen in jeder Zeile und in 3 5 7 jeder Spalte gleich ist.
    Schreiben Sie ein Java-Programm, das eine ungerade ganze positive Zahl {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img3.gif}
    einliest und dann ein magisches Quadrat der Größe {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img4.gif}
    berechnet und ausgibt, das mit den positiven ganzen Zahlen von {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img5.gif}
    bis {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img6.gif}
    gefüllt ist.
    Füllen Sie das Quadrat, indem Sie die Zahl 1 in die Mitte der obersten Reihe setzen. Setzen Sie die Zahl {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img7.gif}
    eine Zeile über die Zahl {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img8.gif}
    , wenn {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img8.gif}
    durch {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img4.gif}
    teilbar ist. Sonst setzen Sie {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img7.gif}
    eine Zeile unter {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img8.gif}
    in die Spalte rechts von {bild-down: http://www-lehre.inf.uos.de/%7Eainf/2007/Aufgaben/Blatt4/blatt/img8.gif}
    . Falls Sie dabei das Quadrat verlassen, betreten Sie es auf der gegenüberliegenden Seite wieder (s. Beispiel).




    [Aufgabe 4.3]



    Game of Life von John Conway Eine Population von Sternchen (oder sonstigen fiktiven Lebewesen) lebt in einer schachbrettartigen Welt. Jedes Sternchen belegt ein Feld und lebt dort ortsfest, Doppelbelegung eines Feldes ist ausgeschlossen. Die Population entwickelt sich in diskreten Entwicklungsschritten (Zeitpunkten, z.B. Jahren) wie folgt weiter:
    • Ein Sternchen, das 0 oder 1 Nachbarn hat, stirbt beim Übergang zum nächsten Jahr an Vereinsamung.
    • Ein Sternchen, das 4 oder mehr Nachbarn hat, stirbt beim Übergang zum nächsten Jahr an Überbevölkerung.
    • Auf einem leeren Feld, das genau drei Nachbarn hat, entsteht durch Fortpflanzung beim Übergang zum nächsten Jahr ein neues Sternchen.
    Schreiben Sie ein Java-Programm, das ein char-Array mit einer gegebenen Anfangspopulation über eine vom Benutzer anzugebende Zahl von Jahren weiterentwickelt und die Population in jedem Jahr als Matrix von Sternchen ausgibt. Beachten Sie, dass die neue Population anhand der Daten der Population im vorhergehenden Zeitpunkt berechnet werden muss. Die neuen Daten dürfen also die alten Daten nicht oder nicht sofort überschreiben. Das Problem der Nachbarn der Randfelder kann man elegant umgehen, indem man die Welt der Sternchen mit einem Rand versieht. Die Matrix wird also an allen Seiten um ein Feld erweitert, und diese außerhalb der Welt liegenden Felder z.B. mit einem # besetzt. Die Berechnung der Population läuft natürlich nur über die inneren Felder, d.h. über die Felder der Welt. Bei der Ausgabe kann der Rand mit ausgegeben werden.
    Unter Linux können Sie den Bildschirm vor jeder neuen Ausgabe löschen. Dazu können Sie folgende Anweisung verwenden: IO.println((char)27 + "[2J");
    Damit eine Ausgabe nicht sofort überschrieben wird, können Sie das Programm kurz warten lassen, indem Sie folgende Anweisung verwenden: IO.wait(1000); Dadurch wird eine Sekunde gewartet, bis das Programm weiterarbeitet.




    Um die IO. Befehle auszuführen müsst ihr folgende Datei (.jar) runterladen und in Java installieren:
    http://www-lehre.inf.uos.de/~ainf/2007/Packages/AlgoTools.jar

    Viel Spaß und frohes Schaffen ! =)
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.