Bonjour,
Je poste mon programme pygame/python afin de vous demander de l'aide. Nous avons un projet pour la fin de l'année qui est la Planche de Galton, le but est qu'un grand nombre de billes tombent sur des clous. Cependant, nous ne trouvons pas le moyen de générer plusieurs billes ( le nombre de billes totales sélectionnées lors des paramètres par le joueur) et d'y mettre un temps d'attente entre chaque bille et de les voir tombées. Je vous copie colle notre programme, Merci d'avance pour votre aide! Mélanie
from tkinter import *
from tkinter.messagebox import *
import pygame
from pygame.locals import *
import random
import time
Mafenetre=Tk()
Mafenetre.title("Fenêtre des paramètres")
text4=Label(Mafenetre,text="Bienvenue ! Remplissez les paramètres suivants:")
text4.pack()
def quitter():
Mafenetre.destroy
# Le cadre
cadre=Frame(Mafenetre,bg ='grey', bd =4, relief =FLAT)
cadre.pack(padx=5,pady=10)
# Les textes
text1=Label(cadre,text=" Choisir un nombre de billes entre 100 et 1000")
text2=Label(cadre,text=" Nombre de rangées de clous entre 5 et 20 ")
text3=Label(cadre,text=" Vitesse : Moyenne ")
photo = PhotoImage(file ='jouer.gif')
photo1 = PhotoImage(file ='fermer.gif')
nombrebille=StringVar()
champbille=Entry(cadre,textvariable=nombrebille)
nbrangees=StringVar()
champclou=Entry(cadre,textvariable=nbrangees)
# Le placement
text1.grid(row=0,column=0)
text2.grid(row=1,column=0)
text3.grid(row=2,column=0)
champbille.grid(row=0,column=1)
champclou.grid(row=1,column=1)
boutonjouer=Button(Mafenetre, image=photo, command=Mafenetre.destroy)
boutonjouer.pack()
boutonquitter=Button(Mafenetre, image=photo1, command=Mafenetre.destroy)
boutonquitter.pack(side=RIGHT)
Mafenetre.mainloop()
pygame.init()
pygame.display.init()
#Ouverture de la fenêtre Pygame
n=int(nbrangees.get())
b=int(nombrebille.get())
speed=[0,1]
fenetre = pygame.display.set_mode((1000, 1000 ))
#Chargement et collage du fond
fond = pygame.image.load("blanc.jpg").convert_alpha()
fenetre.blit(fond, (0,0))
#Chargement et collage des personnages ( billes + clous )
bille = pygame.image.load("bille2.png").convert_alpha()
billerect=bille.get_rect()
billerect.x=500
billerect.y=50
clou = pygame.image.load("clou4.png").convert_alpha()
def placementclous(n):
global pos
pos=[]
for i in range(0,n):
pos.append((-(n-1)+2*i,n-1))
l=[1]
j=1
for e in range(n,2,-1):
j=j+e
l.append(j)
for i in range (0,n-1):
for e in range (l[i],len(pos)):
pos.append ((pos[e][0]-1,pos[e][1]-1))
fenetre.blit(fond,(0,0))
for i in range(0,len(pos)):
fenetre.blit(clou, (pos[i][0]*25+480,pos[i][1]*25+180))
if (billerect.x,billerect.y) == (pos[i][0]*25+500,pos[i][1]*25+193) :
cote=random.randint(0,1)
if cote==1:
speed[0]=-1
else:
speed[0]=1
if billerect.y == pos[0][1]*25+220 :
speed[0]=0
#Rafraîchissement de l'écran
pygame.display.flip()
placementclous(n)
continuer=1
#BOUCLE INFINIE
while continuer:
for event in pygame.event.get():
if event.type==pygame.KEYDOWN:
if event.type==pygame.K_ESCAPE:
continuer=0
break
elif event.type==pygame.QUIT:
continuer=0
break
billerect=billerect.move(speed)
billedepart(b)
placementclous(n)
fenetre.blit(bille, billerect)
pygame.display.flip()
pygame.time.delay(10)
pygame.quit()
Partager