Mam problem że jak połączę się drugim komputerem z server to gra automatycznie zaczyna bardzo lagować (nie zwracajcie uwagi na grafiki ale grafik jeszcze ich nie zrobił)
client:
from random import randint
import pygame
from math import floor
HOST = "192.168.0.100"
PORT = 5555
HEADER = 8
client = s.socket(s.AF_INET, s.SOCK_STREAM)
client.connect((HOST, PORT))
pygame.init()
window = pygame.display.set_mode((1920, 1080))
class Draw_Graund:
def __init__(self):
self.image = pygame.image.load("Assets/map.png")
self.x = 0
self.y = 0
self.speed = 8
self.HEADER = 8
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.blit(self.image, (self.x, self.y))
class Tree:
def __init__(self):
self.x_cord = randint(0, 5000)
self.y_cord = randint(0, 5000)
self.image = pygame.image.load("Assets/gracz.png")
self.width = self.image.get_width()
self.height = self.image.get_height()
self.hitbox = pygame.Rect(self.x_cord, self.y_cord, self.width, self.height)
def tick(self, x, y):
self.hitbox = pygame.Rect(self.x_cord + x, self.y_cord + y, self.width, self.height)
def draw(self, x, y):
window.blit(self.image, (self.x_cord + x, self.y_cord + y))
class Stone:
def __init__(self):
self.x_cord = randint(0, 5000)
self.y_cord = randint(0, 5000)
self.image = pygame.image.load("Assets/1 (3).png")
self.width = self.image.get_width()
self.height = self.image.get_height()
self.hitbox = pygame.Rect(self.x_cord, self.y_cord, self.width, self.height)
def tick(self, x, y):
self.hitbox = pygame.Rect(self.x_cord + x, self.y_cord + y, self.width, self.height)
def draw(self, x, y):
window.blit(self.image, (self.x_cord + x, self.y_cord + y))
class Ship:
def __init__(self):
self.x_cord = randint(0, 5000)
self.y_cord = randint(0, 5000)
self.image = pygame.image.load("Assets/zwierze.png")
self.width = self.image.get_width()
self.height = self.image.get_height()
self.hitbox = pygame.Rect(self.x_cord, self.y_cord, self.width, self.height)
def tick(self, x, y):
self.hitbox = pygame.Rect(self.x_cord + x, self.y_cord + y, self.width, self.height)
def draw(self, x, y):
window.blit(self.image, (self.x_cord + x, self.y_cord + y))
class Player:
def __init__(self):
self.x_cord = 860
self.y_cord = 450
self.stand_img = pygame.image.load("Assets/postać.png")
self.stand_img_left = pygame.transform.flip(pygame.image.load("Assets/postać.png"), True, False)
self.width = self.stand_img.get_width()
self.height = self.stand_img.get_height()
self.hitbox = pygame.Rect(self.x_cord, self.y_cord, self.width, self.height)
self.walking = [pygame.image.load(f"Assets/postac_walking{i}.png") for i in range(1, 5)]
self.walk_left_img = [pygame.transform.flip(pygame.image.load(f"Assets/postac_walking{i}.png"), True, False) for i in range(1, 5)]
self.index_walking = 0
self.kierunek = 0
self.speed = 15
self.HEADER = 8
def tick(self, keys):
self.hitbox = pygame.Rect(self.x_cord, self.y_cord, self.width, self.height)
if keys[pygame.K_w]:
self.y_cord -= self.speed
if keys[pygame.K_a]:
self.x_cord -= self.speed
if keys[pygame.K_s]:
self.y_cord += self.speed
if keys[pygame.K_d]:
self.x_cord += self.speed
def draw(self, keys):
if keys[pygame.K_s] | keys[pygame.K_a] | keys[pygame.K_d] | keys[pygame.K_w]:
if self.kierunek == 1:
window.blit(self.walking[floor(self.index_walking)], (self.x_cord, self.y_cord))
if self.kierunek == 0:
window.blit(self.walk_left_img[floor(self.index_walking)], (self.x_cord, self.y_cord))
self.index_walking += 0.6
if self.index_walking > 3:
self.index_walking = 0
else:
if self.kierunek == 1:
window.blit(self.stand_img, (self.x_cord, self.y_cord))
if self.kierunek == 0:
window.blit(self.stand_img_left, (self.x_cord, self.y_cord))
if keys[pygame.K_a]:
self.kierunek = 0
if keys[pygame.K_d]:
self.kierunek = 1
def send_pos(self):
pos_x_ready = str(self.x_cord).encode("utf8")
pos_y_ready = str(self.y_cord).encode("utf8")
pos_x_header = f"{len(pos_x_ready):<{self.HEADER}}".encode("utf8")
client.send(pos_x_header + pos_x_ready)
pos_y_header = f"{len(pos_y_ready):<{self.HEADER}}".encode("utf8")
client.send(pos_y_header + pos_y_ready)
class Send_eq:
def __init__(self):
self.HEADER = 8
def recv(self):
drewno_heder = client.recv(self.HEADER).decode("utf8")
drewno_heder_len = int(drewno_heder)
self.drewno = client.recv(drewno_heder_len).decode("utf8")
kamien_heder = client.recv(self.HEADER).decode("utf8")
kamien_heder_len = int(kamien_heder)
self.kamien = client.recv(kamien_heder_len).decode("utf8")
print(self.kamien, self.drewno)
def send(self, drewno, kamien):
drewno_send = str(drewno)
kamien_send = str(kamien)
drewno_send_ready = drewno_send.encode("utf8")
kamien_send_ready = kamien_send.encode("utf8")
drewno_header = f"{len(drewno_send_ready):<{self.HEADER}}".encode("utf8")
client.send(drewno_header + drewno_send_ready)
kamien_header = f"{len(kamien_send_ready):<{self.HEADER}}".encode("utf8")
client.send(kamien_header + kamien_send_ready)
class Draw_client:
def __init__(self):
self.HEADER = 8
self.stand_img = pygame.image.load("Assets/postać.png")
def recv(self):
pos_heder_x = client.recv(self.HEADER).decode("utf8")
pos_heder_len_x = int(pos_heder_x)
self.pos_x = client.recv(pos_heder_len_x).decode("utf8")
pos_heder_y = client.recv(self.HEADER).decode("utf8")
pos_heder_len_y = int(pos_heder_y)
self.pos_y = client.recv(pos_heder_len_y).decode("utf8")
print(self.pos_x, self.pos_y)
postac_heder = client.recv(self.HEADER).decode("utf8")
postac_heder_len = int(postac_heder)
self.postac = client.recv(postac_heder_len).decode("utf8")
def draw(self):
if self.postac == "yes":
window.blit(self.stand_img, (int(self.pos_y), int(self.pos_x)))
def main():
run = True
draw_graund = Draw_Graund()
player = Player()
send_eq = Send_eq()
draw_client = Draw_client()
clock = 0
clock1 = 0
clock2 = 0
trees = []
stones = []
ships = []
stone_count = 0
tree_count = 0
ship_count = 0
send_eq.recv()
drewno = int(send_eq.drewno)
kamien = int(send_eq.kamien)
while run:
send_eq.send(drewno, kamien)
player.send_pos()
draw_client.recv()
keys = pygame.key.get_pressed()
events = pygame.event.get()
clock += pygame.time.Clock().tick(360) / 1000
clock1 += pygame.time.Clock().tick(360) / 100
clock2 += pygame.time.Clock().tick(360) / 1000
for event in events:
if event.type == pygame.QUIT:
run = False
if keys[pygame.K_c]:
run = False
if tree_count < 100:
if clock >= 0.001:
tree_count += 1
clock = 0
trees.append(Tree())
if stone_count < 100:
if clock1 >= 0.001:
stone_count += 1
clock1 = 0
stones.append(Stone())
if ship_count < 50:
if clock2 >= 0.001:
ship_count += 1
clock2 = 0
ships.append(Ship())
#draw_graund.tick(keys)
draw_graund.draw()
player.tick(keys)
player.draw(keys)
draw_client.draw()
for tree in trees:
tree.tick(draw_graund.x, draw_graund.y)
for tree in trees:
tree.draw(draw_graund.x, draw_graund.y)
for stone in stones:
stone.draw(draw_graund.x, draw_graund.y)
for stone in stones:
stone.tick(draw_graund.x, draw_graund.y)
for ship in ships:
ship.tick(draw_graund.x, draw_graund.y)
for ship in ships:
ship.draw(draw_graund.x, draw_graund.y)
for tree in trees:
if player.hitbox.colliderect(tree.hitbox):
if pygame.mouse.get_pressed()[0]:
trees.remove(tree)
drewno += 1
for stone in stones:
if player.hitbox.colliderect(stone.hitbox):
if pygame.mouse.get_pressed()[0]:
stones.remove(stone)
kamien += 1
pygame.display.update()
if __name__ == "__main__":
main()```
server:
```import socket as s
import threading
HOST = "192.168.0.100"
PORT = 5555
HEDER = 8
server = s.socket(s.AF_INET, s.SOCK_STREAM)
server.bind((HOST, PORT))
server.listen(2)
connection = []
connection_str = []
def main(client, adders):
try:
foun = False
only = True
print(f"Uzyskano połącznie od {adders}")
connection.append((client))
connection_str.append((str(client)))
drewno = open(f"C:/Users/Kamil/Desktop/Server_database#1/{adders[0]}/drewno.txt", "r")
drewno_send = drewno.read().encode("utf8")
kamien = open(f"C:/Users/Kamil/Desktop/Server_database#1/{adders[0]}/kamien.txt", "r")
kamien_send = kamien.read().encode("utf8")
drewno_header = f"{len(drewno_send):<{HEDER}}".encode("utf8")
client.send(drewno_header + drewno_send)
kamien_header = f"{len(kamien_send):<{HEDER}}".encode("utf8")
client.send(kamien_header + kamien_send)
while True:
nick = open(f"C:/Users/Kamil/Desktop/Server_database#1/{adders[0]}/nick.txt", "r")
nick_read = nick.read()
drewno_heder_rcv = client.recv(HEDER).decode("utf8")
drewno_heder_len_rcv = int(drewno_heder_rcv)
drewno_rcv = client.recv(drewno_heder_len_rcv).decode("utf8")
kamien_heder_rcv = client.recv(HEDER).decode("utf8")
kamien_heder_len_rcv = int(kamien_heder_rcv)
kamien_rcv = client.recv(kamien_heder_len_rcv).decode("utf8")
#drewno_save = open(f"C:/Users/Kamil/Desktop/Server_database#1/{adders[0]}/drewno.txt", "w")
#kamien_save = open(f"C:/Users/Kamil/Desktop/Server_database#1/{adders[0]}/kamien.txt", "w")
#drewno_save.write(drewno_rcv)
#kamien_save.write(kamien_rcv)
x_heder = client.recv(HEDER).decode("utf8")
x_heder_len = int(x_heder)
x = client.recv(x_heder_len).decode("utf8")
y_heder = client.recv(HEDER).decode("utf8")
y_heder_len = int(y_heder)
y = client.recv(y_heder_len).decode("utf8")
#print(f"{nick_read}, {adders[0]}: {x} {y}")
x_ready = x.encode("utf8")
y_ready = y.encode("utf8")
len_conn = len(connection_str)
if foun == False:
a = len(connection_str)
for i in range(a):
if connection_str[i] == str(client):
foun = True
for f in range(len_conn):
if not f == i:
if only == False:
header_x = f"{len(y_ready):<{HEDER}}".encode("utf8")
connection[f].send(header_x + y_ready)
header_y = f"{len(x_ready):<{HEDER}}".encode("utf8")
connection[f].send(header_y + x_ready)
yes = "yes".encode("utf8")
header_yes = f"{len(yes):<{HEDER}}".encode("utf8")
connection[f].send(header_yes + yes)
if only == True:
header_x = f"{len(x_ready):<{HEDER}}".encode("utf8")
client.send(header_x + x_ready)
header_y = f"{len(y_ready):<{HEDER}}".encode("utf8")
client.send(header_y + y_ready)
no = "no".encode("utf8")
header_no = f"{len(no):<{HEDER}}".encode("utf8")
client.send(header_no + no)
if len_conn != 1:
only = False
except:
print(f"Disconnect {adders}")
connection.remove((client))
connection_str.remove((str(client)))
len_conn = len(connection_str)
if len_conn == 1:
only = True
def save_client(client, adders):
id_nick = open(f"C:/Users/Kamil/Desktop/Server_database#1/{adders[0]}/nick.txt", "r")
id_save = open(f"C:/Users/Kamil/Desktop/Server_database#1/{id_nick.read()}.txt", "w")
id_save.write(str(client))
while True:
client, adders = server.accept()
thread = threading.Thread(target=main, args=(client, adders))
thread.start()
thread1 = threading.Thread(target=save_client, args=(client, adders))
thread1.start() ```

- 1 (3).png (0 KB) - ściągnięć: 63
- postac_walking4.png (1 KB) - ściągnięć: 9
- postać.png (0 KB) - ściągnięć: 5
- zwierze.png (0 KB) - ściągnięć: 8
- gracz.png (1 KB) - ściągnięć: 6
- map.png (422 KB) - ściągnięć: 68
- postac_walking3.png (1 KB) - ściągnięć: 73
- postac_walking1.png (0 KB) - ściągnięć: 5
- postac_walking2.png (0 KB) - ściągnięć: 71
- 2.png (0 KB) - ściągnięć: 80