Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Eclipsekurs 2006/Tag 1: Unterschied zwischen den Versionen

(Aufgabe: Glücksspiel)
(Aufgaben)
Zeile 17: Zeile 17:
 
#*Zum Testen dieser Methode kannst du in der Klasse "Spielwiese" ein "tinyObject" erzeugen und darauf die Methode aufrufen.
 
#*Zum Testen dieser Methode kannst du in der Klasse "Spielwiese" ein "tinyObject" erzeugen und darauf die Methode aufrufen.
 
#*Lege eine Methode "void keepLooping()" an welche eine Endlosschleife mit einer Consolenausgabe (z.B. "still looping") enthält. Führe diese Methode aus und brich die Ausführung mit einem der roten Stopbuttons ab.
 
#*Lege eine Methode "void keepLooping()" an welche eine Endlosschleife mit einer Consolenausgabe (z.B. "still looping") enthält. Führe diese Methode aus und brich die Ausführung mit einem der roten Stopbuttons ab.
 +
#*Sieh dir die "Outline" Ansicht an und probiere aus wie du mit ihr in deinen Klassen Navigieren kannst.
 +
#*Kommentiere deinen beiden Funktionen mit Javadoc.
 +
#:''Tipp:'' /**[Enter] in der Zeile vor einer Methode oder Klasse legt automatisch einen Javadoc-Rumpf mit allen benutzten Parametern an.
 +
#*Gehe mit dem Cursor in deinem Hauptprogramm auf eine stelle an der du eine der kommentierten Funktionen verwendest und sieh dir die Javadoc-Ansicht an.
 +
#*halte die [Str] Taste gedrückt und gehe mit der Maus über den Funktionsaufruf. Klicke ihn an.
  
 
==Aufgabe: Glücksspiel (wird vielleicht weggelassen)==
 
==Aufgabe: Glücksspiel (wird vielleicht weggelassen)==

Version vom 3. Mai 2006, 14:01 Uhr

Aufgaben

  1. Starte die Eclipse-Umgebung mit dem Kommando /home/pub/lib/eclipse/eclipse
  2. Projekt anlegen
    • Erstelle ein Java-Projekt "eclipseTutorial" mit getrennten Ordnern für den Quellcode (src) und kompilierte class-Dateien (bin).
    • Lege in diesem Projekt eine neue Klasse "Spielwiese" an, die eine main-Methode enthält.
    • Erweitere die Klasse zu einem "Hello World"-Programm und führe dieses in Eclipse aus.
    Tipp: Mit syso[Strg+Leerzeichen] erzeugt die Eclipse-Autocompletion ein System.out.println();
    • Verändere das Programm so, dass es einen beim Start übergebenden Parameter auf dem Bildschirm ausgibt.
    Tipp 1: Die Funktion main bekommt ihre Parameter als Array von Strings. Der Name des ersten übergebenen Parameters ist also args[0] .
    Tipp 2: Die Parameter des Programms kannst du in der Run-Configuration einstellen.
    • Baue Fehler in dein Programm ein (Semikolon löschen, Klammer löschen, Tippfehler) und sieh dir an, welche Korrekturvorschläge Eclipse anbietet. Spiele mit diesem Feature ein wenig herum. Du kannst Änderungen [Strg+Z] (Undo) jederzeit rückgängig machen.
    Tipp: Beachte die "Problems"-Ansicht, sowie die Markierungen links und rechts vom Editorfenster. Manchmal muss man Änderungen allerdings erst speichern, damit die Anzeigen aktualisiert werden.
  3. Lege eine neue Klasse "tinyObject" an, welche keine main Methode enthält.
    • "tinyObject" soll drei Klassenvariablen enthalten. Wenn ein Objekt dieser Art erzeugt wird, weden diese mit einem beliebigen Wert initialisiert.
    • Erweitere "tinyObject" um eine Methode "void printYouselfAndThis(String text)", die den übergebenen Text sowie den Inhalt der Klassenvariablen auf der Konsole ausgibt.
    • Hinweis: Sieh dir an, was passiert, wenn du in dieser Funktion "this." schreibst und anschließend kurz wartest oder die Autocomplition mit [Str+Space] aktivierst.
    • Zum Testen dieser Methode kannst du in der Klasse "Spielwiese" ein "tinyObject" erzeugen und darauf die Methode aufrufen.
    • Lege eine Methode "void keepLooping()" an welche eine Endlosschleife mit einer Consolenausgabe (z.B. "still looping") enthält. Führe diese Methode aus und brich die Ausführung mit einem der roten Stopbuttons ab.
    • Sieh dir die "Outline" Ansicht an und probiere aus wie du mit ihr in deinen Klassen Navigieren kannst.
    • Kommentiere deinen beiden Funktionen mit Javadoc.
    Tipp: /**[Enter] in der Zeile vor einer Methode oder Klasse legt automatisch einen Javadoc-Rumpf mit allen benutzten Parametern an.
    • Gehe mit dem Cursor in deinem Hauptprogramm auf eine stelle an der du eine der kommentierten Funktionen verwendest und sieh dir die Javadoc-Ansicht an.
    • halte die [Str] Taste gedrückt und gehe mit der Maus über den Funktionsaufruf. Klicke ihn an.

Aufgabe: Glücksspiel (wird vielleicht weggelassen)

Bei diesem Spiel gibt es 37 Felder, auf die der Spieler 200 Euro (in Einheiten von 1 Euro) verteilt. Danach wird eine Zufallszahl n ermittelt und an den Spieler wird der Gewinn ausgezahlt. Die Gewinnsumme errechnet sich wie folgt:

Summe( von i=0, bis 36,(board[i]*(6 − | i − n |)))

wobei board[i] den Wert der Belegung des Feldes i darstellt. Allerdings sollen nur positive Summanden in die Summe eingehen.

Berechnung der Gewinnsumme

Vervollständige die play-Funktion, welche bei der Eingabe eines boards die Gewinnsumme errechnet. Die Funktion soll also die Aufgabe eines Spielleiters bei einem Roulettespiel einnehmen.

Tipp: Es wird sinnvoll sein, eine Methoden static int abs(int x) und eine Methode static int max(int x, int y) zu implementieren. abs() liefert dabei den Betrag der übergebenen Zahl zurück, während max() den größeren der beiden übergebenen Werte zurückliefert.


Ideale Boardbelegungen

Erstelle ein paar Board-Belegungen und versuche Deinen Gewinn zu maximieren. Hierbei ist es n¨utzlich, die Gewinnfunktion zu verstehen. Mache Dir also klar unter welchen Umst¨anden man wieviel gewinnt.

  • Gibt es Zahlen die g¨unstiger sind als andere?
  • Lohnt es sich auf einzelne Felder besonders viel zu setzen?
  • Ist es besser den Einsatz gleichm¨aßig zu verteilen?

Versuche eine m¨oglichst ideale Board-Belegung zu finden, indem du viele (z.B. 100 000) Spiele mit Deiner festen Belegung simulierst. Falls Du magst, kannst Du auch andere Gewinnfunktionen ausprobieren. z.B. ∗36 bei einem Volltreffer und ∗6 falls eines der acht benachbarten Felder getroffen wurde. Die Praktikabilit¨at einer neuen Gewinnfunktion kannst Du mit der L¨osung aus Aufgabe 3.1 ¨uberpr¨ufen. Der durchschnittliche Gewinn sollte den Einsatz nicht ¨uberschreiten!