Hello World
Pour apprendre notre Interface_PyGAME, nous allons créer notre premier "Hello World":
Nous considérons que vous avez installé les utilitaires wget et unzip, si vous les avez déjà, vous pouvez passer cette première étape.
~$ # le "$" en début de ligne de commande indique vous n'avez pas de privilèges d'installation et êtes simple utilisateur
~$ su # pour passer en root (superuser)
~# # le "#" est un commentaire, mais en début de ligne il indique que vous êtes bien root
~# apt-get update # mise a jour des listes des paquets
~# apt-get upgrade # mise a jour des paquets installés
~# apt-get install sudo # permettra de lancer des commandes sudoers (superutilisateur) rapidement
~# apt-get install wget # installation de l'utilitaire wget
~# apt-get install unzip # installation de l'utilitaire unzip
Hello World !
Créons l'arborescence des dossiers :
Pour Raspbian/Debian/Linux
~$ mkdir helloworld # Création du dossier racine pour notre premier programme helloworld
~$ mkdir helloworld/fonts # Création du sous-dossier pour les fonts
~$ mkdir helloworld/img # Création du sous-dossier pour les images
~$ mkdir helloworld/src # Création du sous-dossier pour les fichiers .svg sources
~$ cd helloworld/fonts # on se place dans le dossier font pour télécharger une police
# on télécharge une font 100% gratuit que l'on nomme lcd.zip avec l'utilitaire wget
~$ wget -O lcd.zip https://dl.dafont.com/dl/?f=lcd_lcd_mono
~$ unzip lcd.zip # décompressons l'archive
Maintenant que la police LCDWinTT/LCD-BOLD.TTF est présente, replaçons nous à la racine du dossier.
~$ cd ..
Éditons avec l'éditeur "nano" le code ci-dessous et voyons comment il se comporte :
~$ nano helloworld.py # on crée/édite le fichier python helloworld.py
(abusez du CTL+C / CTRL+V ou plus explicitement copié/collé) Nous utiliserons volontairement des noms de variables explicites pour vous donner des repères.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import pygame
from pygame.locals import *
# VARIABLES ############################################################
Titre = 'RDE - PyGAME' # Titre de la fenetre
LargeurEcran = 800 #
HauteurEcran = 480 #
Couleurs = 32 # 32 bits 16.7 millions de couleurs
# Initialisation ----------------------------------------------------- #
pygame.init() # Appel de la fonction d'initialisation
# Limitation dela vitesse de rafraichissement de l'écran - 30 fps suffisent
pygame.time.Clock().tick(30)
fpsClock = pygame.time.Clock()
# Taille de fenetre et Titre ----------------------------------------- #
# pour un mode fenetré, nous déclarons notre affichage "fenetre" avec les
# configurations de la largeur/hauteur et nombre de couleurs
fenetre = pygame.display.set_mode((LargeurEcran, HauteurEcran), 0, Couleurs)
# pour un mode plein écran, on utilisera les paramètres ci-dessous :
# fenetre = pygame.display.set_mode((LargeurEcran, HauteurEcran), pygame.FULLSCREEN)
# initialisation de la police utilisé :
# A chaque fois que nous voudrons utiliser la police LCD-BOLD avec la taille de 40, nous ferons appel à "TXT_GENERIC_FONT_40"
TXT_GENERIC_FONT_40 = pygame.font.Font('fonts/LCDWinTT/LCD-BOLD.TTF', 40)
# Nous pouvons en créer une autre d'une taille de 80 que nous nommerons "TXT_GENERIC_FONT_80"
taille = 80 # voyons avec cette variable, la déclaration de la taille de notre texte.
# La seule limite est votre imagination... enfin sans exagérer non plus !
TXT_GENERIC_FONT_80 = pygame.font.Font('fonts/LCDWinTT/LCD-BOLD.TTF', taille)
# Préparons l'objet texte et sa couleur
couleur_texte_40 = [255,255,255] # La couleur se déclare en [Rouge,Vert,Bleu] de 0(noir) à 255 (Clair)
mon_texte = "Hello World ! " # un texte en chaine de caractère
TXT_GENERIC_OBJ_40 = TXT_GENERIC_FONT_40.render(mon_texte, True, couleur_texte_40)
# Nous venons de créer l'objet "TXT_GENERIC_OBJ-40" contenant le texte et les paramètres associés
# nous pouvons récupérer la taille de l'objet crée en fonction de son contenu (nombre de caractère)
TXT_GENERIC_RECT_40 = TXT_GENERIC_OBJ_40.get_rect()
# Cela est utile, notamment pour positionner l'objet nommé par un point en son centre (x,y)
TXT_GENERIC_RECT_40.center = (400,240) # positionnons le texte au centre de notre écran ( LargeurEcran/2 , HauteurEcran/2 )
# Nous en avons fini des déclarations et allons entrer dans une boucle infini pour surveiller les actions de l'utilisateur
# Initialisation d'une variable de boucle
continuer = 1
while continuer:
# on rempli le fond de l'écran "fenetre" avec une couleur unie (R,V,B)
fenetre.fill([100,100,100])
# notre texte viens se placer dessus (car il est déclaré après)
fenetre.blit(TXT_GENERIC_OBJ_40, TXT_GENERIC_RECT_40)
# on detecte si un evenement (touche ESC) est passé
for event in pygame.event.get(): # Pour chaque évenement dans Pygame, nous analysons l'action
if (
event.type == pygame.QUIT or # si nous cliquons la croix de la fenetre ou
(event.type == pygame.KEYUP and # si une touche du clavier est relachée
event.key == K_ESCAPE) # et que c'est la touche ESC
):
continuer = 0 # alors, on arrête la boucle while et on quitte
pygame.quit() # On quitte pygame
sys.exit() # On quitte proprement notre programme
# sinon on rafraichi l'affichage avec un framerate de 30 FPS
pygame.display.update()
fpsClock.tick(30)
on enregistre CTRL+X puis on valide le nom du fichier Y(es) ou O(ui)
ensuite on lance le code Pygame :
~$ python helloworld.py
La Touche ESC ( échap ) du clavier permet de sortir ou la croix en haut de la fenetre
Ce qui nous donne :
Revenons à notre Interface_PyGAME