IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Déplacement aléatoire de plusieurs balles


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Par défaut Déplacement aléatoire de plusieurs balles
    Bonjour à tous,

    Voici mon premier message sur developpez.com je vous présente donc mon petit projet, je voudrais réaliser ce jeu : http://www.koreus.com/jeu/ballgame.html en python, le début de mon projet est présent juste en dessous, pour l'instant j'ai une variable à insérer pour le nombre de balle bleue et une autre pour celui des balles rouges mais le problème c'est qu'une seule balle se déplace donc pouvez vous me dire comment avoir toute les balles se déplaçant ? et si possible, il faudrait qu'elles rebondissent sur la barre grise au centre (comme sur le lien du jeu en faite) mais ce n'est pas primordial pour le moment.

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    from tkinter import *
    from random import randrange
    from math import sin, cos
     
    def move():
        global x, y, flag, dx, dy, vx, ms # x, y = coordonnées / dx, dy = vitesse en x et en y / flag = signal qui dit au balle de s'arrêter / vx = angle de la balle
        if x > 1175 or x < 20: # coordonnées comprise entre 1175 en abscisse...
            dx = -dx
            vx = -vx
        x += dx
        x += vx
     
        if y > 640 or y < 20: # ...et 640 en ordonnée
            dy = -dy
        y += dy
     
        can.coords(ball, x-10, y-10, x+10, y+10) #coordonnnées de la balle
     
        if flag > 0:
            fen.after(ms, move)
     
     
    def start():
        global flag, ms
     
        flag += 1
     
        if flag == 1:
            ms = 6
            move()
     
    def stop():
        global flag, score
     
        flag = 0
        score = 0
     
    # Création des variables:
     
    flag = 0
    dx, dy = 4, 4
    vx = cos(1)
    ms = 6
     
    # Création de la fenêtre:
     
    fen = Tk()
    fen.title("1er test aléatoire")
     
    # Création du canevas:
    Largeur = 1200
    Hauteur = 650
    can = Canvas(fen,width=Largeur,height=Hauteur,bg ='white')
    can.grid(row= 2, column= 0)
     
    # Création du nombre alétoire de balle:
    for iblue in range(5): # création d'un nombre aléatoire de balle bleue
        x, y = randrange(1180), randrange(640)
        ball = can.create_oval(x-10, y-10, x+10, y+10, outline= "black", fill= "royalblue")
     
    for ired in range(5): # création d'un nombre aléatoire de balle rouge
        x, y = randrange(1180), randrange(640) 
        ball = can.create_oval(x-10, y-10, x+10, y+10, outline= "black", fill= "red")
     
    carre_red = can.create_rectangle(Largeur-1195, Hauteur-645, Largeur-1185, Hauteur-5, outline= "darkred", width = 2, fill= 'red')
    carre_bleu = can.create_rectangle(Largeur-5, Hauteur-645, Largeur-15, Hauteur-5, outline= "dark blue", width = 2, fill= 'royalblue')
    carre_noir_haut = can.create_rectangle(Largeur-605, Hauteur-320, Largeur-595, Hauteur-5, outline= "maroon", width = 2, fill= 'gray')
    carre_noir_bas = can.create_rectangle(Largeur-605, Hauteur-650, Largeur-595, Hauteur-400, outline= "maroon", width = 2, fill= 'gray')
     
     
    # Création des boutons:
     
    # Création du bouton "Débuter la Partie":
    Button(fen, text= "Lancer !", command= start).grid(row= 0, column= 0)
     
    # Création du bouton "Arrêter la Partie":
    Button(fen, text= "Stopper !", command= stop).grid(row= 1, column= 0)
     
     
    fen.mainloop()
    fen.destroy()

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    Et bien tu as les coordonnées d'une seule balle que tu utilises en variables globales (plus d'autres globales en rapport avec cette balle). L'idée serait de créer une liste d'entiers (par exemple) pour la dimension dx, et d'avoir la fonction move qui fait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dx,dy=[4,23...],[4,6...]
    for i in range(len(dx)) :
        #on applique les déplacements en se servant de dx[i] et autres variables
        #même chose pour dy[i]
    Tout simplement. Sinon il est aussi envisageable de faire la fonction move qui prend en paramètre les variables que tu utilises en global.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Par défaut
    D'accord donc je devrais mettre autant de valeur entre croché que le nombre de balles créées c'est ça? donc si je crée 5 rouges et 5 bleues, je dois mettre 10 valeurs pour vx et 10 pour vy ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/04/2011, 15h04
  2. Déplacement aléatoire d'une Image
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/07/2008, 14h27
  3. [Tableaux] Image aléatoire dans plusieurs dossiers
    Par Gunner4902 dans le forum Langage
    Réponses: 13
    Dernier message: 11/12/2007, 17h39
  4. Réponses: 2
    Dernier message: 09/02/2006, 16h17
  5. [FLASH 8] Déplacement aléatoire d'un MovieClip
    Par vieuxshish dans le forum Flash
    Réponses: 3
    Dernier message: 23/12/2005, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo