Задать вопрос
@gorilla251

Как мне исправить код?

import time
import psycopg2 as psy
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
import socket
import random
import pygame
engine = create_engine("postgresql+psycopg2://postgres:19831984@localhost/test_base")
dec_base = declarative_base()
game_display = pygame.display.set_mode((800,600))
fieldx = 7000
fieldy = 7000
main = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
main.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY,1)
main.bind(('localhost', 10000))
main.setblocking(False)
main.listen(5)
print("socket is running")
users = {}
clock = pygame.time.Clock()
class Tab(dec_base):
    __tablename__ = "Users"
    id = Column(Integer, primary_key = True, nullable = False, autoincrement = True)
    name = Column(String (250), nullable = False)
    address = Column(String (250))
    posx = Column(Integer)
    posy = Column(Integer)
    radius = Column(Integer, default = 50)
    abs_speed = Column(Integer, default = 1)
    speedx = Column(Integer, default = 0)
    speedy = Column(Integer,  default = 0)
    def __init__(self,name,address):
        self.name = name 
        self.address = address
        self.posx = random.randint(0,7000)
        self.posy = random.randint(0,7000)
print('1')
dec_base.metadata.create_all(engine)
session = sessionmaker(bind = engine)
s = session()
class User:
    def __init__(self, name, id, color, address, socket):
        self.name = name
        self.id = id
        self.db:Tab = s.get(Tab, self.id)
        self.score = 0
        print(self.db)
        self.posx = self.db.posx
        self.posy = self.db.posy
        self.speed = 5
        self.radius = 50
        self.color  = color
        self.address = address
        self.socket = socket
def painting():
    game_display.fill((128,128,128))
    for i in list(users):
        local_user3 = users[i]
        x = (local_user.posx / fieldx) * game_display.get_width()
        y = (local_user.posy / fieldy) * game_display.get_height()
        radius = local_user3.radius
        color = local_user3.color
        pygame.draw.circle(game_display, color, (int(x), int(y)), radius)  
        
pygame.display.flip()
        
        
print('2')
while 1:
    clock.tick(3)
    painting()
    try:
        client_socket, client_addres = main.accept()
        local_user = Tab(name = "Bob", address = client_addres)
        s.merge(local_user)
        s.commit()
        clientaddres = f"({client_addres[0]},{client_addres[1]})"
        print(clientaddres)
        data = s.query(Tab).filter(Tab.address == clientaddres).first()
        print(data)
        local_user2 = User(name = "Andrew", id = data.id, color = None, address = clientaddres, socket = client_socket)
        users [client_addres] = local_user2
        print(f"пользователь {client_addres} зашел")
    


    except Exception as e:
        print(e)
        pass
    for i in list(users):
        try:
            data = users[i].socket.recv(1024).decode()
            if data:
                vector = (data[:data.find(':')], data[data.find(":")+1:])
                print(vector)



        except Exception as e:
            print(e)
            pass

Проблема в отрисовке кругов в функции painting, говорит мол не правильный аргумент color, вообще не понимаю что не так с пропорцией, помогите кто может
  • Вопрос задан
  • 2169 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
@tichoblinii
Цвет не задан.
color = None
Задай color=(255, 0, 0)
Ответ написан
@50lid
В users нет color.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы