Reprenons la bonne trajectoire

Deux heures de codage, en partant de ce code

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

fenetre=pygame.display.set_mode((800,600))
pygame.display.set_caption("Une trajectoire")

clock = pygame.time.Clock()

continuer=True

x=100
y=450
rayon=10

try:

    def arrierePlan():
        # 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)

        #nuages
        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)

    while continuer :

        arrierePlan()

        # dessiner le cercle
        pygame.draw.circle(fenetre,(255,255,255),(x,y),rayon,0)

        #mettre à jour l'affichage
        pygame.display.flip()    

        #30 images par seconde
        clock.tick(30)

        #gestion des événements
        for event in pygame.event.get():

            if event.type==QUIT: #la croix en haut à gauche
                continuer=False

            elif event.type==KEYDOWN:   #appui sur une touche

                if event.key==K_ESCAPE:
                    print("touche Escape")
                    continuer=False

                elif event.key==K_LEFT:
                    print("touche Gauche")

                elif event.key==K_RIGHT:
                    print("touche Droite")

                elif event.key==K_SPACE :
                    print("touche Space")

                else :
                    print("autre touche")

            elif event.type==MOUSEBUTTONUP :
                (x,y)=event.pos

finally:

    pygame.quit()

On implémente :

  • le déplacement de la balle aux flèches du clavier,
  • l’impossibilité de dépasser le sol,
  • l’écran de fin quand la balle arrive dans le rectangle noir,
  • une trajectoire automatique quand on appuie sur espace,
  • faire que cette trajectoire soit une parabole.

cm 2019-01-25 icn 2gt9 pygame balle et saut - alice & valentin

Avec le code ci-dessous, finalisé par Alice et Valentin …

import pygame
from pygame.locals import *
pygame.init()
 
fenetre=pygame.display.set_mode((800,600))
pygame.display.set_caption("Une trajectoire")
pygame.key.set_repeat(200,100)
clock = pygame.time.Clock()
font1=pygame.font.SysFont("broadway",72,bold=False,italic=False) 
continuer=True

saut=False
deplacementVertical=42
x=100
y=450
rayon=10


    
try:
 
    def arrierePlan():
        # 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)
                 
        #nuages
        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)
        
    
    while continuer :
 
        arrierePlan()

        if saut:
            x=x+12
            y=y-deplacementVertical
            deplacementVertical=deplacementVertical-2
            
        
        if y>500 :
            if 600<x800 or x<0 :
            x=100
            y=450
            saut=False
            deplacementVertical=42
        
        # dessiner le cercle
        pygame.draw.circle(fenetre,(255,255,255),(x,y),rayon,0)
        
        #mettre à jour l'affichage
        pygame.display.flip()    
 
        #30 images par seconde
        clock.tick(30)
         
        #gestion des événements
        for event in pygame.event.get():
             
            if event.type==QUIT: #la croix en haut à gauche
                continuer=False
                 
            elif event.type==KEYDOWN:   #appui sur une touche
 
                if event.key==K_ESCAPE:
                    print("touche Escape")
                    continuer=False
                     
                elif event.key==K_LEFT:
                    print("touche Gauche")
                    x=x-5

                elif event.key==K_RIGHT:
                    print("touche Droite")
                    x=x+5

                elif event.key==K_SPACE :
                    print("touche Space")
                    saut=True 

                elif event.key==K_DOWN :
                    print("touche Bas")
                    y=y+5

                elif event.key==K_UP :
                    print("touche Haut")
                    y=y-5
                     
                else :
                    print("autre touche")
 
            elif event.type==MOUSEBUTTONUP :
                (x,y)=event.pos
                 
             
        
finally:
             
    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.