Progressons en « pygame » : step by step

La semaine dernière, le prof avait complètement craqué et « blité » tous azimuts.

Cette séance a pour but de reprendre tranquillement.

Plan :

  • un premier exemple,
  • illusion statique avec calque,
  • illusion de Hering et/ou de Zollner,
  • plus ?

Un premier exemple :

Copier/coller ce code dans IDLE pour python 3.* :

import pygame
import traceback 
from pygame.locals import * 
pygame.init()

try:
    fenetre=pygame.display.set_mode((600,300))
    
    pygame.display.set_caption("Test souris et clavier de pygame")

    #pygame.key.set_repeat(500, 200)
    
    rouge=0
    bleu=255

    fenetre.fill((rouge,0,bleu))

    continuer=True
    
    while continuer:

        for event in pygame.event.get():

            if event.type==QUIT:
                continuer=False

            elif event.type==KEYDOWN:   
                if event.key==K_UP:   
                    rouge+=16
                    if rouge>255:
                        rouge=0
                    print("flèche vers le haut, rouge =",rouge)
                    
                elif event.key==K_DOWN:
                    bleu-=16
                    if bleu < 0:
                        bleu=255
                    print("flèche vers le bas, bleu =",bleu)
                    
                elif event.key==K_ESCAPE:
                    print("touche Escape")
                    continuer=False
                else :
                    print("autre touche")
                fenetre.fill((rouge,0,bleu))
                
            elif event.type==MOUSEBUTTONDOWN :
                (x,y)=event.pos
                print("clic en ("+str(x)+","+str(y)+")")
                pygame.draw.circle(fenetre,(255,255,255),(x,y),20,0)

            elif event.type==MOUSEMOTION :
                (x,y)=event.pos
                pygame.draw.rect(fenetre,(0,255,0),(x-3,y-3,6,6),0)

        pygame.display.flip()
        
except:
   #ce bloc permet de récupérer des infos en cas d'erreur
   traceback.print_exc()
finally:
    pygame.quit()
  1. Ce code a aussi été distribué sur papier. Commenter chaque ligne pour décrire son utilité.
  2. « Décommenter » la ligne numéro 11. A quoi sert-elle ?
  3. Retour à nos illusions !

    Voici un fichier avec une zone de transparence pour servir de claque sur notre illusion.
    Enregistrez-le dans le même dossier que votre programme de la semaine dernière.

    Pour afficher une image, il faut enchaîner trois commandes :

    Avant la boucle while continuer : mais après la création de la fenêtre :

    calque=pygame.image.load("cm 2018-09-28 calque.png").convert_alpha()

    Le .convert_alpha() permet de gérer la transparence.

    Dans la boucle while continuer : :

    fenetre.blit(calque,(abscisse,ordonnée))

    Et bien entendu, une fois par passage dans la boucle :

    pygame.display.flip()

    Voici un code qui fonctionne et n’attend plus que votre calque :

    import pygame
    from pygame.locals import *
    pygame.init()
    
    fenetre=pygame.display.set_mode((410,410))
    pygame.display.set_caption("Test Illusion Rectangles et Disques")
    
    # là il faut charger notre image dans une surface appelée calque
    
    continuer=True
    mettreCalque=0
    
    while continuer :
        #remplir le fond
        fenetre.fill((149,184,82))
    
        #carrés bleus
        l=50
        for i in range(7):
            for j in range(7):
                x=i*60
                y=j*60
                pygame.draw.rect(fenetre,(0,0,255),(x,y,l,l),0)
    
        #disques blancs
        r=7
        for i in range(6):
            for j in range(6):
                x=i*60+55
                y=j*60+55
                pygame.draw.circle(fenetre,(255,255,255),(x,y),r,0)
    
        if mettreCalque == 1:
            print("Cette ligne est à changer")
            # ici il faut changer pour afficher le calque
            # puisque la variable mettreCalque vaut alors 1
        
        pygame.display.flip()
    
        
        #gestion des événements
        for event in pygame.event.get():   
            if event.type==QUIT:
                continuer=0
            elif event.type==KEYDOWN:   #appui sur une touche
                if event.key==K_ESCAPE:
                    print("touche Escape")
                    continuer=0
                elif event.key==K_SPACE:
                    print("touche Espace")
                    # ici il faut changer pour que le calque s'affiche
                elif event.key==K_p:
                    print("capture d'écran")
                    pygame.image.save(fenetre,"cm 2018-10-05 Capture.png")
                else :
                    print("autre touche")
            elif event.type==MOUSEMOTION:
                xmouse,ymouse=event.pos
                #print("La souris bouge en",xmouse,ymouse)
                
    pygame.quit()
    

    Illusion de Hering et/ou de Zollner

    Ces trois images illustrent à mon sens clairement le sujet 😀

    Aller plus loin ?

    Faire « bouger » Mario comme la semaine dernière !

Une réflexion au sujet de « Progressons en « pygame » : step by step »

  1. import pygame
    from pygame.locals import *
    
    pygame.init()
    
    fenetre=pygame.display.set_mode((400,400))
    pygame.display.set_caption("Champion du Monde !")
    fenetre.fill((0,0,0))
    continuer=True
    pygame.draw.rect(fenetre,(255,0,0),(75,250,250,50),0)
    pygame.draw.rect(fenetre,(255,0,0),(75,225,50,50),0)
    pygame.draw.rect(fenetre,(255,0,0),(275,225,50,50),0)
    pygame.draw.circle(fenetre,(0,0,255),(125,125),50,0)
    pygame.draw.circle(fenetre,(255,255,255),(275,125),50,0)
    
    pygame.display.flip()
    
    while continuer:
        for event in pygame.event.get():
            if event.type==QUIT:
                continuer=False
    
    pygame.quit()

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.