Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu de Basket problème de score

    22 mars 2015 à 12:01:55

    Bonjour,

    je suis actuellement en terminale S et j'ai créé un jeu pour mon projet de fin d'année. Alors que le programme est presque terminé, j'ai un petit problème de score : il est sensé augmenter ou pas uniquement quand la balle arrive au niveau du panier, seulement la variable qui fait changer la position de la balle semble avoir du mal à passer dans la fonction qui définis le score. Enfin il me semble que c'est le problème mais je n'arrive pas à la résoudre.

    Cela se passe au niveau de la fonction scorer() et animation_balle1() , les variables étant toutes en global, elles sont définies dans le programme principal (tout en bas).

    Voici le code :

    from tkinter  import*
    from math import*
    from threading import*
    def niveau1():
        global balle,jauge,score,rjauge,z,s,g,scoret,my_font,verificateur_niveau
        #z= variable vérifiant si le niveau à été activée pour activer la jauge
        z=1
        s=0
        g=0
        verificateur_niveau=1
        can.delete(ALL)
        balle=can.create_oval(450,450,550,550,width=4,fill='orange')
        jauge=can.create_rectangle(10,10,90,590,width=2,fill='lightgrey')
        rjauge=can.create_rectangle(10,589,89,589,fill='red')
        score=can.create_rectangle(900,10,990,60,width=5,fill='lightgrey')
        cadre_panier=can.create_rectangle(370,20,630,170,width=5,fill='white')
        carre_panier=can.create_rectangle(460,50,540,130,width=5)
        panier=can.create_oval(400,130,600,160,width=5)
        can.create_text(945,25,text="SCORE",font=my_font)
        scoret=can.create_text(945,45,text=s,font=my_font)
        can.create_text(900,570,text="Niveau 1",font=my_font3)
    
    def niveau2():
        global balle,jauge,score,rjauge,panier,cadre_panier,carre_panier,z,s,g,scoret,my_font,verificateur_niveau,image1,verificateur_animation_panier
        z=1
        s=0
        g=0
        verificateur_niveau=2
        can.delete(ALL)
        image1=PhotoImage(file='balle.png')
        balle=can.create_image(500,500,image=image1)
        jauge=can.create_rectangle(10,10,90,590,width=2,fill='lightgrey')
        rjauge=can.create_rectangle(10,589,89,589,fill='red')
        score=can.create_rectangle(900,10,990,60,width=5,fill='lightgrey')
        cadre_panier=can.create_rectangle(370,20,630,170,width=5,fill='white')
        carre_panier=can.create_rectangle(460,50,540,130,width=5)
        panier=can.create_oval(400,130,600,160,width=5)
        can.create_text(945,25,text="SCORE",font=my_font)
        scoret=can.create_text(945,45,text=s,font=my_font)
        can.create_text(900,570,text="Niveau 2",font=my_font3)
        if verificateur_animation_panier==0:
            animation_panier()
            verificateur_animation_panier=1
    
    def niveau3():
        global balle,jauge,score,rjauge,panier,cadre_panier,carre_panier,z,s,g,scoret,my_font,verificateur_niveau,image1,verificateur_animation_panier,image2
        z=1
        s=0
        #eh oui, "pi" existe dans python !
        g=pi
        verificateur_niveau=3
        can.delete(ALL)
        image1=PhotoImage(file='balle.png')
        image2=PhotoImage(file='rainbow.png')
        balle=can.create_image(500,500,image=image1)
        rainbowjauge=can.create_image(49.5,300,image=image2)
        jauge=can.create_rectangle(10,10,90,590,width=2)
        rjauge=can.create_rectangle(10,10,89,589,fill='lightgrey')
        score=can.create_rectangle(900,10,990,60,width=5,fill='lightgrey')
        cadre_panier=can.create_rectangle(410,62,590,168,width=4,fill='white')
        carre_panier=can.create_rectangle(475,90,525,140,width=4)
        panier=can.create_oval(450,140,550,155,width=4)
        can.create_text(945,25,text="SCORE",font=my_font)
        scoret=can.create_text(945,45,text=s,font=my_font)
        can.create_text(900,570,text="Niveau 3",font=my_font3)
        if verificateur_animation_panier==0:
            animation_panier()
            verificateur_animation_panier=1
    
    def interrupteur(event):
        global i,z,frame_jauge,j,a,g,h,variable_coordonnee,frame_balle,k,balle,c,d
        if verificateur_niveau==1:
            if i==2 and z==1:
                i,j,frame_jauge,g,a=1,1,0,0,589
                can.coords(rjauge,10,a,89,589)
                can.delete(balle)
                balle=can.create_oval(450,450,550,550,width=4,fill='orange')
                animation_jauge()
            elif i==1:
                i,j,h,variable_coordonnee,frame_balle,k,c,d=2,0,1,0,0,2,450,550
                score_jauge()
        elif verificateur_niveau==2:
            if i==2 and z==1:
                i,j,frame_jauge,g,a=1,1,0,0,589
                can.coords(rjauge,10,a,89,589)
                can.delete(balle)
                balle=can.create_image(500,500,image=image1)
                animation_jauge()
            elif i==1:
                i,j,h,variable_coordonnee,frame_balle,k,c,d=2,0,1,0,0,2,450,550
                score_jauge()
        else:
            if i==2 and z==1:
                i,j,frame_jauge,g,a=1,1,0,pi,589
                can.coords(rjauge,10,a,89,589)
                can.delete(balle)
                balle=can.create_image(500,500,image=image1)
                animation_jauge()
            elif i==1:
                i,j,h,variable_coordonnee,frame_balle,k,c,d=2,0,1,0,0,2,450,550
                score_jauge()
    
    def score_jauge():
        if 200<a<400:
            animation_balle1()
            scorer()
        elif a<=200:
            animation_balle2()
        elif a>=300:
            animation_balle3()
    
    def scorer():
        global s,h
        if verificateur_niveau==1:
            s=s+1
            can.itemconfigure(scoret,text=s)
        elif verificateur_niveau==2:
            while h!=3.5:
                pass
            else:
                if 300<e<500:
                    s=s+1
                    can.itemconfigure(scoret,text=s)
        else:
            while h!=3.5:
                pass
            else:
                if 350<e<450:
                    s=s+1
                    can.itemconfigure(scoret,text=s)
        # s = score qui s'affiche
    
    def animation_jauge():
        global a,g,frame_jauge,j
        #fonction abs => valeur absolue
        a=(abs(cos(g)*579))+10
        g=g+(1/25)
        if verificateur_niveau<3:
            can.coords(rjauge,10,a,89,589)
        else :
            can.coords(rjauge,10,10,89,a)
        if j==0:
            frame_jauge=1
            j=2
        elif frame_jauge<1:
            fen.after(12,animation_jauge)
    
    def animation_balle1():
        global balle,h,variable_coordonnee,frame_balle,c,d,balle
        frame_balle=frame_balle+1
        h=h+(1/15)
        variable_coordonnee=(cos(h)*350)+305
        if verificateur_niveau==1:
            can.coords(balle,450,variable_coordonnee,550,variable_coordonnee+100)
        elif verificateur_niveau>1:
            can.coords(balle,500,variable_coordonnee)
        if frame_balle<80:
            fen.after(12,animation_balle1)
    
    def animation_balle2():
        global balle,h,variable_coordonnee,frame_balle,c,d,balle
        frame_balle=frame_balle+1
        h=h+(1/15)
        variable_coordonnee=(cos(h)*500)+200
        if verificateur_niveau==1:
            can.coords(balle,450,variable_coordonnee,550,variable_coordonnee+100)
        elif verificateur_niveau>1:
            can.coords(balle,500,variable_coordonnee)
        if frame_balle<20:
            fen.after(12,animation_balle2)
    
    def animation_balle3():
        global balle,variable_coordonnee,frame_balle,k,c,d,balle
        frame_balle=frame_balle+1
        k=k+(1/20)
        variable_coordonnee=(cos(k)*400)+600
        if verificateur_niveau==1:
            can.coords(balle,450,variable_coordonnee,550,variable_coordonnee+100)
        elif verificateur_niveau>1:
            can.coords(balle,500,variable_coordonnee)
        if frame_balle<100:
            fen.after(12,animation_balle3)
    
    def animation_panier():
        global o,e
        o=o+(1/40)
        e=(cos(o)*250)+400
        if verificateur_niveau==2:
            can.coords(panier,e,130,e+200,160)
            can.coords(carre_panier,e+60,50,e+140,130)
            can.coords(cadre_panier,e-30,20,e+230,170)
            fen.after(10,animation_panier)
        else:
            can.coords(panier,e+30,140,e+170,160)
            can.coords(carre_panier,e+70,80,e+130,140)
            can.coords(cadre_panier,e,50,e+200,170)
            fen.after(10,animation_panier)
    
    #------ Programme principal ------
    fen = Tk()
    can = Canvas(fen,bg='grey',width=1000,height=600)
    can.pack(side=LEFT, padx=5, pady=5)
    g,z,i,j,s,h,b=0,0,2,2,0,1,0
    frame_jauge=0
    frame_balle=0
    k,o,e=2,0,0
    verificateur_animation_panier=0
    my_font="{Courier new} 16 bold"
    my_font2="{Ravie} 40 bold"
    my_font3="{Maiandra GD} 20 bold"
    #Niveau 1 :
    bou1 = Button(fen, width=15, height=3, borderwidth=3, bg='lightblue',text='Niveau 1', font=my_font, command=niveau1)
    bou1.pack()
    fen.bind("<space>", interrupteur)
    #Niveau 2 :
    bou2 = Button(fen, width=15, height=3, borderwidth=3, bg='orange', text='Niveau 2', font=my_font, command=niveau2)
    bou2.pack(pady=10)
    #Niveau 3 :
    bou3 = Button(fen, width=15, height=3, borderwidth=3, bg='red', text='Niveau 3', font=my_font, command=niveau3)
    bou3.pack()
    #Page d'accueil
    can.create_text(500,275,text='Jeu de Basket', font=my_font2)
    bou4 = Button(fen,text='Quitter', width=8, command=fen.destroy)
    bou4.pack(side=BOTTOM,pady=10)
    fen.mainloop()



    Voilà, à tous les courageux qui oseront s'y aventurer : merci ^^

    -
    Edité par thibaultbeteille 22 mars 2015 à 12:03:14

    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2015 à 17:14:47 - Message modéré pour le motif suivant : Le lien donné est une référence crédible


        22 mars 2015 à 17:51:27 - Message modéré pour le motif suivant : Merci de mesurer tes propos


          22 mars 2015 à 19:55:08 - Message modéré pour le motif suivant : Réponse à un message modéré


            22 mars 2015 à 21:19:54 - Message modéré pour le motif suivant : Il y a plusieurs façon de dire les choses, tu n'as pas choisi la meilleure


            Jeu de Basket problème de score

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown