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 PresentationTRANSCRIPT
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)