Einzelnen Beitrag anzeigen

.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#39

Re: Pokerprojekt realisierung

  Alt 7. Apr 2007, 20:27
Ok, wahrscheinlich hast du Recht und ihc bin auch shcon ziemlich durcheinander im Projekt. Das liegt einfach daran, dass am Anfang viele Dinge nicht mit bedacht werden und die dann hinterher füchtig eingesetzt werden!
Ich denke ich schriebe die Units nochmal neu und ordentlich!

Zu der Sache mit dem Controller. Also nur der Server kennt den Controller!
Wenn ein Spieler setzt, schickt er eine Nachricht an den Server, zB:
'Bet[600]' ---> 600setzen
Wenn der Server das empfängt, soll er den Controller benachrichtigen, dass er die procedure Bet aufruft!
Dann kann der Controller aber nichtmehr den Server benachrichtigen, wenn er die procedure ausgeführt hat, weil er den Server ja nicht in den Uses hat!

Ich weiss nun wie ich über-kreuz-uses machen kann, aber ich will es garnicht, will mein Projekt ja hinterher ordentlich haben!

Was hälst du denn davon wie ich die Nachrichten schicke und auswerte?
Ich schreib hier ma n paar Zeilen dazu:
Delphi-Quellcode:
SendText('Call'); //wär zB ein einfacher Call
SendText('SGeld(1)[1500]'); //würde zB das Geld von Spieler 1 auf 1500 setzen
Ansatz so richtig oder Verbesserungsvorschlag?

Zur Auswertung hab ich mir ne Funktion geschrieben, der ich einen String und zwei Zeichen geben kann, und die dann den Substring zwischen den beiden Zeichen ausgibt.
Sieht dann zB so aus:
Delphi-Quellcode:
function TMyClient.Klammern(Value, Search1, Search2: String): String; //eben genannte Funktion
begin
  Result := Copy(Value, Pos(Search1, Value) + 1, Pos(Search2, Value) - Pos(Search1, Value) - 1);
end;


procedure TMyClient.Parse_Text(Value: String); //hier wird dann der Text ausgewertet, hoffe das ist einigermassen verständlich!
var
  temp: String;
begin
  temp := Copy(Value, 0, Pos('[', Value) - 1);
  if temp = 'CBetthen //CBet wird geändert
    CBet := StrtoInt(Klammern(Value, '[', ']'));
  if temp = 'Phasethen //Phase wird geändert
    Phase := StrtoInt(Klammern(Value, '[', ']'));
  if temp = 'SBlindthen //SBlind wird geändert
    SBlind := StrtoInt(Klammern(Value, '[', ']'));
  if temp = 'Dealerthen //Dealer wird geändert
    Dealer := StrtoInt(Klammern(Value, '[', ']'));
  if temp = 'AktiverSpthen //AktiverSp wird geändert
    AktiverSp := StrtoInt(Klammern(Value, '[', ']'));
  if temp = 'Potthen //Pot wird geändert
    Pot := StrtoInt(Klammern(Value, '[', ']'));
  if temp = 'ClientNumberthen //ClientNr wird zugewiesen
    ClientNr := StrtoInt(Klammern(Value, '[', ']'));
  if temp = 'Startthen //Spielstatus
    if Klammern(Value, '[', ']') = 'Truethen
      Start := True
    else
      Start := False;
end;
Gibts da eigentlich ne schönere/bessere Möglichkeit als diese tausend if-Abfragen?


Und dann hab ich da noch ein Problem:
Der Server schickt oft soviele Nachrichten nacheinander, dass der Server beim auswerten die Nachrichten durcheinander bringt, wie kann ich das verhindern?


Danke für die Hilfe und hoffe ich hab nix vergessen, aber jetzt muss mein Hund raus
  Mit Zitat antworten Zitat