Tutorials
ISEYE - Web-Design, Programmierung, Digitale Werbung, Webhosting
User-Panel:
Name:
Passwort:
Eingeloggt bleiben
Registrieren
Passwort Vergessen?


Umfragen:
Welches Betriebssystem benutzt du?

Windows XP
Windows Vista
Apple Mac
Linux
Windows 7
Andere



1. Platz: Torsten
(10064 Punkte)

Website besuchen
[Mehr]

Am Meisten diskutiert:
Mysteriöse Lichter

Neueste Beiträge:
Es sind keine aktuellen Kommentare vorhanden.

Besucher Gesamt: 315311
Besucher Online: 9
Besucher Heute: 42
Besucher Gestern: 277
IP-Adresse: 54.224.75.101
Anzahl Kommentare: 601
Anzahl Bewertungen: 975
Anzahl Artikel: 239
Anzahl Benutzer: 58


Home -> Tutorials -> GameStudio Programmierung -> Entwurf eines Chat-Systems
Entwurf eines Chat-Systems
Hinzugefügt von Torsten am Dienstag, den 13.05.2008, 19:49 Uhr

Aktuelle Bewertung: Bewertung: 4.5Bewertung: 4.5Bewertung: 4.5Bewertung: 4.5Bewertung: 4.5 bei insgesamt 2 Bewertungen
(Schlecht) 1 2 3 4 5 (Gut)  

Dieses Tutorial soll erklären, wie es mit GameStudio möglich ist, ein einfaches Chat-System komplett selber zu enwerfen. Außerdem soll es helfen, ein grundlegendes Verständnis für Netzwerk-Programmierung zu erlangen.

Klicke auf Download, um das Projekt zum testen herunterzuladen.

Bevor es richtig los geht, widmen wir uns den schematischen Aufbau eines Chat-Systems.
Wichtig ist zu verstehen, wie ein Netzwerk-Programm funktioniert. Man muss sich die einzelnen Clienten als Personen vorstellen, die nicht direkt miteinander kommunizieren können. Sie benötigen dafür eine Person, die die Informationen an alle anderen weitergibt, den "Server".

Hier nun eine Übersicht, wie der Ablaufplan eines einfachen Chats aussieht.

Client Der Client verbindet sich mit dem Server
Client Der Benutzer gibt nun eine Chat-Nachricht ein.
Client Der Client sendet die eingegebene Nachricht (=String) an den Server
Server Der Server nimmt die empfangene Nachricht entgegen, und verteilt sie nun an alle Clienten
Client Alle Clienten erhalten nun die Nachricht vom Server (den zuvor eingegebenen Text), und geben diese aus

Dieser Aufbau zeigt das Grundprinzip. Gehen wir nun etwas näher auf den Server-Ablauf ein:

VorgangBenötigte Befehle
Ein Client baut eine Verbindung auf Startparameter für den Server:
-sv -port 2300 -sn chat
Es wird eine Nachricht vom Client erhalten und muss nun an alle gesendet werden send_string(string);
Ein Client trennt die Verbindung Keine (Wird automatisch durchgeführt)


Betrachten wir nun den Ablauf des Clienten etwas näher:

VorgangBenötigte Befehle
Es wird eine Verbindung zum Server aufgebaut Startparameter für den Clienten:
-cl -port 2300 -sn chat -ip xxx.xxx.xxx.xxx
Der Benutzer gibt einen String ein inkey(string);
Der String wird an den Server gesendet send_string(string);
Ein String wird empfangen; Dieser wird nun an den Nachrichten-Verlauf angehängt. str_cat(string1,string2);



Zwar kann man aus diesen Vorüberlegungen wohl eher noch kein Chat-System programmieren, doch geben diese bereits Anregungen, was noch auf uns zukommt. Ich habe hier einen einfachen Quelltext für den Server bereitgestellt und alle wichtigen Unterpunkte mit Kommentaren versehen:

string nachricht[100]; // Der String, der die Nachrichten enthält
string verlauf; // Der String, der den Nachrichtenverlauf enthält
string eingabe; // Der String, in den eine Nachricht eingegeben werden kann
string name="Irgendwer"; // Der String, der den Namen des Users beinhaltet

function main() // Die Hauptfunktion
{
fps_max=60; // Limitierung der FPS
while(1) // Eine Endlosschleife zum abfangen der Daten
{
if(str_cmp(nachricht,"")!=1) // Der Nachrichten-String ist nicht leer?!
{
send_string(nachricht); // Sende den Nachrichten-String an alle
str_cpy(nachricht,""); // Dann lösche den Inhalt daraus wieder
}
wait(1); // Warte 1 Frame (1/60 Sekunde)
}
}


Der Code des Clienten ist aufgrund der Anzeigen ein wenig umfangreicher:

string nachricht[100]; // Der String, der die Nachrichten enthält
string verlauf; // Der String, der den Nachrichtenverlauf enthält
string eingabe; // Der String, in den eine Nachricht eingegeben werden kann
string name="Irgendwer"; // Der String, der den namen des Users beinhaltet


function eingeben(); // Deklaration der Funktion "eingeben";
function main()
{
fps_max=60; // Limitierung der FPS
on_enter=eingeben; // Bei drücken von Enter ist es möglich, eine Nachricht einzugeben
screen_color=1; // Hintergrund Schwarz
while(1) // Endlosschleife zum Abfangen der Daten
{
if(str_cmp(nachricht,"")!=1) // Der Nachrichten-String ist nicht leer?!
{
str_cat(verlauf,"n"); // Füge dem Nachrichtenverlauf eine neue Zeile an
str_cat(verlauf,nachricht); // Und füge in diese Zeile die neue Nachricht
str_cpy(nachricht,""); // Dann lösche den Inhalt der Nachricht wieder
}
wait(1); // Warte 1 Frame (1/60 Sekunde)
}
}

function eingeben() // Die Eingabe-Funktion
{
inkey(eingabe); // Eingabe der Nachricht
str_cpy(nachricht,name); // Kopiere zunächst den Nicknamen in die Nachricht
str_cat(nachricht,": "); // Hänge nun ein : an
str_cat(nachricht,eingabe); // Und schließlich die eingegebene Nachricht
send_string(nachricht); // Nun sende die Nachricht an den Server
str_cpy(nachricht,""); // Nun lösche die Nachricht zunächst wieder
str_cpy(eingabe,""); // Und auch die Eingabe...
}

font meine_schrift="Lucida Console",0,12; // Deklaration der Schriftart
text nachrichten_text
{
font=meine_schrift;
pos_x=5;
pos_y=10;
string=verlauf; // Ausgabe des Nachrichtenverlaufs
flags=visible; // Standardmäßig sichtbar
}
text eingabe_text
{
font=meine_schrift;
pos_x=5;
pos_y=460; // Weit unten
string=eingabe; // Ausgabe der eingegebenen Nachricht
flags=visible; // Standardmäßig sichtbar
}

Inhalt Copyright © TSGames - 2013
PMS 1.67 (Professional Management System) ist ein Projekt von TSGames, Copyright © 2013