Von Tom Wehnert & Konstantin Preißer

Post on 13-Jan-2016

58 views 0 download

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

Anaconda

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)

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

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

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

(x/y)

Künstliche Intelligenz

• KI über Backtracking-Algorithmus (Tiefensuche)

(x/y)

Links(x/y)

(x-1/y)Links

(x-2/y)Rechts

(x/y)

Oben

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

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

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.

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

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

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'

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>

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)