Voici le code qui permet d'ouvrir la fenêtre et d'activer le bouton en haut à droite pour la fermer.
from pygame import *
fenetre = display.set_mode((620,350))
display.set_caption('Tutoriel pygame')
init()
#les images
#les spritesheets
#paramètres de départ
jouer = True
#les fonctions du jeu
while jouer:
for events in event.get():
if events.type == QUIT:
jouer=False
quit()
On peut choisir une couleur ou une image pour fond d'écran
Voici le code pour changer la couleur de fond de notre fenêtre : fenetre.fill((255,255,0))
où le triplet (255,255,0) est code RGB.
suivi de : display.flip()
pour afficher.
from pygame import *
fenetre = display.set_mode((620,350))
display.set_caption('Tutoriel pygame')
init()
#les images
#les spritesheets
#paramètres de départ
jouer = True
#les fonctions du jeu
while jouer:
for events in event.get():
if events.type == QUIT:
jouer=False
quit()
fenetre.fill((255,255,0))
display.flip()
Pour insérer une image dans notre fenetre Pygame, il y a trois étapes :
fond = image.load('fond-ecran.jpg')
fond = fond.convert()
fenetre.blit(fond, (0,0))
, Le couple (0,0) correspond aux coordonnées du point en haut à gauche de l'image.
display.flip()
from pygame import *
fenetre = display.set_mode((620,350))
display.set_caption('Tutoriel pygame')
init()
#les images
fond = image.load('fond-ecran.jpg')
fond = fond.convert()
#les spritesheets
#paramètres de départ
jouer = True
#les fonctions du jeu
while jouer:
for events in event.get():
if events.type == QUIT:
jouer=False
quit()
fenetre.blit(fond, (0,0))
display.flip()
Un jeu est souvent composé de plusieurs écrans :
Voilà un exemple avec deux écrans, le premier avec un fond jaune et un texte expliquant comment passer à l'autre écran, le second écran contindra l'image de fond.
from pygame import *
fenetre = display.set_mode((620,350))
display.set_caption('Tutoriel pygame')
init()
#les images
fond = image.load('fond-ecran.jpg')
fond = fond.convert()
#les spritesheets
#paramètres de départ
jouer = True
etat = 0
#les fonctions du jeu
while jouer:
for events in event.get():
if events.type == QUIT:
jouer=False
quit()
k = key.get_pressed()
if etat == 0:
fenetre.fill((255,255,0))
fonte = font.SysFont('comicsansms', 36)
text = fonte.render('Appuyer sur ENTER', True, (0, 255, 0), (0, 5, 255))
fenetre.blit(text, (20, 20))
if k[K_RETURN]:
etat=1
if etat == 1:
fenetre.blit(fond, (0,0))
if k[K_r]:
etat=0
display.flip()
Attention aux choix des touches, il peut y avoir des problèmes avec les claviers AZERTY qui sont confondus avec les QWERTY. Donc tester pour savoir.
Un spritesheet est une image composée de plusieurs images plus petites ( sprites ) et / ou animations. La combinaison des petites images en une seule grande image améliore les performances du jeu, réduit l'utilisation de la mémoire et accélère le temps de démarrage et de chargement du jeu.
Dans le prochain tuto, on verra comme gérer un spritesheet. Voici le résultat avant l'explication :
Tester ce code après avoir enregistré le spritesheet du dragon ci-dessus :
from pygame import *
fenetre = display.set_mode((620,350))
display.set_caption('Tutoriel pygame')
init()
#les images
fond = image.load('fond-ecran.jpg')
fond = fond.convert()
#les spritesheets
perso = image.load('Dragon Rouge.png')
#On associe les touches aux images
imageSprite = {K_DOWN:[perso.subsurface(x,0,96,96)for x in range(0,384,96)],
K_LEFT:[perso.subsurface(x,96,96,96)for x in range(0,384,96)],
K_RIGHT:[perso.subsurface(x,192,96,96)for x in range(0,384,96)],
K_UP:[perso.subsurface(x,288,96,96)for x in range(0,384,96)]}
#paramètres de départ
jouer = True
etat = 0
xSprite,ySprite = 202,202
direction = K_DOWN
index_img = 0
#les fonctions du jeu
def deplacementPerso():
global xSprite,ySprite,direction,index_img
if k[K_LEFT]:
direction = K_LEFT
index_img = (index_img+1)%4
xSprite = xSprite - k[K_LEFT]*8
elif k[K_RIGHT]:
direction = K_RIGHT
index_img = (index_img+1)%4
xSprite = xSprite + k[K_RIGHT]*8
elif k[K_DOWN]:
direction = K_DOWN
index_img = (index_img+1)%4
ySprite = ySprite + k[K_DOWN]*8
elif k[K_UP]:
direction = K_UP
index_img = (index_img+1)%4
ySprite = ySprite - k[K_UP]*8
while jouer:
for events in event.get():
if events.type == QUIT:
quit()
k = key.get_pressed()
if etat==0:
fonte = font.SysFont('comicsansms', 36)
text = fonte.render('Appuyer sur ENTER', True, (0, 255, 0), (0, 5, 255))
fenetre.fill((255,255,0))
fenetre.blit(text, (20, 20))
if k[K_RETURN]:
etat=1
if etat==1:
#on execute les fonctions
deplacementPerso()
#On affiche les images
fenetre.blit(fond, (0,0))
fenetre.blit(imageSprite[direction][index_img],(xSprite,ySprite))
if k[K_r]:
etat=0
display.flip()
#définir les FPS on fait une pause 50ms entre chaque frame
time.wait(50)