Praktikum aus Programmierung Dr. Michael Hahsler (WS 05/06) Projekt: Würfelpoker

Ähnliche Dokumente
Problemdefinition. Datum 26.Oktober Projektbezeichnung Softwareversion von Würfelpoker

JAVA Projekt Mensch ärgere dich nicht

D O K U M E N T A T I O N

Wuerfel - augenzahl: int + Wuerfel() + wuerfeln() + gibaugenzahl(): int

Semestralklausur Einführung in die Programmierung, WS 2007/08, Seite 1/5 Name, Vorname, Matrikelnummer: Gruppe A

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

10. Felder (Arrays) Teil 2. Java-Beispiele: Echo.java Primzahlen.java Monate.java. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Informatik II Übung, Woche 10

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Aufgabe: Hinweise zu der Farbwahl der Texte/Wörter: Orange ist angegeben, wo etwas ergänzt werden soll.

Beispielprüfung CuP WS 2015/2016

Projektbezeichnung: Softwareversion vom Spiel Schiffe Versenken

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Einführung in die Programmierung

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Vorsichtige Programmierer verwenden Inkrement- Operatoren nicht in komplizierteren Ausdrücken

Probeklausur Informatik 2 Sommersemester 2013

Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)

Probeklausur: Programmierung WS04/05

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Institut fu r Informatik

Programmierung für Mathematik (HS13)

Programmiertechnik Klassenvariablen & Instantiierung

Erste Java-Programme (Arrays und Schleifen)

Ausgabe:

Übungen zu Softwareentwicklung 1, WS 2009/10 Übung 6

Einführung in die Programmierung Vorlesungsprüfung

Klausur Fachprüfung Wirtschaftsinformatik Dauer: 2 Stunden. Name:

Felder. Inhaltsverzeichnis. M. Jakob. 28. April Begriffsbildung. Verwendung von Feldern. Gymnasium Pegnitz

Klausur Einführung in die Informatik I für Elektrotechniker 16. Juli 2003

Einfache Sortierverfahren in Java, 2. Version

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

Felder. M. Jakob. 28. April Gymnasium Pegnitz

Basispruefung Herbst 2016/ Einführung in die Programmierung

Algorithmen und Programmierung III

Klausur zur Vorlesung Einführung in die Programmierung

hue12 January 24, 2017

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Übung Programmierung WS 2007/08 - Blatt 6

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Einführung in die Programmierung für NF MI. Übung 04

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

Dokumentation des Projektes Tic Tac Toe

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8

Von der Aufgabe zum Code. Mario Bodemann

Umsetzung einer Klassenkarte in einer Programmiersprache

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Übungsstunde 5. Einführung in die Programmierung

Erste Java-Programme (Scopes und Rekursion)

Übung Informatik I - Programmierung - Blatt 2

a) Für das vorgegebene Programmstück ergibt sich folgendes Referenzgeflecht:

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Java Projekt: Tic Tac Toe + GUI

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Allgemeine Hinweise:

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung

hue13 January 30, 2017

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

1. Klausur - Probeklausur

Anleitung zum Applet

Die Klasse java.lang.object. Thorsten Treffer

Objektorientiertes Programmieren (Java)

Programmierkurs Java

Aufgabenblatt: Methoden - rekursiv

Wenn es wahr ist, dann...

Computeranwendung und Programmierung (CuP)

Objektorientierte Programmierung

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Projekt: Der Turm von Hanoi

Übung Informatik I - Programmierung - Blatt 3

Java: Eine kurze Einführung an Beispielen

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

OOP. Eine Klasse Basteln. Henrik Horstmann

Aufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Informatik Abitur Bayern 2017 / II - Lösung

Tutoraufgabe 1 (Verifikation):

Einfache Sortierverfahren in Java, 1. Version

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Alle Aufgaben beziehen sich auf Java.

Einstieg in die Informatik mit Java

Einführung in die Programmierung für NF. Arrays

EidP. Blocktutorium SS 2014

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Tutoraufgabe 1 (Pilze):

Programmieren Vorkurs

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten

Vorkurs Informatik WiSe 15/16

Kontrollstrukturen und Logik

Einstieg in die Informatik mit Java

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Übungsstunde 4. Einführung in die Programmierung

Transkript:

Praktikum aus Programmierung Dr. Michael Hahsler (WS 05/06) Projekt: Würfelpoker Gert Vasak Matrikelnummer 9150666 PROBLEMSTELLUNG Ziel Ziel dieses Projektes ist es, eine einfache Version des Brettspiels Würfelpoker in Java zu programmieren. Es soll dem User möglich sein, anhand einer vorgegebenen Scoreliste so viele Punkte wie möglich zu erreichen; das Spiel (Computer) füllt die Scoreliste nach den Wünschen des Users aus und aktualisiert seinen jeweiligen Punktestand. Am Ende wird die Gesamtpunktezahl angezeigt. Darstellung Für das Spiel werden fünf (virtuelle) Würfel erzeugt. Ein Würfel besteht aus sechs Würfelseiten, die die Symbole 9, 10, Bube, Dame, König und Ass darstellen. In der ersten Version (Prototyp) wird das Spiel über die Windows-Eingabeauffordeung gestartet, das Spielen ist über eine textbasierte Eingabe möglich. In der Endfassung soll das Spiel als Applet implementiert werden; dabei sollen die Würfel zweidimensional Ansicht von oben dargestellt werden. Spielanleitung Für das Spiel gelten die allgemeinen Regeln für (Würfel-)Poker: Der Spieler hat die Möglichkeit, drei Mal pro Runde zu würfeln, wobei er vor Wurf Nr. 2 und 3 jene Würfel, die schon einen für ihn nützlichen Wert haben, halten kann. Ingesamt stehen zehn solcher Wurfserien zur Verfügung, um die jeweils bestmögliche Punktezahl für folgende vorgegebene Kombinationen zu erreichen: Höchste Anzahl an Würfeln mit dem jeweiligen Symbol (9 Ass, Symbole zählen in aufsteigender Reihenfolge ein bis sechs Punkte) Strasse (Würfelsymbole in ansteigender Reihenfolge, 20 Punkte) Full House (drei Würfel eines Wertes und zwei Würfel eines anderen Wertes, 30 Punkte) Poker (vier gleiche Würfelsymbole, 40 Punkte) Grande (fünf gleiche Würfelsymbole, 50 Punkte)

Jede Kombination darf genau ein Mal eingetragen werden. Der Spieler kann sich aussuchen, welches Ergebnis er wo eintragen lässt bzw. welche Kombination er streichen lässt, weil er sie nicht erreicht. Am Ende des Spiels wird die Gesamtpunktezahl angezeigt, der Spieler wird gefragt, ob er noch einmal spielen möchte. Eine Highscore-Wertung ist vorläufig noch nicht geplant. USE CASE DIAGRAMM würfeln Spiel starten halten Spieler Punkte eintragen Use Case Spiel starten Der User öffnet das Spiel über die Windows-Eingabeaufforderung. Das Spiel beginnt sofort. Use Case würfeln Nach Spielbeginn wird automatisch die erste Runde gewürfelt. Anschließend wird der User gefragt, welche der Würfel er halten möchte. Use Casa halten Mit Eingabe der Tasten j und Enter bestimmt der User, ob der jeweilige Würfel auf halten gesetzt werden soll. Use Case Punkte eintragen Nach Abschluss einer Runde (d.h. wenn drei Mal gewürfelt wurde, oder wenn alle Würfel auf halten gesetzt sind) wird der User gefragt, in welche Zeile er sein Ergebnis eintragen möchte.

