template, fixes
This commit is contained in:
parent
a8009f744d
commit
ac045c3e0e
7 changed files with 238 additions and 37 deletions
108
template.py
Normal file
108
template.py
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
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 {}".format(self.oid))
|
||||
|
||||
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():
|
||||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue