Reversi: Suche und GUI



Ähnliche Dokumente
Anleitung über den Umgang mit Schildern

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Erstellen der Barcode-Etiketten:

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller


ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Objektorientierte Programmierung. Kapitel 12: Interfaces

Feiertage in Marvin hinterlegen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Übungen zur Softwaretechnik

Internet online Update (Internet Explorer)

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

SharePoint Demonstration

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Übungen Programmieren 1 Felix Rohrer. Übungen

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Es gibt zwei Wege die elektronischen Daten aus Navision zu exportieren.

Datensicherung und Wiederherstellung

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Kleines Handbuch zur Fotogalerie der Pixel AG

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

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Erklärung zum Internet-Bestellschein

PC-Umzug: So ziehen Sie Ihre Daten von Windows XP nach Windows 8 um

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Formale Sprachen und Grammatiken

Visualisierung auf Büro PC s mit dem ibricks Widget

Das BANK-now Finanzierungsmodul.

Outlook Vorlagen/Templates

Programmieren in Java

Was meinen die Leute eigentlich mit: Grexit?

How to do? Projekte - Zeiterfassung

Neuerungen PRIMUS 2014

Professionelle Seminare im Bereich MS-Office

Programmierkurs Java

Updatehinweise für die Version forma 5.5.5

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Treffpunkt Internet Reutlingen, B.Schüle 1

Java: Vererbung. Teil 3: super()

FIS: Projektdaten auf den Internetseiten ausgeben

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Festplatte defragmentieren Internetspuren und temporäre Dateien löschen

Datensicherung. Beschreibung der Datensicherung

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Tevalo Handbuch v 1.1 vom

SANDBOXIE konfigurieren

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Zwischenablage (Bilder, Texte,...)

SJ OFFICE - Update 3.0

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

eduvote Ein Umfragesystem für Lehrveranstaltungen - PowerPoint Add-In -

Zunächst ist dieser Service nur für Mac OS verfügbar. Drucken unter Windows wird Ihnen im Laufe des Semesters zur Verfügung stehen.

System-Update Addendum

Handbuch zum Excel Formular Editor


Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

YouTube: Video-Untertitel übersetzen

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Computeria Solothurn

MPDS4 EXAMPLE DATENBANK

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Techniken der Projektentwicklungen

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

Lizenz-Server überwachen

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Statuten in leichter Sprache

GEONET Anleitung für Web-Autoren

Professionelle Seminare im Bereich MS-Office

Workshop: Eigenes Image ohne VMware-Programme erstellen

OUTLOOK-DATEN SICHERN

Die Invaliden-Versicherung ändert sich

Windows XP Jugendschutz einrichten. Monika Pross Molberger PC-Kurse

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Portfolio: "Die Ratten" von Gerhart Hauptmann

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Lernwerkstatt 9 privat- Freischaltung

Die Windows 7 Sicherung im Detail

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

Grundfunktionen und Bedienung

Idimager ein Bildverwaltungsprogramm-DAM Software

Transkript:

Reversi: Suche und GUI Plenum Programmierpraktikum 2006-12-21

Probeturnier Bis Ende des Jahres: Wir stellen offiziellen Server zur Verfügung. Montag, 8.1.2007: Erstes freiwilliges Turnier. Wer teilnehmen will: Bis Freitag davor dem Tutor eine JAR-Datei geben. Zeitlimit: 60 Sekunden. 1

Forums-Thread Änderungen am PlayerInterface stören nicht bei der Aufgabe, sie sind die Aufgabe. Reagieren auf neue Erkenntnisse ist praxisnah und wichtig (und kann auch in Zukunft noch vorkommen). Auch XP setzt auf inkrementelles Entwickeln mit Feedback und nicht auf den einmaligen großen Wurf. Das Interface selbst kann beliebig geändert werden (Exceptions werfen lassen etc.), so lange die Server- und Client-Implementierungen das Protokoll einhalten. Lösung in anderen Programmiersprachen als in Java: gerne, dann wird aber ausser Konkurrenz mitgespielt. Zudem müsst ihr mit Eurem Tutor abklären, wie und ob er Eueren Spieler starten kann. 2

Zeitbeschränkung: Iterative Deepening Pro Durchlauf wird der bisherige Baum um eine Ebene verlängert. Lege momentan bestes Ergebnis an einer geteilten Stelle ab. Ein separater Thread wacht nach dem Zeitlimit auf und liefert dieses Ergebnis an den Server zurück. 3

Bewertungsfunktion Mehr Kunst als Wissenschaft. Nutze Beobachtungen über gutes Spielen: Stabilität: Stabil sind Steine, die nicht mehr umgedreht werden können. Mobilität sagt aus, wie viele Zugmöglichkeiten ein Spieler hat. 4

Stabile Steine und Mobilität 5 Weiss hat viele stabile Steine. Schwarz hat geringe Mobilität.

X- und C-Felder C C C X X C Stabile Steine wachsen von der Ecke her. X- und C-Felder sind wichtig. Kanten sind wichtig. C X C X C C 6

Bewertungsfunktion Ideen: Kantenbewertung durch Tabellen. Mobilität bewerten Front mitberechnen. 7

Front Man kann neue Felder nur über Steine hinweg erreichen. Front-Stein: Einer der 8 Nachbarsteine ist leer. Zweck: Zur schnellen Berechnung legaler Züge: Nur Nachbarn gegnerischer Steine müssen überhaupt angesehen werden. Approximation für Mobilität. 8

Was ist die Front hier? 9

Front: alle bis auf einen Stein 10

Design Klassen verkörpern (reifizieren) konzeptuelle Dinge. Data-driven versus Responsibility-driven Design: Klassen können als Komponenten (Dienst-Erbringer) oder als Datenbehälter gesehen werden. Übliche Methode: Problem als Text beschreiben. Nomen werden Klassen, Adjektive werden Attribute, Verben werden Methoden. Mit der Zeit bekommt an ein inutitives Gefühl, was eine Klasse werden sollte und was nicht. Design-Patterns helfen manchmal als Vorbild. 11

CRC-Cards Responsibility-Driven Design-Methode. Classes, Responsibilities, Collaborations Pro Klasse: CRC auf eine Karteikarte schreiben. Im Team Szenarien durchspielen (jeder übernimmt eine Klasse). Klasse Responsibilities Collaborations 12

Coding 13

Enums java07: package enums Mit Enums bekommt man statisch überprüfte Indizes und Werte-Sammlungen. Standard-Konvertierung Von String: Enum.valueOf(str) Nach String: enumvalue.getname(), enumvalue.tostring() [Unterschied?] Von int: Enum.values()[myInt] Nach int: enumvalue.ordinal() Kompaktes Speichern von Enums: java.util.enumset 14

Menüs Cross-platform Menü-Taste: Control unter Windows und Linux, Command auf dem Mac. Lösung: Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() Sehr wiederholungsreicher Code. java07: menus.menus 15

Klassen versus Instanzen Klassen als Recheneinheit sind unter Java eher unpraktisch. Man kann keine Interfaces für Klassen definieren. Die Daten sind nur einmal vorhanden (je nach Anwendung ist das positiv oder negativ). Deshalb wird das Singleton-Pattern gerne verwendet. 16

Klassen versus Instanzen java07: package class instance Eine Public-Variable ist an sich nicht schlecht! Grund für die Private-Regel: Überwachung beim Setzen des Werts (JavaBeans!), leichte Änderung der Wahl zwischen berechneten und gespeicherten Werten. Letzterer Grund ist mit Refactoring sehr viel weniger wichtig. 17

Abstrakte Oberklassen Abstrakte Oberklassen sind wie ein Template, das man ausfüllen muss. Durch Schlüsselwörter wie abstract, final und protected kann man festlegen, was die Ausfüllenden dürfen und was nicht. java07: package inheritance 18

Sonstige Hilfsmethoden Wichtig für Unit-Tests: Methode equals(). Wer equals() überschreibt, muss auch hashcode() überschreiben: http: //www-128.ibm.com/developerworks/java/library/j-jtp05273. html java07: package util 19

Aufgaben 20

User-Stories Ant-Script erzeugt eine JAR-Datei reversi-xx.jar (XX = Gruppennummer), Hauptklasse ist der automatische Spieler. Server Erzwingt wahlweise(!) eine Zeitbeschränkung in Millisekunden. Grafische Benutzeroberfläche für den manuellen Spieler. Automatischer Spieler. Hält sich an Zeitbeschränkung. Wer will: Screencast mit der GUI (bis 16. Januar) 21

Was ist erlaubt? Im Zweifelsfall: nachfragen. Erlaubt: Vorausberechnen und ablegen in Dateien (die bei Spielstart gelesen werden). Verboten: alles, was den aktuellen Rechner verlässt (abgesehen von Server- Antworten). Beispiele: Verteiltes Rechnen. Denial of Service Attacken. 22

Links Man kann Java-Programme auf dem Mac sehr einfach wie eine normale Anwendung aussehen lassen (inkl. Verstecken der JAR-Datei hinter einer echten Anwendung): http://developer.apple.com/documentation/java/ Conceptual/Java14Development/07-NativePlatformIntegration/ NativePlatformIntegration.html Englischer Wikipedia-Eintrag: Verweis auf kleine Reversi-Bücher. Deutscher Wikipedia-Eintrag: Genauere taktische Ausführungen. CRC-Cards: http://www.dfpug.de/konf/konf_1998/02_oop/d_ crc/d_crc.htm 23