Vous êtes sur la page 1sur 8

Cours pygame cogmaster : Manipulations 2

Cration dun programme complet ralisant le test de Stroop

Premires dfinitions des couleurs, de la liste des couleurs et de la liste des textes

# Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange']

Essai daffichage

#-*- coding:utf-8 -*import pygame import random # Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange'] # Dfinition du nombre de tests nombre_tests=5 # Initialisations pygame.init() lecran=pygame.display.set_mode((500,400)) # Choix de la police police = pygame.font.Font(None, 100) # Boucle principale for essai in range(nombre_tests): letexte=random.randrange(len(textes_couleurs)) lacouleur=random.randrange(len(couleurs))
texte_a_afficher=police.render(textes_couleurs[letexte],1,couleurs[lacouleur])

lecran.blit(texte_a_afficher, (200,100)) pygame.display.flip() pygame.quit()

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 1

Une amlioration de laffichage, on attend 3 secondes chaque affichage (pygame.time.wait(3000))

#-*- coding:utf-8 -*import pygame import random # Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange'] # Dfinition du nombre de tests nombre_tests=5 # Initialisations pygame.init() lecran=pygame.display.set_mode((500,400)) # Choix de la police police = pygame.font.Font(None, 100) # Boucle principale for essai in range(nombre_tests): letexte=random.randrange(len(textes_couleurs)) lacouleur=random.randrange(len(couleurs)) lecran.blit(texte_a_afficher, (200,100)) pygame.display.flip() pygame.time.wait(3000) pygame.quit()
texte_a_afficher=police.render(textes_couleurs[letexte],1,couleurs[lacouleur])

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 2

Amlioration de laffichage, on repeint lcran pour effacer la couleur prcdente (lecran.fill(blanc))

#-*- coding:utf-8 -*import pygame import random # Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange'] # Dfinition du nombre de tests nombre_tests=5 # Initialisations pygame.init() lecran=pygame.display.set_mode((500,400)) # Choix de la police police = pygame.font.Font(None, 100) # Boucle principale for essai in range(nombre_tests): lecran.fill(blanc) letexte=random.randrange(len(textes_couleurs)) lacouleur=random.randrange(len(couleurs)) lecran.blit(texte_a_afficher, (200,100)) pygame.display.flip() pygame.time.wait(3000) pygame.quit()

texte_a_afficher=police.render(textes_couleurs[letexte],1,couleurs[lacouleur])

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 3

On remplace lattente (pygame.time.wait(3000)) par une boucle dattente dvnement avec un test dappui sur les touches o ou n

#-*- coding:utf-8 -*import pygame import random # Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange'] # Dfinition du nombre de tests nombre_tests=5 # Initialisations pygame.init() lecran=pygame.display.set_mode((500,400)) # Choix de la police police = pygame.font.Font(None, 100) # Boucle principale for essai in range(nombre_tests): lecran.fill(blanc) letexte=random.randrange(len(textes_couleurs)) lacouleur=random.randrange(len(couleurs)) lecran.blit(texte_a_afficher, (200,100)) pygame.display.flip() boucle=True while boucle: for evenement in pygame.event.get(): if evenement.type == pygame.KEYDOWN: if evenement.key == pygame.K_o: boucle=False if evenement.key == pygame.K_n: boucle=False pygame.quit()

texte_a_afficher=police.render(textes_couleurs[letexte],1,couleurs[lacouleur])

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 4

On compte les bonnes rponses en testant le rsultat de lappui sur les touches en fonction des rponses (si o et couleurs correspondantes, on ajoute un ainsi que si n et couleurs diffrentes) On initialise le nombre de rponses justes 0

#-*- coding:utf-8 -*import pygame import random # Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange'] # Dfinition du nombre de tests et du nombre de rponses justes nombre_tests=5 reponses_justes=0 # Initialisations pygame.init() lecran=pygame.display.set_mode((500,400)) # Choix de la police police = pygame.font.Font(None, 100) # Boucle principale for essai in range(nombre_tests): lecran.fill(blanc) letexte=random.randrange(len(textes_couleurs)) lacouleur=random.randrange(len(couleurs))
texte_a_afficher=police.render(textes_couleurs[letexte],1,couleurs[lacouleur])

lecran.blit(texte_a_afficher, (200,100)) pygame.display.flip() boucle=True while boucle: for evenement in pygame.event.get(): if evenement.type == pygame.KEYDOWN: if evenement.key == pygame.K_o: if (lacouleur==letexte): reponses_justes+=1 boucle=False if evenement.key == pygame.K_n: if (lacouleur !=letexte): reponses_justes+=1 boucle=False pygame.quit()

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 5

On affiche le rsultat du test la sortie de la boucle. On fabrique la chaine rsultat, on diminue la police, on change la couleur du fond, on affiche le texte et on attend 3 secondes

