参考
pygame制作网络游戏
进度
- 实现服务器与客户端连接对话
- 实现二者循环对话
- 实现一个联网(局域网)小游戏demo
from player import *
host = "localhost"
port = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
print("服务器开始监听,等待连接中...")
conn, addr = s.accept()
print('已连接')
p1 = Player(0, 0, '#ff5a30')
p2 = Player(100, 100, '#353c80')
win = pygame.display.set_mode(win_size)
pygame.display.set_caption("服务器")
clock = pygame.time.Clock()
while True:
win.fill('white')
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
conn.send(p1.get_posbytes())
pos = str2pos(conn.recv(1024).decode())
p2.chg_pos(pos)
p1.move()
p1.draw(win)
p2.draw(win)
pygame.display.update()
clock.tick(60)
from player import *
class Client:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "localhost"
port = 5555
def __init__(self):
self.connect()
def connect(self):
self.client.connect((self.host, self.port))
def send(self, data):
self.client.send(data)
def recv(self):
return self.client.recv(1024).decode()
myself = Client()
p1 = Player(100, 100, '#353c80')
p2 = Player(0, 0, '#ff5a30')
win = pygame.display.set_mode(win_size)
pygame.display.set_caption("客户端")
clock = pygame.time.Clock()
while True:
win.fill('white')
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
p1.update(win)
myself.send(p1.get_posbytes())
pos = str2pos(myself.recv())
p2.chg_pos(pos)
p1.move()
p1.draw(win)
p2.draw(win)
pygame.display.update()
clock.tick(60)
效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/92731d26ffaa47a8ad77c3f589bdc1ac.gif#pic_center)