Von Tom Wehnert & Konstantin Preißer

18
Anaconda Von Tom Wehnert & Konstantin Preißer

description

Von Tom Wehnert & Konstantin Preißer. Features: 4 Schwierigkeitsgrade Ein-/Zweispielermodus Künstliche Intelligenz Internet- Highscoreliste Replay-Funktion Musik über MIDI-Schnittstelle (noch in Arbeit). Von Tom Wehnert & Konstantin Preißer. Spielfeld. - PowerPoint PPT Presentation

Transcript of Von Tom Wehnert & Konstantin Preißer

Page 1: Von Tom Wehnert & Konstantin Preißer

Anaconda

Von Tom Wehnert & Konstantin Preißer

Page 2: Von Tom Wehnert & Konstantin Preißer

Anaconda

Von Tom Wehnert & Konstantin Preißer

Features:• 4 Schwierigkeitsgrade• Ein-/Zweispielermodus• Künstliche Intelligenz• Internet-Highscoreliste• Replay-Funktion• Musik über MIDI-Schnittstelle (noch in Arbeit)

Page 3: Von Tom Wehnert & Konstantin Preißer

Spielfeld

• Unterteilung in 40x30 Quadrate• Richtungsänderung mit linker und rechter Pfeiltaste• Speicherung der Schlangenposition in 2-dim. Feld• Je nach gewähltem Schwierigkeitsgrad Intervall von 400 ms,

200 ms, 100 ms oder 60 ms

3 2 14

0 1 2 3 4 5 x

0123

y feld[3][2] = 2

Page 4: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

(x-1/y) (x+1/y) (x/y-1) (x/y+1)

Links Rechts Oben Unten

Page 5: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

Page 6: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

Page 7: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)

Page 8: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

Page 9: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

(x/y)

Page 10: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

(x/y)

Oben

Page 11: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

(x/y)

Oben

(x-1/y-1)

Links

Page 12: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

(x/y)

Oben

(x-1/y-1)

Links

(x-2/y-1)Links

Page 13: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

(x/y)

Oben

(x-1/y-1)

Links

(x-2/y-1)Links

(x-3/y-1)Links usw.

Page 14: Von Tom Wehnert & Konstantin Preißer

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)• Jedoch: Exponentielle Laufzeit O(4x·y) bei immer gleicher

Reihenfolge der Pfade (Links – Rechts – Oben – Unten)• Deshalb: Pfade werden in Reihenfolge durchlaufen, die am

ehesten zum „Futter“ führt• Bei zunehmender Schlangenlänge (ca. 150) kann KI nicht immer

schnell einen Weg finden; Programm würde „hängenbleiben“. Deshalb: Multithreading

• KI-Thread bekommt Zeit für Wegsuche bis zum nächsten Spieltakt. Wenn bis dahin kein Weg gefunden wurde, wird Wegsuche abgebrochen und mit aktueller Richtung fortgefahren, danach wird Wegsuche erneut gestartet

Page 15: Von Tom Wehnert & Konstantin Preißer

Internet-Highscoreliste

• Programm verbindet sich über HTTP zu IIS-Webserver, auf dem eine ASP-Datei (mit VBScript bzw. JavaScript) mit einer Access-Datenbank interagiert

• ASP-Script kommuniziert mit Datenbank und schreibt Daten im Textformat in die Ausgabe bzw. erstellt neuen Eintrag

• Programm liest die Ausgabe wie Textdatei• URL: http://preisser.dynalias.org/dere1/anaconda/highscore.asp?anz=10

gibt die Top 10 der Highscore zeilenweise aus

ProgrammInternetverbindung, HTTP

ASP-SeiteMS Access-Datenbank

Webserver

Page 16: Von Tom Wehnert & Konstantin Preißer

Replay-Funktion

• Aufzeichnung der Richtungsänderungen und Futterpositionen in Textdatei

• Darstellung des Dateiformats in BNF (Backus-Naur-Form):

<Datei> ::= <DateiKennzeichnung> <Prüfsumme> <Diffy> <AnzahlSpieler> <Food> [{<TaktContainer>}]<Diffy> ::= '1' | '2' | '3' | '4'<AnzahlSpieler> ::= '1' | '2'<TaktContainer> ::= '!' <Takt><Takt> ::= [<R1>] [<R2>] [<Food>]<R1> ::= '1' <Richtung><R2> ::= '2' <Richtung><Richtung> ::= '1' | '2' | '3' | '4'<Food> ::= 'F' {<Ziffer>} ',' {<Ziffer>} '?'<Ziffer> ::= '0' ... '9'DateiKennzeichnung ::= 'AnacondaTomWehnertKonstantinPreisserReplayDatei'<Prüfsumme> ::= <Hex-Zahl> x 32<Hex-Zahl> ::= '0' | .. | '9' | 'a' | ... | 'f'

Page 17: Von Tom Wehnert & Konstantin Preißer

Replay-Funktion

• Aufzeichnung der Richtungsänderungen und Futterpositionen in Textdatei

• Beispiel:

AnacondaTomWehnertKonstantinPreisserReplayDatei7cc1d94f97f3e185350b8f137c33f86c22F38,2?!1323!!!!12!!!!!!!!!!!!22!23!22!23!1322F2,19?!24!11!21!!!!!!!!!!!!!!!!

<DateiKennzeichnung> <Prüfsumme> (MD5)

<Diffy> (Schwierigkeit)

<Food>…

<TaktContainer> (kann Elemente <R1>, <R2>, <Food> enthalten)

<AnzahlSpieler>

<R1><R2> <Food>

Page 18: Von Tom Wehnert & Konstantin Preißer

Musik über MIDI

• MIDI: Musical Instrument Digital Interface• Beschreibt Standard zur dynamischen Erzeugung von Tönen• MIDI-Interface in Java integriert

Sampled Audio (Wave, MP3, …):• Tonsignal wird abgetastet (z. B. 44,1 kHz) und Lautstärke wird gespeichert (Auflösung: 16 Bit)• Vorteil: Exakte Reproduktion des Audiosignals• Nachteil: Hohe Dateigröße

MIDI:• Es werden nur die zu erzeugenden Töne gespeichert (Tonhöhe, Dauer, Instrument usw.); • Audiosignal wird zur Laufzeit von Synthesizer erzeugt• MIDI: 16 Kanäle (Channel), jeder davon kann eines von 127 Instrumenten spielen• Vorteil: Geringe Dateigröße, dynamische Änderungen (Tempo, Tonhöhe usw.)• Nachteil: Je nach Synthesizer unterschiedlicher Klang; keine Wiedergabe von Geräuchen, Stimmen usw. möglich)