Ошибка jsondecode в многопользовательской игре в pygamePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка jsondecode в многопользовательской игре в pygame

Сообщение Anonymous »

Я разрабатываю многопользовательскую игру для двух игроков с помощью pygame.

Вот код сервера и код клиента:

Код: Выделить всё

import json
import pygame  # Main module for the game
import pyautogui  # For slightly enhancing control sensitivity
import sys  # For console control
import socket  # Socket for network communication
import threading  # For multithreading
import math

pygame.init()  # Initialize Pygame
pygame.display.set_caption('SERVER')  # Set window title
height = 960  # Window height
width = 1200  # Window width
screen = pygame.display.set_mode((width, height))

class Bullet:
def __init__(self, img, x, y, dx, dy, w, h, damage, team):
self.__img = img
self.__x = x
self.__y = y
self.__dx = dx
self.__dy = dy
self.__w = w
self.__h = h
self.__damage = damage
self.__team = team

def getdamage(self):
return self.__damage

def getteam(self):
return self.__team

def getrect(self):
nrect = pygame.Rect(0, 0, self.__w, self.__h)
nrect.center = (self.__x, self.__y)
return nrect

def getpos(self):
return (self.__x, self.__y)

def move(self):
self.__x += self.__dx
self.__y += self.__dy

def show(self):
newRect = self.getrect()
screen.blit(self.__img, newRect)

enemy_img = pygame.image.load('char.png')
enemy_img = pygame.transform.flip(enemy_img, True, False)
bulletimg = pygame.image.load('a_bullet.png')
bulletw = bulletimg.get_size()[0]
bulleth = bulletimg.get_size()[1]
imgw = enemy_img.get_size()[0]
imgh = enemy_img.get_size()[1]
bulletlist = []
enex = 0
eney = imgh
playersize = imgw / 2
playerspeed = 3
enexdirec = 0
eneydirec = 0
playerxdirec = 0
playerydirec = 0
playerHp = 100
eneHp = 100

def getPlayerrect(pos):
nrect = pygame.Rect(0, 0, imgw, imgh)
nrect.center = (pos[0], pos[1])
return nrect

def consoles():
global enexdirec, eneydirec
global eneHp, playerHp
while True:
msg = client.recv(1024)
if not msg:
break  # Connection closed
decoded_msg = msg.decode()  # Decode message to string
if decoded_msg == 'up':
eneydirec = -1
if decoded_msg == 'down':
eneydirec = 1
if decoded_msg == 'left':
enexdirec = -1
if decoded_msg == 'right':
enexdirec = 1
if decoded_msg == 'endx':
enexdirec = 0
if decoded_msg == 'endy':
eneydirec = 0
if decoded_msg == 'damaged':
playerHp -= 10
if playerHp  ma:
return ma
elif x <  mi:
return mi
return x

def calcvector(sp, fp):
direcx = fp[0] - sp[0]
direcy = fp[1] - sp[1]
l = math.sqrt(direcx**2 + direcy**2)
if l == 0:
return (1, 0)
else:
return (direcx / l, direcy / l)

def GameMain():
global playerHp, eneHp
global enex, eney
global playerxdirec, playerydirec
fps = pygame.time.Clock()

img = pygame.image.load('char.png')  # Load player image
imgh = img.get_size()[1]
imgw = img.get_size()[0]
x = 0
y = imgh

while True:
screen.fill((255, 255, 255))

for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:#send bullet data to client
T = pygame.mouse.get_pos()
direcvec = calcvector((x, y), T)
speed = 8
newB = Bullet(bulletimg, x, y, direcvec[0] * speed, direcvec[1] * speed, 10, 10, 10, 'M')
bulletlist.append(newB)
bullet_data = json.dumps({
'type': 'bullet',
'x': x,
'y': y,
'dx': direcvec[0] * speed,
'dy': direcvec[1] * speed,
'width': 10,
'height': 10,
'damage': 10
})
client.sendall(bullet_data.encode())
keys = pygame.key.get_pressed()
if not(keys[pygame.K_a] ^ keys[pygame.K_d]):
playerxdirec = 0
msg = "endx"
client.sendall(msg.encode())
elif keys[pygame.K_a]:
playerxdirec = -1
msg = "left"
client.sendall(msg.encode())
elif keys[pygame.K_d]:
playerxdirec = 1
msg = "right"
client.sendall(msg.encode())
if not(keys[pygame.K_w] ^ keys[pygame.K_s]):
playerydirec = 0
msg = "endy"
client.sendall(msg.encode())
elif keys[pygame.K_w]:
playerydirec = -1
msg = "up"
client.sendall(msg.encode())
elif keys[pygame.K_s]:
playerydirec = 1
msg = "down"
client.sendall(msg.encode())

for i in bulletlist:
i.move()
bulpos = i.getpos()
if bulpos[0] > width or bulpos[0] < 0 or bulpos[1] < 0 or bulpos[1] >  height:
bulletlist.remove(i)
continue
else:
i.show()
if i.getrect().colliderect(getPlayerrect((x, y))) and i.getteam() == 'E':
bulletlist.remove(i)
playerHp -= 10
msg = json.dumps({
'type': 'hp_update',
'hp': eneHp,
'eneHp': playerHp
})
print('er')
client.sendall(msg.encode())
continue
if i.getrect().colliderect(getPlayerrect((enex, eney))) and i.getteam() == 'M':
bulletlist.remove(i)
eneHp -= 10
msg = json.dumps({
'type': 'hp_update',
'hp': eneHp,
'eneHp':  playerHp
})
print('su')
client.sendall(msg.encode())
continue

if eneHp   height:
bulletlist.remove(i)
continue
else:
i.show()
if i.getrect().colliderect(getPlayerrect((x, y))) and i.getteam() == 'E':
bulletlist.remove(i)
continue
if i.getrect().colliderect(getPlayerrect((enex, eney))) and i.getteam() == 'M':
bulletlist.remove(i)
continue
if playerHp 

Подробнее здесь: [url]https://stackoverflow.com/questions/79168442/pygame-multiplayer-jsondecodeerror[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка jsondecode в многопользовательской игре в pygame
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Ошибка jsondecode в многопользовательской игре в pygame
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Ошибка jsondecode в многопользовательской игре в pygame
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Изменение скорости игрока приводит к резким движениям в многопользовательской игре Unity Photon Fusion.
    Anonymous » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Определите лучшего хоста в многопользовательской игре на iOS
    Anonymous » » в форуме IOS
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»