Space Shooter. Die Gesteinsbrocken sollen sich von selbst von rechts nach links bewegen.

Ähnliche Dokumente
In dieser Aufgabe sollen Teile eines kleinen Pong-Spiels analysiert und implementiert werden. Gegeben sei dazu das folgende Szenario:

Software Engineering Klassendiagramme Einführung

Java: Vererbung. Teil 3: super()

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Programmieren in Java

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

GetName(), GetName(), GetGeschlecht() und AelterWerden().

JAVA lernen mit GREENFOOT

Grundlagen Programmierung

Luftballons. Einführung. Scratch. Wir wollen ein Spiel machen, bei dem man Luftballons platzen lässt! Activity Checklist.

Algorithmen und Datenstrukturen

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Java Kurs für Anfänger Einheit 5 Methoden

5.4 Klassen und Objekte

Technische Dokumentation SilentStatistikTool

5.5.8 Öffentliche und private Eigenschaften

Objektorientierte Programmierung

Kapitel 6. Vererbung

Objektorientierung: Klassen und Objekte

Vorkurs C++ Programmierung

Objektorientierte Programmierung

Java Einführung Methoden in Klassen

Kapitel 6. Vererbung

Klassen-Diagramm. Grund-Erfahrung mit der EDU-Variante der Engine-Alpha alpha.org Felder Deklaration und Initialisierung, Zugriff

13. Tutorium zu Programmieren

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

Code-Erzeugung aus UML-Klassendiagrammen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Kapitel 6. Vererbung

Software Engineering Interaktionsdiagramme

Freelance DeltaPLC-Tool. Version 4 / Version 5

1 Polymorphie (Vielgestaltigkeit)

5. Tutorium zu Programmieren

Java - Webapplikationen

Client-Server-Beziehungen

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Application Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung

Probeklausur: Programmierung WS04/05

Prinzipien Objektorientierter Programmierung

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Wir wollen im Folgenden dieses uralte Spiel aus objektorientierter Sichtweise analysieren und es Stück für Stück programmieren.

Java Real-Time Specification

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Objektorientiertes Programmieren für Ingenieure

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Schritt 1 - Ein Spielfeld

Aufgabenstellung und Zielsetzung

Klassenbeziehungen & Vererbung

Objective-C CheatSheet

Programmierkurs Java

Benutzerhandbuch Bonitur MEViS

Grundlagen von Python

Greenfoot: Schleifen. 1. Die for-schleife

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

LineQuest-Leitfaden Programmierschnittstelle. LineQuest online-umfragen professionell weiter bearbeiten in Technik und Design

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Inhalt. Max Lini. ax. inie. Einleitung... VII

Objektorientierung: Klassen und Objekte

Ein Projekt mit JavaFX erstellen

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Grundlagen Programmierung

Software Engineering Klassendiagramme weiterführende Konzepte

Tetris soll als Computerspiel mittels Java realisiert werden, wobei ein objektorientierter Ansatz gewählt

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

1 Vom Problem zum Programm

Szenario 3: Service mit erweiterter Schnittstelle

Projektdokumentation für den Fußballroboter Jaqueline. Rene Peschmann und Ronny Gorzelitz

Mobile Security Configurator

Kapitel 12: Übersetzung objektorienter Konzepte

Arbeiten mit UMLed und Delphi

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

ESB - Elektronischer Service Bericht

2. Semester, 2. Prüfung, Lösung

Applet Firewall und Freigabe der Objekte

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programmierung eines NewsTickers in Java

Tutorium Java Ein Überblick. Helge Janicke

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

5.6 Vererbung. Vererbung

Programmierung in C. Grundlagen. Stefan Kallerhoff

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Programmierprojekt

Arrays Fortgeschrittene Verwendung

Webconnect xdsl Tool V 4.0

Arbeiten mit BlueJ. Objektorientiertes Programmieren in Java mit BlueJ

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

3 Objektorientierte Konzepte in Java

Selbststudium OOP4 Auftrag

Einführung in die Java- Programmierung

1. Übung zu "Numerik partieller Differentialgleichungen"

Klassendefinitionen verstehen

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Transkript:

Space Shooter 1. Grundlegende Funktionen Lade das Szenario SpaceShooter-0. In diesem Spiel soll zunächst nur Folgendes geschehen: Die Gesteinsbrocken sollen sich von selbst von rechts nach links bewegen. Die Rakete soll per Tastatursteuerung den Gesteinsbrocken nach oben und unten ausweichen können. Übernimm die Steuerung der Rakete indem du die Methode act() der Klasse Rocket bearbeitest. lege eine neue Methode steerupdown() an, die du in act() aufrufst. Die Auslagerung der Funktion in die Methode steerupdown() scheint hier zunächst umständlich und überflüssig, schafft aber später mehr Überblick im gesamten Programm: steerupdown(); public void steerupdown() { if (Greenfoot.isKeyDown("up")) { setlocation(60, gety() - 5); Ergänze eine entsprechende Möglichkeit für die Abwärtsbewegung und teste das Programm. Die Methode getx() ermittelt die aktuelle X-Position des Objektes. Mit setlocation(x, y) wird dem Objekt eine neue Position zugewiesen. Um die Gesteinsbrocken nach links zu bewegen, muss die Methode act() der Klasse Rock bearbeitet werden. Weil der Rock auch später wenig eigenen Funktionalität haben wird, kann der Code direkt in die Methode act() geschrieben werden: setlocation(getx()-4, gety()); Das Spiel ist jedoch schell am Ende, da die Brocken am linken Bildschirmrand verharren. Ergänze die Steuerung des Brockens so, dass er, sobald er den linken Rand erreicht hat, wieder an einer zufälligen Position am rechten Rand wieder auftaucht. Mit Greenfoot.getRandomNumber(max) kannst du eine Zufallszahl ermitteln. Experimentiere auch mit verschiedenen Geschwindigkeiten der Brocken. Speichere dein Programm als SpaceShooter-1 und gebe es ab. Java programmieren mit Greenfoot: Space Shooter - Grundlegende Funktionen S. 1

1.1) Auf die Brocken ballern Um auf die Felsbrocken feuern zu können, benötigen wir ein Geschoss (Bullet), dass von der Rakete weg zum rechten Rand fliegt. Dazu muss beim Schuss, der mit der Space-Taste ausgelöst werden soll, ein neues Objekt der Klasse Bullet erstellt werden. Wir ergänzen also Rocket um die Methode shootgun(): 1 public void shootgun() { if (Greenfoot.isKeyDown("space")) { getworld().addobject(new Bullet(), getx(), gety()); Nun muss das Objekt noch auf geradem Weg an den rechten Rand bewegt werden. Das erfolgt genau wie bei den Gesteinsbrocken, nur in umgekehrter Richtung. Nun muss noch von der Methode act() der Klasse Bullet überprüft werden, ob ein Brocken getroffen ist und dieser dann beseitigt werden. setlocation(getx() +5, gety()); if (istouching(rock.class)) { removetouching(rock.class); Nun bestehen noch zwei Probleme: die Geschosse verbleiben am rechten Rand und wenn alle drei Brocken zerstört sind, erscheinen keine neuen Brocken. In der Klasse Bullet müssen also ein paar Ergänzungen vorgenommen werden: Wenn die X-Position am Bildschirmrand ist, muss das Geschoss gelöscht werden. Wenn ein Brocken zerstört ist, muss am rechten Rand ein neuer Brocken entstehen. Mit der folgenden Anweisung kann sich ein Objekt selbst löschen: getworld().removeobject(this); Das Erstellen eines neuen Objekts kann aus der Methode shootgun() übernommen werden. Ergänze die Methode act() entsprechend und speichere das Ergebnis als SpaceShooter-2 ab. 1.2) Punkte zählen Der Spieler soll Punkte erhalten, wenn er einen Brocken abschießt und im Gegenzug Punkte verlieren, wenn ein Gesteinsbrocken den linken Bildschirmrand erreicht. 2 Zunächst muss in der Klasse Space mitprivate int score; eine Variable angelegt werden. Außerdem muss diese Variable bei Beginn des Spiels auf 0 gesetzt werden, dies erfolgt in der Konstruktor-Methode: private int score; void Space() { 1 Die nachfolgende Programmierung basiert auf SpaceShooter-1. 2 Die nachfolgende Programmierung basiert auf SpaceShooter-2. Java programmieren mit Greenfoot: Space Shooter - Grundlegende Funktionen S. 2

score = 0; Bei der Programmierung mit JAVA ist es nich üblich, direkten aus anderen Objekten heraus direkten Zugriff auf Variablen zuzulassen, deshalb wird score alsprivate definiert und eine Methode addtoscore() für den Zugriff angelegt. Die Funktion muss einen Parameter int value erhalten, der dann zu score addiert wird. public void addtoscore(int value) { score = score + value; showtext("score: " + value, 50, 30); Die Methode showtext() positioniert den anzuzeigenden Text hier bei x=50 und y=30. Leider ist es nicht ganz einfach möglich, die Methode addtoscore() aus den Objekten Bullet oder Rock heraus aufzurufen, weil diese nicht direkt vererbt wird. In der Klasse Rock kann die Methode mit dieser Konstruktion 3 aufgerufen werden: Space myspace = (Space)getWorld(); myspace.addtoscore(value); Der Punktestand soll immer um den Wert 10 erhöht werden, wenn ein Brocken getroffen wurde und um den Wert 7 reduziert werden, wenn ein Brocken den linken Rand erreicht hat. Das Spiel soll nach einer bestimmten Zeit beendet werden. Dazu fügen wir in der Klasse Rocket einen Timer ein, der beim Erstellen der Rakete auf den Wert 1000 gestellt wird. Die Methode act() muss dann so adaptiert werden: timer--; if (timer > 0) { else { steerupdown(); shootgun(); Greenfoot.stop(); Zunächst wird der Timer um den Wert 1 reduziert (timer--), sollte der Wert nicht größer als 0 sein, wir das Spiel beendet. Zusätzlich könntest du mit showtext() oben rechts im Bildschirm den Timer einblenden. Speichere dein Ergebnis als SpaceShooter-3. 3 Der genauere Hintergrund dieser Konstruktion muss aufgrund der dafür erforderlichen Kenntnisse später erläutert werden. Java programmieren mit Greenfoot: Space Shooter - Grundlegende Funktionen S. 3