Hello World

De Wiki_du_Réseau_des_Electroniciens_du_CNRS
Sauter à la navigation Sauter à la recherche


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 :

Fenetre affichée

Revenons à notre Interface_PyGAME