Aprenda Python Criando um RPG | Projeto para Iniciantes
VPS DE ALTA PERFOMANCE
SEGUROS ENTRE OUTROS CONFIRA
🧍 2. player.py
pythonclass Player:
def __init__(self, x, y, color=(0, 0, 255)):
self.x = x
self.y = y
self.color = color
self.size = 20
def draw(self, win):
import pygame
pygame.draw.rect(win, self.color, (self.x, self.y, self.size, self.size))
def move(self, direction):
if direction == "LEFT":
self.x -= 5
elif direction == "RIGHT":
self.x += 5
elif direction == "UP":
self.y -= 5
elif direction == "DOWN":
self.y += 5
🌐 3. server.py
Servidor simples que gerencia os jogadores conectados:
pythonimport socket
import threading
import pickle
from player import Player
from config import SERVER_HOST, SERVER_PORT
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((SERVER_HOST, SERVER_PORT))
server.listen()
print(f"[Servidor] Rodando em {SERVER_HOST}:{SERVER_PORT}")
players = [Player(50, 50), Player(100, 100)]
def handle_client(conn, player_id):
conn.send(pickle.dumps(players[player_id]))
while True:
try:
data = pickle.loads(conn.recv(1024))
players[player_id] = data
# Envia o estado do outro jogador
other_player = players[1] if player_id == 0 else players[0]
conn.send(pickle.dumps(other_player))
except:
break
print(f"[Desconectado] Jogador {player_id}")
conn.close()
player_id = 0
while True:
conn, addr = server.accept()
print(f"[Conectado] {addr}")
thread = threading.Thread(target=handle_client, args=(conn, player_id))
thread.start()
player_id += 1
🎮 4. client.py
pythonimport pygame
import socket
import pickle
from player import Player
from config import SERVER_HOST, SERVER_PORT
pygame.init()
win = pygame.display.set_mode((500, 500))
pygame.display.set_caption("MMORPG - Cliente")
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((SERVER_HOST, SERVER_PORT))
player = pickle.loads(client.recv(1024))
def redraw_window(p1, p2):
win.fill((255, 255, 255))
p1.draw(win)
p2.draw(win)
pygame.display.update()
clock = pygame.time.Clock()
run = True
while run:
clock.tick(60)
try:
other_player = pickle.loads(client.recv(1024))
except:
print("Erro na conexão")
break
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.move("LEFT")
if keys[pygame.K_RIGHT]:
player.move("RIGHT")
if keys[pygame.K_UP]:
player.move("UP")
if keys[pygame.K_DOWN]:
player.move("DOWN")
try:
client.send(pickle.dumps(player))
except:
break
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
redraw_window(player, other_player)
pygame.quit()
- Gerar link
- X
- Outros aplicativos
Comentários
Postar um comentário