Real World Haskell Projekte 2

Ähnliche Dokumente
(1)Einführung in Eclipse

Aufgabenblatt 4 IT-Security Angewandte Informatik WS 2016/17

(6) Verknüpfen der GUI mit dem Spiel

Vorsemesterkurs Informatik

Vorkurs Informatik WiSe 16/17

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

Einführung in das Programmieren

Programmieren 2 12 Netzwerke

Programmieren in Haskell Debugging

3. Übung zur Vorlesung Verteilte Betriebssysteme

Vorkurs Informatik WiSe 17/18

Programmieren in Haskell

Oliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans)

Programmieren in Haskell Einstieg in Haskell

Hello World! Eine Einführung in das Programmieren Das erste Programm

Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln

Programmieren in Haskell

(1)Einführung in Android Studio

1 Modellierung einer Uhr

Institut für Informatik und Angewandte Kognitionswissenschaften

Probeklausur: Programmierung WS04/05

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Serielle Kommunikation - Kodierung

Einfache SDO-Zugriffe für CANopen-E/A-Module

Java. Von den Grundlagen bis zu Threads und Netzen von Prof. Dr. Ernst-Wolfgang Dieterich Fachhochschule Ulm

Typklassen. Natascha Widder

Guile Die Erweiterungssprache des GNU-Projekts

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen

Übungsserie Nr. 6. Ausgabe: 1. April 2015 Abgabe: 15. April Hinweise

III.1 Prinzipien der funktionalen Programmierung - 1 -

Programmieren lernen in ASP.NET mit C#

Aufgabenblatt 1. Kompetenzstufe 2. Allgemeine Informationen zum Aufgabenblatt:

Abgabe: (vor 12 Uhr)

2 Eine einfache Programmiersprache

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Vorlesung Programmieren

Server - Client Kommunikation

Hilfe zur Angebotsabgabe Anleitung zur Abgabe eines Angebots und oder eines Teilnahmeantrags

Informatik 1. Sommersemester Helmut Seidl. Institut für Informatik TU München

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

Haskell in der Schule - (K)ein Thema? Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Quelle: programmierung/scratch. Wiederholungen. Informatik AG Goetheschule Dieburg Christian Wach

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

IBM SPSS Statistics Version 25. Installationsanweisungen für Linux (Lizenz für einen berechtigten Benutzer) IBM

Programmiermethodik 1. Klausur

Programmieren in Haskell Einführung

PHP Kurs Online Kurs Analysten Programmierer Web PHP

PROCESSING EINE EINFÜHRUNG IN DIE INFORMATIK. Created by Michael Kirsch & Beat Rossmy

Inhalte des Moduls Programmieren 1

Netzwerkprogrammierung unter Linux und UNIX

Übungsblatt 1. Java Vorkurs (WS 2017)

1: Anmelden. Quick-Start-Guide: Nutzung des MUSIC2BIZ Kunden-Konto

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

Programmieren für Fortgeschrittene Einführung in die Programmiersprache ABAP

Von Keerthikan T. & Siyar Kolusari

Einführung in die Computerlinguistik Einführung in Perl (1)

2 Eine einfache Programmiersprache

Erste Java-Programme (Scopes und Rekursion)

Leitfaden zum Erstellen eines Frogger -Spiels: Teil 2

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

Informationen zur Verwendung von Visual Studio und cmake

Programmiersprachen und Übersetzer

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

2. Ihre Themen 1. Informationen

Entwicklungstand der GUI

2 Eine einfache Programmiersprache

Die Scala Entwicklungsumgebung. L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung

Mail Connector/400 - Beispielanwendung. Benutzerhandbuch. Avenum - Die Technologie GmbH

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Transkript:

Real World Haskell Projekte 2 Julian Fleischer, Alexander Steen Donnerstag, 1. August 2013 Heute gilt es ein Projekt auszuwählen und in Gruppen von 2 bis 4 Studenten zu bearbeiten. Für alle Projekte gilt, dass sie am Montag um 10 Uhr c.t. vorzustellen sind, inklusive einer kleiner Demo- Vorführung und einem kurzen Code Review. Ihre Projekte müssen alle als cabal-projekt vorliegen und am Montag als Tarball-Archiv (.tar.gz /.tgz) abgegeben werden. Sie können ein solches Archiv mit Hilfe des Befehls cabal sdist herstellen. Orientieren Sie sich an den vorhandenen Beispielen auf der Homepage und den erfolgreichen 1. Projekten. Sollten Sie Fragen zu Cabal oder GHC haben, konsultieren Sie bitte das entsprechende Benutzerhandbuch: The Glorious Glasgow Haskell Compilation System User s Guide http://www.haskell.org/ghc/docs/7.6.3/html/users_guide/ Cabal User Guide http://www.haskell.org/cabal/users-guide/ Am Freitag findet keine Sitzung in der Uni statt. Es steht Ihnen und Ihrem Team frei einen oder mehrere Termine zu wählen und sich an einem von Ihnen gewählten Ort zu treffen. Wir erwarten durchaus, dass sie insgesamt wenigstens 8 Stunden in die Projekte investieren.

Write Yourself A Scheme in 48 Hours Erstellen Sie unter Anleitung von Wikibooks ihren eigenen Scheme-Interpreter 1. 1 http://en.wikibooks.org/wiki/write_yourself_a_scheme_in_48_hours 2

Brainfuck Interpreter und Compiler Schreiben sie einen Brainfuck Interpreter und Compiler. 3

Decaffeinated Java Schreiben Sie ganz im Stil von CoffeeScript 2 für JavaScript einen Transpiler für eine von ihnen erdachte Programmiersprache Green Tea (oder wie auch immer Sie ihr Projekt nennen wollen), die nach Java kompiliert. Sie können für dieses Projekt das Package language-java 3 zu Hilfe nehmen! 2 http://coffeescript.org/ 3 http://hackage.haskell.org/package/language-java 4

Ihre eigene Programmiersprache Orientieren Sie sich für dieses Projekt an der heute vorgestellten WHILE-Programmiersprache. 5

GUI Chat Programmieren sie einen grafischen Chatraum. Sie müssen hierfür keinen Server bauen sondern können den in der Vorlesung dargestellten Chat-Server verwenden. Sie müssen lediglich einen Chat-Client bauen, der die gezeichneten Formen an den Server sendet und empfangene Formen zeichnet. Sie benötigen hierfür die Funktionen des Pakets Graphics.Gloss.Interface.IO.Game Dieses Paket bietet die Funktion playio an, die es ihnen erlaubt IO-Aktionen zu benutzen um die Welt zu aktualisieren und Ereignisse zu behandeln. Gehen Sie kleinschrittig vor: 1. Entwickeln Sie zunächst eine kleine Anwendung in der man beispielsweise Kreise durch point and click setzen kann. Verwenden Sie zunächst play aus dem Paket Graphics.Gloss.Interface.Pure.Game. 2. Erweitern Sie nun Ihren Canvas auf dem Sie Kreise zeichnen können indem sie play durch playio austauschen und ihre Funktionen dergestalt modifizieren, dass sie einen monadischen return-wert haben (siehe Signaturen von play vs. playio). 3. Sie kennen bereits den ChatServer und den ChatClient Netcat. Sie müssen nun an Stelle von Textnachrichten Koordinaten über den ChatServer versenden. Sie müssen den Server hierfür nicht modifizieren. Es sollte sich jetzt auch erschließen, warum Ihre playio Funktion monadisch ist: Sie wird Nachrichten aus dem Netzwerk lesen und empfangen. Hinweise: Überlegen Sie sich welche Datentypen sie verwenden! (Orientieren Sie sich an dem Bouncing Balls Beispiel)? Welcher Datentyp symbolisiert ihre Welt Es ist hilfreich wenn Sie ihre Datentypen automatisch in einen String überführen können und aus einem String auslesen, um sie dann über den ChatServer (der ja Textnachrichten verarbeitet) zu verschicken und zu empfangen. Hierfür empfiehlt es sich die Typklassen Read und Show zu implenentieren. Das kann der Compiler glücklicherweise automatisch: data World = World { objects :: [Object] } deriving (Eq, Show, Read) 6

Schiffe versenken Programmieren Sie eine Schiffe versenken Anwendung in der man Schiffe versenken über das Netwerk spielen kann. Implementieren Sie ein Spielfeld der Größe 10x10. Lesen Sie für dieses Projekt auch die Hinweise zu dem Projekt GUI Chat und Game of Life. Das Spiel soll ausschließlich für zwei Spieler konzipiert sein, die über eine Netzwerkverbindung miteinander spielen; ein Mehrspielermodus über einen Rechner ist nicht notwendig. Gehen Sie kleinschrittig vor: 1. Lesen Sie die Hinweise GUI Chat und Game of Life. 2. Machen Sie sich klar, wie das Spiel grob abläuft: Welche Spielphasen sind involviert, wie startet das Spiel, wer fängt an, wann endet das Spiel? Sie können sich zum Beispiel eine kleine Grobskizze anfertigen, die Aktivitäten während einer Schiffe-Versenken- Runde visualisiert. 3. Welche Informationen beschreiben den aktuellen Spielzustand, welche Informationen müssen Sie über das Netzwerk vermitteln? 4 Welche Nachrichten müssen Sie dafür unterscheiden, wann muss ein Spieler auf den anderen warten? 4. Sie können zunächst das Schiffe-Versenken-Protokoll fertig stellen und zwischen zwei Klienten ohne eigene Gloss-Oberfläche (z.b. über das Terminal) testen. 5. Überlegen Sie sich dann, welche Informationen Sie zeichen müssen und implementieren Sie eine Gloss-Oberfläche für Ihr Spiel. 4 Denken Sie an die Verwendung von show- und read-funktion! 7

Osmos 8

Exception: Pacman.simplex: openfile: does not exist (No such file or directory) 9