Server:
import socket as s
import threading
from time import sleep
PORT = 3389
HEADER = 8
server = s.socket(s.AF_INET, s.SOCK_STREAM)
server.bind(("", PORT))
server.listen(2)
print(f"Server Listening on {PORT}")
connection = []
players_positions = []
class SendData:
def send(self, client, data):
data = data
data = str(data)
data = data.encode()
client.send(data)
class RecvData:
def __init__(self):
self.id = None
def recv(self, client):
data = client.recv(4096)
data = data.decode("utf")
data = eval(data)
print(data)
def main(client, address, connection, players_positions):
senddata = SendData()
recvdata = RecvData()
print(f"New connection to {address}")
connection.append(client)
tickrate = 96
try:
while True:
sleep(1/tickrate)
recvdata.recv(client)
except:
print(f"connection lost {address}")
connection.remove(client)
while True:
client, adders = server.accept()
thread = threading.Thread(target=main, args=(client, adders, connection, players_positions))
thread.start()
Client:
import pygame
import socket as s
from random import randint
pygame.init()
class Connection:
def __init__(self):
self.HEADER = 8
self.HOST = "192.168.0.100"
self.PORT = 3389
self.Connection_complete = False
self.client = s.socket(s.AF_INET, s.SOCK_STREAM)
def connect(self):
try:
self.client.connect((self.HOST, self.PORT))
print("Connect complete")
self.Connection_complete = True
except:
print("Connection failed")
print("Connection...")
class SendData:
def send(self, client, data):
data = data
data = str(data)
data = data.encode()
client.send(data)
class RecvData:
def recv(self, client):
data = client.recv(4096)
data = data.decode("utf")
data = eval(data)
return data
class Player:
def __init__(self):
self.x = 0
self.y = 0
self.speed = 5
self.id = randint(1, 9999999)
self.players_positions = None
def tick(self, keys):
if keys[pygame.K_s]:
self.y += self.speed
if keys[pygame.K_d]:
self.x += self.speed
if keys[pygame.K_w]:
self.y -= self.speed
if keys[pygame.K_a]:
self.x -= self.speed
def draw(self, window):
print(self.players_positions)
#pygame.draw.rect(window, [0, 0, 0], [])
def main():
run = True
senddata = SendData()
recvdata = RecvData()
connection = Connection()
player = Player()
window = pygame.display.set_mode((1290, 720))
connection.connect()
while run:
events = pygame.event.get()
keys = pygame.key.get_pressed()
for event in events:
if event.type == pygame.QUIT:
run = False
if connection.Connection_complete == True:
senddata.send(connection.client, [player.id, player.x, player.y])
window.fill([100, 200, 100])
player.tick(keys)
player.draw(window)
pygame.display.update()
else:
connection.connect()
if __name__ == "__main__":
main()
i taki otrzymuje bład:
- obraz_2022-06-26_155600427.png (3 KB) - ściągnięć: 7