SEQUENZDIAGRAMM : Spiel : Spieler Neu() Neu () :Würfel (W1-W5) würfeln() anzahl Wurf ++ würfeln() zeige Wuerfel() return Wert() W1-W5 halten() prüfe W1-W5 halten until [Anzahl Wurf = 3] scoreanzeigen() scoreeintragen() 9,, Grande scoreanzeigen() Runde ++ until [anzahlrunde = 10] gesamtscoreanzeigen() Frage Neues Spiel() Ja/Nein()

KLASSENDIAGRAMM Spiel Wuerfel [] wuerfel; String halte; String eintrag; String neuesspiel; int [] [] scorelist; int runde = 1; int line; int versuch; boolean rundeaus; BufferedReader lesen; 1 5 Wuerfel String name; int wert; boolean halten = false; Random generator; public int würfeln() public void wuerfelerzeugen () public int [] [] scorelisterzeugen public void spielen() public void wuerfeln() public void fragehalten() public boolean sollwuerfeln() public void scoreanzeigen() public void scoreeintragen() public int [] [] streichezeile (int i) public int neun() public int zehn() public int bube() public int dame() public int koenig() public int ass() public boolean strasse() public boolean fullhouse() public boolean poker() public boolean grande() public void neuerunde() public void gesamtscoreanzeigen() public void neuesspiel()

BESCHREIBUNG DER ATTRIBUTE UND METHODEN Klasse Spiel Attribute: Diese Klasse Spiel enthält die Attribute Wuerfel (Array der Klasse Wuerfel), halte (String), eintrag (String), neuesspiel (String), scorelist (mehrdimensionales Array), line (int), runde (int), versuch (int), rundeaus (boolean) und lesen (BufferedReader). Methoden: public void wuerfelerzeugen() Erzeugt 5 Würfel und weist jedem den Namen Wuerfel und die ansteigende Nummer (von 1-5) zu. public int [][] scorelisterzeugen() Erzeugt ein mehrdimensionales Array mit 10 Zeilen und 2 Spalten und setzt alle Werte auf 0. Die Methode gibt eine Scoreliste zurück. public void spielen() Ist so eine Art Hauptmethode ; wird am Anfang des Spieles aufgerufen und löst mit einer if- Bedingung die Methoden sollwuerfeln() bzw. wuerfeln() aus. In weiterer Folge werden hier auch die Methoden scoreanzeigen(), scoreeintragen() und neuerunde() aufgerufen. public void wuerfeln() Ruft für jeden Würfel die Methode wuerfeln() der Klasse Wuerfel auf. Nach dem 1. und 2. Würfelversuch innerhalb einer Runde wird auch die Methode fragehalten() aufgerufen. public void fragehalten() Fragt für jeden Würfel, der innerhalb einer Runde noch nicht auf halten gesetzt wurde, ob man ihn halten möchte. public boolean sollwuerfeln() Überprüft, ob schon vor Ende einer Runde alle Würfel auf halten gesetzt sind. Gibt die Variable rundeaus als true zurück, wenn das der Fall ist.

