C’est juste une illusion !

Le challenge, c’est de dessiner cette image en python/pygame :

Jolie, l’illusion d’optique, non ?

Mais, mieux, on veut réaliser ceci :

Il va nous falloir quelques rudiments de pygame… et heureusement, mon excellente et inestimable collègue Anne Schreck, que je remercie encore, du lycée Marchal, nous a concocté un tuto qui va le faire… là.

Ce code …

import pygame

pygame.init()

#Creation d'une fenetre et tuning
fenetre=pygame.display.set_mode((800,480))
fenetre.fill((255,255,255))
pygame.display.set_caption("Marchant")

#dessinons deux rectangles
mon_rectangle=pygame.draw.rect(fenetre,(0,0,150),(200,100,300,50),0)
mon_rectangle=pygame.draw.rect(fenetre,(255,255,0),(220,120,260,10),0)

#et plus
for i in range(8):
    mon_rectangle=pygame.draw.rect(fenetre,(100,0,100),(50+i*80,320,40,60),2)

#Il faut basculer l'affichage
pygame.display.flip()

#On attend un peu
pygame.time.delay(1000)

pygame.quit()

… crée déjà une fenêtre, et (deux + huit) rectangles, ainsi :

4 réflexions au sujet de « C’est juste une illusion ! »

  1. Bonsoir Monsieur Marchant,
    J’aimerais savoir comment écrire des nombres décimaux en python. J’ai essayé « 8.5 » dans le code de pygame, mais lorsque je lance la fenêtre avec F5, la fenêtre apparaît noire. J’ai essayé aussi avec le « from math import* » mais j’ai le même problème.
    Merci d’avance de votre réponse,
    Mathis

    • Bonsoir,
      Alors 8.5 en python c’est ce qu’on a de mieux pour 8,5, je te le confirme.
      MAIS s’il s’agit de pixel, ou de nombre de pixel, ou de couleur dans un pixel, pas de décimaux… un nombre entier de pixels, une intendité entière de couleur (R,V,B)…
      from math import * te donne accès à des formules comme sqrt mais ne solutionne pas ton problème, qui, s’il s’agit de pixels, est insoluble.
      Si je n’ai pas compris, poste un bout de code.
      Bon courage !

      • Merci pour cette information précieuse que je n’avais pas pris en compte. C’est absolument la réponse que j’attendais. Il s’agissait bien de pixels.
        J’ai terminé le code de l’illusion d’optique :

        modération Marchant on 😉

        import pygame
        
        pygame.init()
        
        fenetre=pygame.display.set_mode((1000,1000))
        fenetre.fill((255,255,255))
        pygame.display.set_caption("Illusion d'optique")
        
        mon_rectangle=pygame.draw.rect(fenetre,(0,0,255),(100,100,800,800),0)
        
        for i in range(6):
            mon_rectangle=pygame.draw.rect(fenetre,(149,184,82),(200+i*117,100,17,800),0)
         
        
        for i in range(6):
            mon_rectangle=pygame.draw.rect(fenetre,(149,184,82),(100,200+i*117,800,17),0)
        
        #modération Marchant : 
        
        #quoi ?
        # pas non plus plusieurs fois le même code
        # -> à simplifier  avec un boucle ou une fonction !
        # j'ai d'ailleurs viré toutes ces boucles répétitives
        
        pygame.display.flip()
        pygame.time.delay(5000)
        
        pygame.quit()

        Merci encore,
        Bonne soirée

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.