VirtualPatt 2000 Interaktives 3D-Schachspiel unter Verwendung von C++ und OpenGL Präsentation von...

Post on 06-Apr-2015

106 views 0 download

Transcript of VirtualPatt 2000 Interaktives 3D-Schachspiel unter Verwendung von C++ und OpenGL Präsentation von...

VirtualPatt 2000VirtualPatt 2000

Interaktives 3D-SchachspielInteraktives 3D-Schachspielunter Verwendung von C++ und OpenGLunter Verwendung von C++ und OpenGLPräsentation von C. Steller, F. Caspar und Präsentation von C. Steller, F. Caspar und

C. BrählerC. Brähler

11.04.23 2virtualpatt2000.de

VirtualPatt 2000VirtualPatt 2000

Vorstellung des ProjektesVorstellung des Projektes OpenGL in der AnwendungOpenGL in der Anwendung besondere Herausforderungenbesondere Herausforderungen Software-EngineeringSoftware-Engineering DemonstrationDemonstration

11.04.23 3virtualpatt2000.de

InternetauftrittInternetauftritt

11.04.23 4virtualpatt2000.de

funktionale Projektzielefunktionale Projektziele

3D-Schachspiel mit GUI3D-Schachspiel mit GUI Unterstützung einer KI-LogikUnterstützung einer KI-Logik zahlreiche Animationenzahlreiche Animationen Ausleuchtung / LichteffekteAusleuchtung / Lichteffekte SoundeffekteSoundeffekte

11.04.23 5virtualpatt2000.de

technische Projektzieletechnische Projektziele

Entwicklung in C++Entwicklung in C++ saubere Abbildung im OO Paradigmasaubere Abbildung im OO Paradigma Graph. Darstellung mit QT / Graph. Darstellung mit QT /

OpenGLOpenGL PlattformunabhängigkeitPlattformunabhängigkeit Einbindung einer externen Schach-Einbindung einer externen Schach-

EngineEngine

11.04.23 6virtualpatt2000.de

VirtualPatt 2000VirtualPatt 2000

11.04.23 7virtualpatt2000.de

Graphical User InterfaceGraphical User Interface

C++ GUI libraryC++ GUI library PlattformübergreifendPlattformübergreifend Viel genutztViel genutzt GPL (unter anderem)GPL (unter anderem) OpenGL-OpenGL-

UnterstützungUnterstützung Gute DokumentationGute Dokumentation

11.04.23 8virtualpatt2000.de

VirtualPatt 2000 GUIVirtualPatt 2000 GUI

MenüMenü OpenGL „Widget“OpenGL „Widget“ TextlabelTextlabel TextfeldTextfeld

11.04.23 9virtualpatt2000.de

ModellingModelling

11.04.23 10virtualpatt2000.de

ModellingModelling

11.04.23 11virtualpatt2000.de

ModellingModelling

11.04.23 12virtualpatt2000.de

ModellingModelling

11.04.23 13virtualpatt2000.de

ModellingModelling

11.04.23 14virtualpatt2000.de

SchachlogikSchachlogik

Schachfeld in 12x10 DarstellungSchachfeld in 12x10 Darstellung0

21

98

119

11.04.23 15virtualpatt2000.de

SchachlogikSchachlogik

ZugvalidierungZugvalidierung0

21

98

119

11.04.23 16virtualpatt2000.de

SchachlogikSchachlogik

ZugvalidierungZugvalidierung0

21

98

119

11.04.23 17virtualpatt2000.de

SchachlogikSchachlogik

ZugvalidierungZugvalidierung0

21

98

119

11.04.23 18virtualpatt2000.de

SchachlogikSchachlogik

„„Sonderfälle“Sonderfälle“ kurze Rochade kurze Rochade lange Rochadelange Rochade Bauernzug zu BeginnBauernzug zu Beginn

11.04.23 19virtualpatt2000.de

SchachlogikSchachlogik

Universal Chess Interface (UCI)Universal Chess Interface (UCI) offenes Protokolloffenes Protokoll regelt Kommunikation zwischen Engine regelt Kommunikation zwischen Engine

<-> GUI<-> GUI z.B. in ChessBase, Fritz, Shredder, …z.B. in ChessBase, Fritz, Shredder, …

Interprozeßkommunikation (IPC)Interprozeßkommunikation (IPC) kommunizieren mit fremden Threadskommunizieren mit fremden Threads möglich durch LibExecStreammöglich durch LibExecStream

11.04.23 20virtualpatt2000.de

SchachlogikSchachlogik

ShredderChessShredderChess UCI-UnterstützungUCI-Unterstützung sehr starke Enginesehr starke Engine für Mac OS, Linux für Mac OS, Linux

und Windows und Windows verfügbarverfügbar

11.04.23 21virtualpatt2000.de

Animationen/EffekteAnimationen/Effekte

AnimationenAnimationen FalltürFalltür RaketeRakete wegbröckelnder Bodenwegbröckelnder Boden AmboßAmboß FahrstuhlFahrstuhl

11.04.23 22virtualpatt2000.de

Animationen/EffekteAnimationen/Effekte

EffekteEffekte TeleportierenTeleportieren Spalten- / FelderausleuchtenSpalten- / Felderausleuchten

11.04.23 23virtualpatt2000.de

KamerafahrtenKamerafahrten

Die Idee:Die Idee: aktives Kameraverhaltenaktives Kameraverhalten dynamische Kamerafahrtendynamische Kamerafahrten Zusatzfahrten am Anfang und im Stand-Zusatzfahrten am Anfang und im Stand-

ByBy

11.04.23 24virtualpatt2000.de

KamerafahrtenKamerafahrten

Die Umsetzung:Die Umsetzung: Implementierung der Kamera-KlasseImplementierung der Kamera-Klasse „„idleCall“ setzt aktuelle SichtidleCall“ setzt aktuelle Sicht Klassen-Methoden starten neue Sicht-Klassen-Methoden starten neue Sicht-

MutationMutation vollständige Kapselungvollständige Kapselung

11.04.23 25virtualpatt2000.de

SoundSound

PlattformunabhängiPlattformunabhängigg

LGPLLGPL CC Viel genutztViel genutzt Anlehnung an Anlehnung an

OpenGLOpenGL

11.04.23 26virtualpatt2000.de

FrameworkFramework

Allgemeiner ÜberblickAllgemeiner Überblick komplett objektorientierter Aufbaukomplett objektorientierter Aufbau 33 Klassen33 Klassen 4 Pakete4 Pakete 6000 Zeilen Code (mit Kommentaren)6000 Zeilen Code (mit Kommentaren)

11.04.23 27virtualpatt2000.de

FrameworkFramework

Objektorientierter AufbauObjektorientierter Aufbau Pakete GUI, Engine, Exceptions und Pakete GUI, Engine, Exceptions und

InterfacesInterfaces ModularitätModularität Verwendung von Design PatternsVerwendung von Design Patterns

Ablaufsteuerung der KomponentenAblaufsteuerung der Komponenten TimerTimer SynchronisationsklasseSynchronisationsklasse

11.04.23 28virtualpatt2000.de

FrameworkFramework

SzenegrafSzenegrafChess

Control

Background

Board

Field 1 Field 120

Animation

Figure

. . .

11.04.23 29virtualpatt2000.de

VirtualPatt 2000VirtualPatt 2000

DemonstrationDemonstration

11.04.23 30virtualpatt2000.de

VirtualPatt 2000VirtualPatt 2000

Danke fürs Zuhören !Danke fürs Zuhören !