Seite 1 von 1

Clients sammeln in PodSixNet Server

Verfasst: Montag 14. März 2022, 18:00
von spicer
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 ;)

Re: Clients sammeln in PodSixNet Server

Verfasst: Mittwoch 16. März 2022, 23:28
von __blackjack__
@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.

Re: Clients sammeln in PodSixNet Server

Verfasst: Samstag 19. März 2022, 07:07
von spicer
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 ;)

Re: Clients sammeln in PodSixNet Server

Verfasst: Samstag 19. März 2022, 07:34
von sparrow
Klassen - bzw. Objektorientierte Programmierung

Re: Clients sammeln in PodSixNet Server

Verfasst: Samstag 19. März 2022, 08:09
von spicer
Hättest mir bitte gleich noch einen guten DE Link?
Danke ^^