Clients sammeln in PodSixNet Server

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
spicer
User
Beiträge: 52
Registriert: Freitag 5. März 2021, 23:40
Kontaktdaten:

Hallo Gemeinde. Ich mal wieder mit Anfängerfragen ^^
Ich habe das Boxes-Game als Beispiel zur Hand genommen.

server.py

Code: Alles auswählen

class BoxesServer(PodSixNet.Server.Server):
 
    channelClass = ClientChannel
    def __init__(self, *args, **kwargs):
        PodSixNet.Server.Server.__init__(self, *args, **kwargs)
        self.players = WeakKeyDictionary()
        self.games = []
        self.queue = None
        self.currentIndex=0

    def Connected(self, channel, addr):
        print('new connection:', channel)
        self.AddPlayer(channel)
        if self.queue==None:
            self.currentIndex+=1
            channel.gameid=self.currentIndex
            self.queue=Game(channel, self.currentIndex)
        else:
            channel.gameid=self.currentIndex
            self.queue.player1=channel
            self.queue.player0.Send({"action": "startgame","player":0, "gameid": self.queue.gameid})
            self.queue.player1.Send({"action": "startgame","player":1, "gameid": self.queue.gameid})
            self.games.append(self.queue)
            self.queue=None
Das verbindet 2 Clients, sobald ein zweiter Client dazu kommt und startet das Spiel 1. Client 3 & 4 startet Spiel 2 usw.
Ich möchte aber nun Clients sammeln und diese dann selber ihren Gegner auswählen lassen.
Im Code-Schnipsel oben sind mir aber ein paar Dinge nicht ganz klar.
Wie ist channel.gameid zu verstehn? Ist das ein Tupel (1D Array)?
Ich müsste ja irgendwie die Clients in ein Array speichern, welches die Verbindung und Nickname enthält.
Aber zBsp self.userchannel[self.currentIndex] = channel funktioniert aber nicht.

Bin für jeden Rat dankbar und bitte habt Nachsicht, dass ich es mit vielen Profi-Ausdrücken nicht so habe.
Bitte möglichst einfach ausdrücken, auch wenn es vllt nicht ganz dem perfekten Programmierer-Latein entspricht ;)
Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
(Murphys Gesetz)
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@spicer: `channel.gameid` ist eine ganze Zahl, denn dort wird `self.currentIndex` zugewiesen, was mit einer 0 initialisiert und an anderer Stelle mit ``+= 1`` hochgezählt wird. Wenn man das am Code nicht erkennen kann, ist da auch immer die Möglichkeit strategische `print()`-Anweisungen einzufügen. Auch sinnvoll mit `type()` kombinierbar, wenn man den Typ eines Wertes ermitteln möchte.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
spicer
User
Beiträge: 52
Registriert: Freitag 5. März 2021, 23:40
Kontaktdaten:

Danke.
Also wäre
channel.0 dann der "Kanal zu einem User"."Index 0"
channel.1 dann der "Kanal zu einem User"."Index 1"
usw?
Ich verstehe diese Art mit dem Punkt dazwischen nicht ganz.
Nach was muss ich da Googeln, um ein Tutorial zu finden?
Nach einem Punkt ( . ) zu suchen ist sinnlos ;)
Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
(Murphys Gesetz)
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Klassen - bzw. Objektorientierte Programmierung
Benutzeravatar
spicer
User
Beiträge: 52
Registriert: Freitag 5. März 2021, 23:40
Kontaktdaten:

Hättest mir bitte gleich noch einen guten DE Link?
Danke ^^
Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
(Murphys Gesetz)
Antworten