#-*- coding:utf-8 -*import pygame import random # Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange'] # Dfinition du nombre de tests et du nombre de rponses justes nombre_tests=5 reponses_justes=0 # Initialisations pygame.init() lecran=pygame.display.set_mode((500,400)) # Choix de la police police = pygame.font.Font(None, 100) # Boucle principale for essai in range(nombre_tests): lecran.fill(blanc) letexte=random.randrange(len(textes_couleurs)) lacouleur=random.randrange(len(couleurs))
texte_a_afficher=police.render(textes_couleurs[letexte],1,couleurs[lacouleur])

texte_resultat=str(reponses_justes)+" reponses justes sur "+str(nombre_tests)

lecran.blit(texte_a_afficher, (200,100)) pygame.display.flip() boucle=True while boucle: for evenement in pygame.event.get(): if evenement.type == pygame.KEYDOWN: if evenement.key == pygame.K_o: if (lacouleur==letexte): reponses_justes+=1 boucle=False if evenement.key == pygame.K_n: if (lacouleur !=letexte): reponses_justes+=1 boucle=False

lecran.fill(rouge) police = pygame.font.Font(None, 50) resultat_a_afficher=police.render(texte_resultat,1,blanc) lecran.blit(resultat_a_afficher,(100,100)) pygame.display.flip() pygame.time.wait(3000) pygame.quit()

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 6

Propositions pour quelques amliorations du programme On affiche le test en mode plein cran (ajout de la constante pygame.FULLSCREEN lors de linitialisation)

lecran=pygame.display.set_mode((500,400),pygame.FULLSCREEN)

On calcule le temps de dure du test laide de la fonction pygame.time.get_ticks qui compte le nombre de millisecondes depuis linitialisation de pygame (pygame.init())

# Affichage du rsultat letemps=int(round(pygame.time.get_ticks()/1000)) texte_resultat=str(reponses_justes)+" reponses justes sur "+str(nombre_tests)+" en "+str(letemps)+" secondes"

On crit le rsultat du test dans un fichier resultat.txt en ajoutant la date et lheure du test. Pour obtenir la date, on utilise des fonctions du module time de python : time.localtime() pour rcuprer la date et lheure et time.strftime() qui permet de mettre en forme le rsultat suivant nos besoins (ici jour-mois-anne heure-minute-seconde qui sexprime de la manire suivante "%d/%m/%Y - %H:%M:%S" ) Ne pas oublier le import time

# Recuperation de la date et l'heure ladate_et_lheure=time.strftime("%d/%m/%Y - %H:%M:%S ", time.localtime()) # Ecriture dans un fichier lefichier= open("sortie.txt", "a") lefichier.write(ladate_et_lheure) lefichier.write(texte_resultat+'\n') lefichier.close()

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 7

Le programme final
#-*- coding:utf-8 -*import pygame import random import time # Dfinition des couleurs rouge=(255,0,0) vert=(0,255,0) bleu=(0,0,255) noir=(0,0,0) jaune=(255,255,0) orange=(255,140,0) blanc=(255,255,255) # Dfinition des listes couleurs=[rouge,vert,bleu,noir,jaune,orange] textes_couleurs=['rouge','vert','bleu','noir','jaune','orange'] # Dfinition du nombre de tests et du nombre de rponses justes nombre_tests=5 reponses_justes=0 # Initialisations pygame.init() lecran=pygame.display.set_mode((500,400),pygame.FULLSCREEN) # Choix de la police police = pygame.font.Font(None, 100) # Boucle principale for essai in range(nombre_tests): lecran.fill(blanc) letexte=random.randrange(len(textes_couleurs)) lacouleur=random.randrange(len(couleurs)) texte_a_afficher=police.render(textes_couleurs[letexte],1,couleurs[lacouleur]) lecran.blit(texte_a_afficher, (200,100)) pygame.display.flip() boucle=True while boucle: for evenement in pygame.event.get(): if evenement.type == pygame.KEYDOWN: if evenement.key == pygame.K_o: if (lacouleur==letexte): reponses_justes+=1 boucle=False if evenement.key == pygame.K_n: if (lacouleur !=letexte): reponses_justes+=1 boucle=False # Temps coul letemps=int(round(pygame.time.get_ticks()/1000)) # Affichage du rsultat texte_resultat=str(reponses_justes)+" reponses justes sur "+str(nombre_tests)+" en "+str(letemps)+" secondes" lecran.fill(rouge) police = pygame.font.Font(None, 30) resultat_a_afficher=police.render(texte_resultat,1,blanc) lecran.blit(resultat_a_afficher,(20,100)) pygame.display.flip() pygame.time.wait(3000) # Recuperation de la date et l'heure ladate_et_lheure=time.strftime("%d/%m/%Y - %H:%M:%S ", time.localtime()) # Ecriture dans un fichier lefichier= open("sortie.txt", "a") lefichier.write(ladate_et_lheure) lefichier.write(texte_resultat+'\n') lefichier.close() # Fin pygame.quit()

Apprendre utiliser Pygame ralisation dun Stroop - Nicolas Larrousse - cogmaster 2010 - page 8

Centres d'intérêt liés