コード例 #1
0
ファイル: online.py プロジェクト: Reathe/Qubic
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.components.append(self.__titre())
        self.settings = OnlineUserSettings()
        try:
            # TODO: enelever ça
            raise IOError
            self.settings.load()
        except IOError:
            # TODO: ask user for his name
            self.settings.user_id = Client('Player').id
            self.settings.user_name = 'Player'
            self.settings.default()
            self.settings.save()

        self.client = Client(self.settings.user_name, self.settings.user_id)
        gm = self.__game_list()
        self.components.append(gm)
        self.__auto_refresh_list(gm).start()
        self.components.append(self.__create_game_button())
コード例 #2
0
class ClientTests(unittest.TestCase):
    def setUp(self):
        self.client = Client("localhost",
                             5000,
                             client_reactor=proto_helpers.MemoryReactor)

    def test_sanity(self):
        self.assertTrue(self.client)

    def test_property_remote_instructions(self):
        self.client.get_from.put("hello")
        self.client.get_from.put("world")
        self.assertEqual(self.client.remote_instructions, ["hello", "world"])

    def test_send_local_instructions_consumes_queue(self):
        self.client.factory.buildProtocol(None)
        transport = proto_helpers.StringTransport()
        self.client.factory.connection.makeConnection(transport)
        self.client.send_to.put({"hello": "world"})
        self.client.send_to.put({"goodbye": "void"})
        self.client.send_local_instructions()
        self.assertIsNone(self.client.send_to.get())
コード例 #3
0
ファイル: clientTest.py プロジェクト: Lanternglow/netrogue
import sys
import os
sys.path.append(os.path.abspath('..'))

from networking.client import Client

if len(sys.argv) < 2:
    print('Need to give a computer to connect to')
    sys.exit(1)
host = sys.argv[1]


def printServerData(message):
    print(message)


with Client(22345) as client:
    client.registerListener(printServerData)
    client.connect(host)
    client.startListen()

    while True:
        text = input()
        if text == 'q': break

        client.sendData(text)
print('closing down')
コード例 #4
0
from networking.client import Client

client = Client()
client.connect()
print("Client finished successfully")
コード例 #5
0
from networking.client import Client
from networking.server import ServerTcp
from networking.encryption import Encryption
import kademlia
import sys

#sys.argv[1] = username
#sys.argv[2] = port

enc = Encryption()
clt = Client(sys.argv[1])
kad = kademlia.Router(10, clt)
srv = ServerTcp('0.0.0.0', int(sys.argv[2]), kad)
コード例 #6
0
ファイル: online.py プロジェクト: Reathe/Qubic
class OnlineMenu(Composite):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.components.append(self.__titre())
        self.settings = OnlineUserSettings()
        try:
            # TODO: enelever ça
            raise IOError
            self.settings.load()
        except IOError:
            # TODO: ask user for his name
            self.settings.user_id = Client('Player').id
            self.settings.user_name = 'Player'
            self.settings.default()
            self.settings.save()

        self.client = Client(self.settings.user_name, self.settings.user_id)
        gm = self.__game_list()
        self.components.append(gm)
        self.__auto_refresh_list(gm).start()
        self.components.append(self.__create_game_button())

    def __titre(self, **kwargs):
        return Text(text='Qubic',
                    position=(-0.3 * window.aspect_ratio, 0.25),
                    origin=(0, 0),
                    scale=2,
                    **kwargs)

    def __game_button_dict(self):
        bd = {}

        def button_online_game(room):
            if self.client.join(room.id, False):
                destroy(self)
                Online(self.client)
            else:
                # TODO: show to user
                print("Room cannot be joined")

        bd['Name - Players - Specs - Other'] = lambda: 0
        for room in self.client.room_list():
            label = f'{room.name} -' \
                    f' {len(room.players)}/2 -' \
                    f' {len(room.spectators)}'
            while label in bd:
                label += ' '
            bd[label] = lambda: button_online_game(room)
        return bd

    def __game_list(self):
        return QubicButtonList(self.__game_button_dict())

    def __auto_refresh_list(self, button_list: QubicButtonList):
        def refresh(button_list):
            button_list.button_dict = self.__game_button_dict()

        return Sequence(1, Func(refresh, button_list), loop=True)

    def __create_game_button(self):
        def f():
            r = self.client.create('Room default name')

        # TODO: self.client.join(r, False)

        return Button(texture='create_game_button',
                      scale=0.1,
                      position=(0.3, 0.4),
                      on_click=f,
                      tooltip=Tooltip('Create a room'))
コード例 #7
0
 def setUp(self):
     self.client = Client("localhost",
                          5000,
                          client_reactor=proto_helpers.MemoryReactor)
コード例 #8
0
    pyxel.image(2).load(
        0, 0, "pirates_vs_cowboys/assets/background/ship_tiles/Crate0.png")


HOST = "localhost"
PORT = 5000

if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == "server":
        try:
            port = sys.argv[2]
        except IndexError:
            port = PORT
        from networking.server import Server
        server = Server(PORT)
        server.run()
    else:
        import pyxel
        from pirates_vs_cowboys.game import Game
        from pirates_vs_cowboys.matchmaker import Matchmaker
        from networking.client import Client
        client = Client(HOST, PORT)
        networking_thread = NetworkingThread(client)
        networking_thread.start()
        matchmaker = Matchmaker(client)
        players = matchmaker.get_game_state()
        pyxel_setup()
        game = Game(client, players, matchmaker.token, game_pyxel=pyxel)
        game.run()
        networking_thread.quit()