Button einzelnen Clients zuweisen + OnKeyEvent



  • Hey,

    also ich habe eine Form mit 2 Buttons drauf. Nun wollte ich, dass man diese Buttons über's Netzwerk steuern kann. Lokal wär's ja gar kein Problem, einfach mit KEY's prüfen welche Taste gedrückt wurde und dann in die entsprechende Richtung.
    Allerdings gibt es über's Netzwerk einige Probleme.
    Zu erst dachte ich, wenn ein Client z.B. nach Links drückt wird dann an den Server "links" geschickt, der das dann wiederum an alle anderen Clients weiterschickt, die dann den Befehl ausführen.
    Aber, da ist mir aufgefallen, es wird ja jedesmal Button1 bewegt, ich möchte aber, das jeder Client seinen eigenen Button bekommt. Wie bekomme ich das denn hin??

    Beispiel:

    2 Buttons sind auf der Form, es verbindet sich der 1. Client, er soll nun Button1 steuern können, dann kommt der 2. Client hinzu und er soll wiederrum Button2 steuern können. Irgendeine Idee?

    Edit: Meine 2. Frage: Wieso funktioniert das "OnKeyDown" Event nicht bei der Form? Wenn ich es auf der Form mache, passiert nichts, nur wenn ich das OnKeyDown Event z.B. auf ein Editfeld leg, geht es.



  • Hallo

    😕
    Mit welchen Mitteln schickst und empfängst du was für Daten?
    Und was hat OnKeyDown mit Netzwerk und Buttons zu tun?

    bis bald
    akari



  • Ich schicke die Daten mit den normalen Serversocket- und Clientsocketkomponenten.

    Und KeyDown ist doch dafür da, dass ich die Buttons in die jeweilge Richtung verschieben kann, linke Taste = nach links, und das eben über's Netzwerk 😉



  • Hallo

    sorry aber ich kenne keine Funktion Schicke_Button_nach_links_an_Rechner(button,zielrechenr)

    also bitte sag doch mal genau was du wie sendest. Zum Beispiel mit einem passenden Quellcode-Auszug.

    bis bald
    akari



  • Naja, Button verschieben = Button1->Left -= 10. Das wären dann 10 Pixel nach links.

    // Client Send #############
    // Hier habe ich Edit, weil das über die Form wie gesagt nicht geht ...
    void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
        switch (Key)
        {
            case VK_LEFT : ClientSocket1->Socket->SendText("left");
                           break;
          //usw.
        }
    }
    
    // ######### On Read
    void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
          TCustomWinSocket *Socket)
    {
        // Der erhaltene Text wird dann verglichen und der entsprechnde Code             //ausgeführt
        rec_text = Socket->ReceiveText();
        if (rec_text == "left")
            Button1->Left -= 10;
        if (rec_text == "right")
            Button1->Left += 10;
        if (rec_text == "up")
            Button1->Top -= 10;
        if (rec_text == "down")
            Button1->Top += 10;
    }
    


  • Kann doch nicht sein, dass es das nicht gibt oder? Ich mein bei einem Internetspiel hat ja auch jeder seine eigene Spielfigur.


Anmelden zum Antworten