data = network1.get_data()
if isinstance(data, Player):
car2 = data
car2.draw(screen)
< /code>
Я уже создал проигрыватель < /code> в этой строке:
car2 = Player(200, 100, int(100/1.5), int(55/1.5), 90, "assets/car2.png")
Car2 - это объект Player , который проходит через сеть сокетов, а когда другой автомобиль недоступен, get_data () просто возвращает кортеж. У класса игрока есть метод Draw () , который рисует себя на данном экране. Но когда я запускаю клиент -код до того, как кто -либо вступит, он говорит AttruituleDerr: «Объект Tuple 'не имеет атрибута' draw '
Мой сетевой код:
class Network:
def __init__(self, host='147.185.221.19', port=42443):
"""Initializes the network connection parameters"""
self.host = host
self.port = port
self.connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.lock = threading.Lock()
self.msg = (200, 100, 0) # Default message
self.running = False # To manage if the server loop is running
def start(self):
"""Starts the connection with the server"""
self.connection.connect((self.host, self.port))
self.running = True
print(f"Connected to {self.host}:{self.port}")
threading.Thread(target=self.handle_server, daemon=True).start()
def handle_server(self):
"""Receives data from the server"""
print("I'm ready to race!")
while self.running:
try:
raw_msg = b''
raw_msglen = self.connection.recv(4)
msglen = struct.unpack('>I', raw_msglen)[0]
while len(raw_msg) != msglen:
raw_msg += self.connection.recv(msglen - len(raw_msg))
msg1 = pickle.loads(raw_msg)
if msg1:
with self.lock:
self.msg = msg1
except Exception as e:
print(f"Error receiving message: {e}")
self.running = False
def get_data(self):
"""Returns the current data with locking"""
with self.lock:
return self.msg
< /code>
и код игрока: < /p>
import pygame
class Player:
def __init__(self, x, y, width, height, angle, img_src):
self.x = x
self.y = y
self.width = width
self.height = height
self.angle = angle
self.img_src = img_src
self.base_img = pygame.image.load(img_src).convert_alpha()
self.base_img = pygame.transform.rotate(self.base_img, angle)
self.base_img = pygame.transform.scale(self.base_img, (width, height))
self.img = self.base_img
self.img_rect = self.img.get_rect()
def draw(self, screen):
self.img = pygame.transform.rotate(self.base_img, self.angle)
self.img_rect.center = (self.x, self.y)
screen.blit(self.img, self.img_rect)
Поэтому я подумал некоторое время, если, если операторы влияют на переменную, даже если условие не верно. В чем проблема и почему она появляется? Как это исправить?
Я делал игру, в которой я столкнулся с этим вопросом. Мой код был: < /p> [code] data = network1.get_data() if isinstance(data, Player): car2 = data car2.draw(screen) < /code> Я уже создал проигрыватель < /code> в этой строке: car2 = Player(200, 100, int(100/1.5), int(55/1.5), 90, "assets/car2.png")[/code] Car2 - это объект Player , который проходит через сеть сокетов, а когда другой автомобиль недоступен, get_data () просто возвращает кортеж. У класса игрока есть метод Draw () , который рисует себя на данном экране. Но когда я запускаю клиент -код до того, как кто -либо вступит, он говорит AttruituleDerr: «Объект Tuple 'не имеет атрибута' draw ' Мой сетевой код: [code]class Network: def __init__(self, host='147.185.221.19', port=42443): """Initializes the network connection parameters""" self.host = host self.port = port self.connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.lock = threading.Lock() self.msg = (200, 100, 0) # Default message self.running = False # To manage if the server loop is running
def start(self): """Starts the connection with the server""" self.connection.connect((self.host, self.port)) self.running = True print(f"Connected to {self.host}:{self.port}") threading.Thread(target=self.handle_server, daemon=True).start()
def handle_server(self): """Receives data from the server""" print("I'm ready to race!") while self.running: try: raw_msg = b'' raw_msglen = self.connection.recv(4) msglen = struct.unpack('>I', raw_msglen)[0] while len(raw_msg) != msglen: raw_msg += self.connection.recv(msglen - len(raw_msg)) msg1 = pickle.loads(raw_msg) if msg1: with self.lock: self.msg = msg1 except Exception as e: print(f"Error receiving message: {e}") self.running = False
def get_data(self): """Returns the current data with locking""" with self.lock: return self.msg < /code> и код игрока: < /p> import pygame
def draw(self, screen): self.img = pygame.transform.rotate(self.base_img, self.angle) self.img_rect.center = (self.x, self.y) screen.blit(self.img, self.img_rect) [/code] Поэтому я подумал некоторое время, если, если операторы влияют на переменную, даже если условие не верно. В чем проблема и почему она появляется? Как это исправить?
У меня есть лестница в моей игре, то, что происходит, так это то, что анимация игрока поднимается, как только игрок коснулся лестницы, а клавиша UP нажимается, но когда я двигаю горизонтальным с левой и правой ключом, игрок движется в лестнице, но я...
Предположим, у меня есть две функции: func1 и func2. func1 возвращает список из 3 целых чисел, а func2 принимает кортеж из 3 целых чисел. Как мне преобразовать список в кортеж таким образом, чтобы можно было предотвратить ошибки с помощью средств...
Мой веб-сайт, над которым я работаю, выполнен в стиле пиксельной графики, и я боюсь, что в этом может быть проблема. В моей кнопке я вижу свое изображение, но за ним вы также можете увидеть огромную обычную кнопку. Я пытаюсь изменить размер...