Aprenda Python Criando um RPG | Projeto para Iniciantes


 

VPS DE ALTA PERFOMANCE





SEGUROS ENTRE OUTROS CONFIRA



🧍 2. player.py

python
class 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:

python
import 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

python
import 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()

Comentários

Postagens mais visitadas deste blog

Novo Expansão de WoW – Dragonflight: A Blizzard ainda está trabalhando em novidades para a expansão de Dragonflight,