Une fonction pour une trajectoire (TP finalement noté)

On veut commencer un jeu type « angry birds » avec python et pygame.

Pourquoi pas déjà réussir une trajectoire « parabolique » ?

TP noté :
Une note a été donnée, elle pourra évoluer (en mieux ou en moins bien) la semaine prochaine !

On va en fait tracer la courbe d’une fonction point par point.

Étape 1 :

  • Créer une fenêtre de taille 800 par 600
  • La remplir en bleu cyan
  • Tracer un rectangle de 100 pixels d’épaisseur en bas de la fenêtre.
  • Tracer le rectangle « tee » rouge défini ainsi : (95,460,10,40)
  • Tracer le rectangle « trou » noir défini ainsi : (600,500,50,10)
  • Créer les variables
    • x=100
    • y=450
    • rayon=10
  • Placer la balle de rayon rayon sur le « tee »
  • Fini ? Dessiner le nuage avec quatre disques 😀
  • On obtient ce fichier, par exemple :
    import pygame
    
    pygame.init()
    
    fenetre=pygame.display.set_mode((800,600))
    pygame.display.set_caption("Une trajectoire")
    
    # remplir le fond
    fenetre.fill((0,200,200))
    
    # dessiner les rectangles
    pygame.draw.rect(fenetre,(20,128,20),(0,500,800,100),0)
    pygame.draw.rect(fenetre,(255,0,0),(95,460,10,40),0)
    pygame.draw.rect(fenetre,(0,0,0),(600,500,50,10),0)
            
    #nuage
    pygame.draw.circle(fenetre,(255,255,255),(500,100),40,0)
    pygame.draw.circle(fenetre,(255,255,255),(540,110),30,0)
    pygame.draw.circle(fenetre,(255,255,255),(470,105),30,0)
    pygame.draw.circle(fenetre,(255,255,255),(520,70),25,0)
    
    x=100
    y=450
    rayon=10
    
    # dessiner les cercles
    pygame.draw.circle(fenetre,(255,255,255),(x,y),rayon,0)
    
    #mettre à jour l'affichage
    pygame.display.flip()
    
    pygame.time.delay(1500)
    
    pygame.quit()
    

Étape 2 :

Recherche d’une fonction

  • Avec geogebra,
  • avec un tableur
  • En python, on va au début de notre fichier, avant les tracés, définir cette fonction
    def f(x):
        return 0.0056*x**2-3.9709*x+791.005

    et ainsi pouvoir dessiner plusieurs points de la trajectoire dans une boucle :

    for i in range(42) :
        x=x+5 # x devient x plus cinq, 
              # on avance vers la droite
        y=int(f(x)) # y en fonction de x
                    # le int pour avoir un entier
                    # (pour les coordonnées)

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.