public void scoreanzeigen() Zeigt den aktuellen Stand der Scorelist an. public void scoreeintragen() Liest die Zeile ein, in der die Punkte eingetragen werden sollen. Überprüft, ob die eingegebene Zahl zwischen 0 und 11 liegt, ob die eingegebene Zahl eine bereits gestrichene Zeile angibt, oder ob schon etwas in die Zeile eingetragen wurde. Überprüft durch aufrufen der Wert-Methoden (z.b.: neun() ), ob die Werte der Würfel für die eingegebene Zeile als Scorepunkte zählen. Ruft am Ende die Methode scoreanzeigen() auf. public int [] [] streichezeile (int i) Setzt die zweite Spalte der jeweiligen Zeile des Scorelist-Arrays auf 1 und löst so in der Methode scoreanzeigen() die Meldung Zeile gestrichen! aus. public int neun() Überprüft, wie viele Würfel dem Wert Neun entsprechen (d.h. dem errechneten Wert 1 der Variable wert ), berechnet die Punkte für die Scoreliste und gibt diese zurück. public int zehn() Überprüft, wie viele Würfel dem Wert zehn entsprechen (d.h. dem errechneten Wert 2 der Variable wert ), berechnet die Punkte die Scoreliste und gibt diese zurück. pulic int bube() Überprüft, wie viele Würfel dem Wert Bube entsprechen (d.h. dem errechneten Wert 3 der Variable wert ), berechnet die Punkte für die Scoreliste und gibt diese zurück public int dame() Überprüft, wie viele Würfel dem Wert Dame entsprechen (d.h. dem errechneten Wert 4 der Variable wert ), berechnet die Punkte für die Scoreliste und gibt diese zurück public int koenig() Überprüft, wie viele Würfel dem Wert Koenig entsprechen (d.h. dem errechneten Wert 5 der Variable wert ), berechnet die Punkte für die Scoreliste und gibt diese zurück public int ass() Überprüft, wie viele Würfel dem Wert Ass entsprechen (d.h. dem errechneten Wert 6 der Variable wert ), berechnet die Punkte für die Scoreliste und gibt diese zurück

public boolean strasse() Überprüft, ob die Würfel dem Wert Strasse entsprechen und gibt bei Richtigkeit den Wert true zurück. public boolean fullhouse() Überprüft, ob die Würfel dem Wert Full House entsprechen und gibt bei Richtigkeit den Wert true zurück. public boolean poker() Überprüft, ob die Würfel dem Wert Poker entsprechen und gibt bei Richtigkeit den Wert true zurück. public boolean grande() Überprüft, ob die Würfel dem Wert Grande entsprechen und gibt bei Richtigkeit den Wert true zurück. public void neuerunde() Setzt für jeden Würfel die Variable halten auf false, erhöht die Variable runde um 1, setzt die Variable rundeaus auf false und ruft die Methode spielen() auf. public void gesamtscoreanzeigen() Berechnet nach 10 gespielten Runden die erreichte Gesamtpunkteanzahl und zeigt sie an. public void neuesspiel() Fragt nach Ende der 10. Spielrunde, ob der User noch einmal spielen möchte. Setzt nach Eingabe von j die Variable runde auf 1 und ruft die Methoden wuerfelerzeugen(), scorelisterzeugen() und spielen() auf. Klasse Wuerfel Attribute: Die Klasse Wuerfel enthält die Attribute wert (int), name (String), halten (boolean, auf false gesetzt) und static Random generator.

Methoden: public int wuerfeln (String x) Überprüft für alle 5 Wuerfel, ob die Variable halten auf false gesetzt ist; falls ja, wird für den jeweiligen Wuerfel ein neuer Wert zwischen 1 und 6 berechnet, falls nicht wird der Wuerfel als gehalten dargestellt. WARTUNG Eine Wartung im eigentlichen Sinn ist für das Programm grundsätzlich nicht notwendig. Während des Testbetriebes wurden jedoch noch Beeinträchtigungen festgestellt, die im Zuge einer Weiterentwicklung behoben werden können: So kommt es bei der Eingabe in die Scorelist zu einer IOException, wenn nicht eine Zahl, sondern ein Buchstabe oder anderes Symbol eingegeben wird. Dieses Problem muss im Zuge der nächsten Wartung bearbeitet werden. Ebenso ist es denkbar, das Programm um eine Highscore-Liste zu erweitern. Zusätzlich ist bei reibungslosem Programmdurchlauf in der Endversion der Ausbau als Applet angedacht. HINWEISE FÜR DEN USER Zum Spielen Quellcode (Wuerfelpoker.java) downloaden und über die Windows- Eingabeaufforderung starten java Wuerfelpoker Spielanleitung: Halten des jeweiligen Würfels durch Eingabe von j und Enter Score eintragen in die gewünschte Zeile erfolgt durch Eingabe der Zeilennummer (1,, 10) und Enter Neues Spiel starten am Ende des Spiels durch Eingabe von j und Enter