Grundlagen einer interaktiven Anwendung
nils lindemann
- programmiertechnik
0 Mathias Bigge0 Nils0 wahsaga0 Mathias Bigge
Einen schönen guten Abend an alle !
Ich hoffe, ich habe das richtige Forum gewählt, denn meine Frage ist etwas speziell!
Ich möchte für unseren Club eine Anwendung programmieren, bei der zwei Spieler online eine Partie Schach spielen, und zwar in Echtzeit, wie z.b. auf pogo oder im Internet Chess club (ICC). Ich will das hauptsächlich aus autodidaktischen Gründen tun, um so mehr über Anwendungs-/Webprogrammierung anhand einer eigenen Applikation zu lernen ( Mitarbeiterdatenbanken u.ä. sind sicher auch sehr spannend, aber ich mag Schach sosehr.. ), und um unsere Clubmitglieder zu beeindrucken ;-). Nun will ich mich über Grundlagen schlau machen, habe aber noch keine genaue Idee, nach welchen Stichpunkten ich am besten suchen soll. Ich kenne mich zwar gut mit javascript und Html und ein bisschen mit Java, Perl und php aus, bin aber (noch) kein Experte..
Also die Oberfläche (in perl::TK ?!) zu programmieren, traue ich mir zu.
Hauptsächlich interessiert mich die Art und Funktionsweise der Datenübertragung zwischen beiden Clients, über welches Protokoll man kommuniziert, ob hierbei ein externer Server als Vermittlung nötig ist, oder ob das auch als Direktverbindung zwischen beiden Clients funktioniert (fände ich besser). Auch wie man das während der Programmierung offline testet ist interessant. (Brauche ich dazu zwei Computer?!)
Ich stelle mir das Prinzip so vor: auf einer zentralen Seite, die ständig über einen Server aktualisiert wird, sind aktuelle Spielangebote aufgelistet (vielleicht gibts auch eine Chat-funktion). hier kann man ein Angebot annehmen, oder eine Partie posten (mit freier Wahl der Bedenkzeit). Wenn zwei Spieler sich dann "gefunden" haben, wird eine Client-Client-Applikation gestartet, die den Server nicht belastet. Am Ende der Partie wird die Applikation wieder zerstört.
Sehe ich das so richtig? Und wenn ja, wer hat Tipps/Stichwörter, betreffend der Details einer solchen Anwendung, oder Adressen/andere Foren/tutorials, wo ich mich schlauer machen kann?
können wirklich nur Stichwörter sein, Ich bombardiere die Suchmaschinen dann damit..
mit welche Programmiersprache sollte ich das am besten realisieren? Ich tendiere zu Perl (so wird es im ICC gehandhabt, dort lädt man sich eine Interface runter) - Perl wäre mir am liebsten, wegen: umsonst ;-), ich möchte mir dann einen eigenen Server einrichten, über den das läuft. Alternativ überlege ich an Java, oder wäre VB oder gar Flash die bessere Wahl? Ich hab XAMPP von apachefriends und das aktuelle jdk von sun schon auf dem Rechner installiert.
Ich hoffe ich habe das Thema gut beschrieben. Über Infos von euch würde ich mich freuen. Danke im Voraus. Nils
Hi nils,
als alter Schacher verstehe ich Deinen Plan natürlich sehr gut, habe aber nur wenig Ahnung, wie man ihn realisieren kann. Das Spielfeld und die Figuren werden normalerweise als Java-Applet gebaut, warum das so ist, weiß ich nicht. Ebenfalls vom Hörensagen habe ich, dass man, um Ressourcen zu sparen die Züge so erfasst, dass jeweils von links der erste mögliche Zug eine eins bekommt usw. nach bestimmten Regeln. Ob das heute noch ein Thema ist, weiß ich nicht. Was auch nicht ganz ohne sein dürfte, sind:
a) die Umwandlung
b) die Überprüfung der Regeln.
Was ich sicher weiß, ist, dass es zahlreiche Uni-Projekte in dieser Richtung gab. Vielleicht googelst Du mal danach. Die eigentlich Speicherung der Züge dürfte wohl kaum ein Problem sein, eher ihre Umsetzung in die Graphik, etwa vorwärts und rückwärts klicken durch die Partie.
Viele Grüße
Mathias Bigge
(FS98 Dortmund)
[Antwort auf Mathias Bigges Posting]
Ich hab tatsächlich mal in Javascript eine Oberfläche gemacht, die ein Schachbrett anzeigte. Züge konnten - etwas umständlich durch Klick auf Ausgangs/Zielfeld ausführen, und valide Züge wurden angezeigt. Ich werd das mal optimieren und ins Netz stellen, sag dir dann bescheid, dan kannste mal sehen :-)
Das mit der Erfassung der Züge ist tatsächlich ein interessantes Thema. Mit dem Programm Chessbase 8.0 kann man Partien in eine Html-Seite + Javascript formatieren lassen, wo man dann die entsprechende Stellung angezeigt bekommt, wenn man in die Notation klickt.
Dasselbe - sogar noch ausgeklügelter, z.B. mit integriertem Java-Schach-Analyseprogramm - kann man sich auch unter www.mailchess.de als Freeware unter dem Namen PGNtoJS runterladen (Schachpartien im PGN-Format werden in Javascript-Seiten formatiert).
Ich hab mir mal den Quelltext dieser Scripte angesehen, um das Schema zu verstehen, aber bin nicht so recht schlau draus geworden..da wurde auch mit Bitverschiebung operiert Ich hatte nämlich mal an einem Forum überlegt, wo man zusätzlich zum Text auch Varianten angeben kann, die dann im Posting visuell nach dieser Struktur ausgegeben werden, aber das mache ich später mal...wenns das denn nicht schon gibt!
Was mich eigentlich interessierte, war die Frage, woher denn eine solche Anwendung weiss, dass sie auf Informationen warten muss (nämlich welchen Zug der Gegner gemacht hat, oder ob der Gegner was gesagt hat), und woher diese Informationen kommen müssen.
Ich bin nämlich eher der visuelle Typ, ich kapier alles was blinkt und sich bewegt, recht gut ;-) , aber über welchen Port, mit welchem Protokoll, sich was in welcher Form bewegt und wie man das beschleunigt, scheint mir ein komplexes Thema zu sein..
Das Problem ist ja, wenn man so ein Programm schreibt, und es funktioniert nicht, woher weiss man dann, ob es ein Fehler im Code ist, oder ob mit der Übertragung etwas schiefgelaufen ist, oder ob z.B. der Server falsch konfiguriert wurde, oder ob einfach versehentlich Javascript enabled wurde, usw, usw.. Immerhin lob ich mir die Fehlermeldungen, die z.B. Apache ausgibt.. Nützlich.
Jedenfalls danke für deinen Eintrag, ich werd einfach nochmal ein bisschen stöbern, vielleicht finde ich ja noch was.. das ist ja auch ein komplexes Ding, so eine Anwendung, Ich werde da etwas Geduld haben müssen.
Lasse von mir hören, wenn ich erfolgreich war.
Nils
hi,
[Antwort auf Mathias Bigges Posting]
ach, echt ...?
Was mich eigentlich interessierte, war die Frage, woher denn eine solche Anwendung weiss, dass sie auf Informationen warten muss (nämlich welchen Zug der Gegner gemacht hat, oder ob der Gegner was gesagt hat), und woher diese Informationen kommen müssen.
HTTP ist ein zustandsloses protokoll, kann also von sich aus gar keine neuen informationen zum client bringen (PUSH).
stattdessen muss der client die evtl. neuen informationen wieder vom server anfordern (PULL) - und bei so einem vorhaben wie deinem vermutlich ziemlich regelmässig.
wie mathias schon sagte, kommen in solchen situationen oft java-applets in frage - weil diese auch andere protokolle implementiert haben könne, so das auch ein echter serverseitiger PUSH der neuen informationen möglich wäre.
und mit flash müsste das m.E. auch gehen.
aber genauer habe ich mich damit bisher nicht beschäftigt.
gruß,
wahsaga
Hi Nils,
Ich hab tatsächlich mal in Javascript eine Oberfläche gemacht, die ein Schachbrett anzeigte. Züge konnten - etwas umständlich durch Klick auf Ausgangs/Zielfeld ausführen, und valide Züge wurden angezeigt. Ich werd das mal optimieren und ins Netz stellen, sag dir dann bescheid, dan kannste mal sehen :-)
Interessant. Ja, die Eingabe nur durch Klick auf das Zielfeld als ChessBase-Feature dürfte nicht ganz ohne sein. Es muss ja anhand der Regeln überprüft werden, welche Züge möglich sind und wie man mit dem Klick umgeht, wenn es mehrere sind. Zweimal klicken finde ich aber zumutbar.
Was mich eigentlich interessierte, war die Frage, woher denn eine solche Anwendung weiss, dass sie auf Informationen warten muss (nämlich welchen Zug der Gegner gemacht hat, oder ob der Gegner was gesagt hat), und woher diese Informationen kommen müssen.
Wahsaga hatte es schon gesagt, der Haken bei JS dürfte darin liegen, dass es wohl keinen Weg gibt, Veränderungen auf dem Server automatisch zu registrieren. Deshalb dürfte JS nur für Anwendungen in Frage kommen, die auf solche Nachrichten nicht angewiesen sind.
Jedenfalls danke für deinen Eintrag, ich werd einfach nochmal ein bisschen stöbern, vielleicht finde ich ja noch was.. das ist ja auch ein komplexes Ding, so eine Anwendung, Ich werde da etwas Geduld haben müssen.
Lasse von mir hören, wenn ich erfolgreich war.
Finde ich interessant. Ist das ChessBase-Partienformat eigentlich von denen völlig freigegeben? Es iseht fast so aus, aber dann müsste es auch irgendwo dokumentiert sein, denke ich.
Viele Grüße
Mathias Bigge