Я делаю многопользовательскую игру TicTacToe, чтобы попрактиковаться в навыках и войти в модель клиент-сервер. Теперь у меня возникают проблемы при отправке объектов с использованием pickle, потому что, когда они не выбраны, не вносятся никакие изменения в атрибуты объекта. Я получаю только значения инициализации. И клиент, и сервер получают и отправляют данные правильно, потому что, когда я пытаюсь отправить встроенные типы, все работает, насколько я тестировал. Я понятия не имею, как решить эту проблему. Любые предложения и помощь будут оценены. Спасибо!
Код разбит на 5 файлов, и я выложу только код проблемного класса c. Если вам нужна дополнительная информация, я предоставлю ее.
import pygame as pg
class Field(pg.Rect):
def __init__(self, left, top, width, height, field_id):
super().__init__(left, top, width, height)
self.field_id = field_id
self.empty_flag = True
self.sign = None
def __reduce__(self):
return (self.__class__, (self.left, self.top, self.width, self.height, self.field_id))
def __str__(self):
return str(self.field_id)
def set_sign(self, sign=None):
self.sign = sign
def draw_field(self, window):
pg.draw.rect(window, pg.Color("red"), self)
def field_pressed(self, mouse_pos, sign):
if self.collidepoint(mouse_pos[0], mouse_pos[1]) and self.empty_flag:
self.play_field(sign)
return True
else:
return False
def play_field(self, sign):
self.empty_flag = False
self.set_sign(sign)
def get_id(self):
return self.field_id
def get_sign(self):
return self.sign
def get_empty_flag(self):
return self.empty_flag
Итак, во время игры self.sign изменяется на одно из значений «x» или «o» и на основе этого изображения врезаются в экран. Когда Player1 делает ход, например, self.sign = "x", после отправки он становится self.sign = None.