import network, sys, pygame, random, xlog, time, colorsys pygame.init() w, h = 640, 480 # Taille de la fenêtre size = [w, h] black = [0, 0, 0] # Couleur noire # Créer une couleur aléatoire def random_color(): return [int(i*255) for i in colorsys.hsv_to_rgb(random.random(), 0.8, 1)] # Créer un identifiant d'objet aléatoire def new_oid(): return random.randint(0,2147483648) # Définit les méthodes par défaut d'un objet class Obj: def __init__(self, oid): self.oid = oid def update(self): pass def draw(self, surface): pass def print_debug(self, lines): pass # Définit un joueur class Player(Obj): def __init__(self, oid, pos, color): Obj.__init__(self, oid) self.pos = pos self.speed = [0, 0] self.color = color # Mise à jour de l'état du joueur def update(self): self.pos[0] += self.speed[0] self.pos[1] += self.speed[1] # Dessiner le joueur def draw(self, surface): pygame.draw.rect(surface, self.color, (self.pos[0]-8, self.pos[1]-8, 16, 16)) # Afficher le texte d'information def print_debug(self, lines): lines.append("Player {} pos=({}, {}) speed=({}, {})".format(self.oid, self.pos[0], self.pos[1], self.speed[0], self.speed[1])) screen = pygame.display.set_mode(size) # définir la taille de la fenêtre clock = pygame.time.Clock() # Créer notre propre joueur me = Player(new_oid(), [random.randint(16, w-16), random.randint(16, h-16)], random_color()) objects = {me.oid: me} # dictionnaire de tous les objets players = {me.oid: me} # dictionnaire de tous les joueurs (qui sont aussi des objets) removable = [] # identifiants des objets à supprimer # Supprimer les objets à supprimer def remove_objects(): global removable, objects, players for oid in removable: if oid in objects: objects.pop(oid) if oid in players: players.pop(oid) removable.clear() # Boucle principale while True: # Lecture des événements for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: sys.exit() if event.key == pygame.K_RIGHT: me.speed[0] = 2 elif event.key == pygame.K_LEFT: me.speed[0] = -2 elif event.key == pygame.K_DOWN: me.speed[1] = 2 elif event.key == pygame.K_UP: me.speed[1] = -2 elif event.type == pygame.KEYUP: if event.key == pygame.K_RIGHT: me.speed[0] = 0 elif event.key == pygame.K_LEFT: me.speed[0] = 0 elif event.key == pygame.K_DOWN: me.speed[1] = 0 elif event.key == pygame.K_UP: me.speed[1] = 0 remove_objects() screen.fill(black) # colorier le fond en noir # Mettre à jour tous les objets lines = [] for oid in objects: obj = objects[oid] obj.update() obj.draw(screen) obj.print_debug(lines) remove_objects() xlog.display(screen, lines) # afficher le texte d'information pygame.display.flip() # mettre à jour l'écran clock.tick(30) # attendre un peu