Des objets graphiques

Voici le début d'un jeu :

balles.py

In [ ]:
from kivy.app import App
from kivy.graphics import Line, Color, Rectangle, Ellipse
from kivy.uix.widget import Widget
from kivy.clock import Clock


class Raquette(Widget):
    def __init__(self,canvas):
        self.posX=50
        self.posY=20
        self.pos=(self.posX,self.posY)
        self.canvas=canvas
        self.size=(100,10)
        with self.canvas:
            
            Color(1,0,0,0.5)
            
            Rectangle(pos=self.pos, size=self.size)
    
    def move(self):
        self.pos=(self.posX,self.posY)
        with self.canvas:
            
            Color(1,0,0,0.5)
            
            Rectangle(pos=self.pos, size=self.size)

class Balle(Widget):
    def __init__(self,canvas,pos_x,pos_y):
        self.dx = 0
        self.dy = -2
        self.pos=(pos_x,pos_y)
        self.canvas=canvas
        self.size=(50,50)
  
    def move(self):
        if  self.pos[1]<0:
            self.dy=-1*self.dy
        #On recalcule les positions:
        self.pos = (self.dx + self.pos[0],self.dy +self.pos[1])
        #On dessine la balle:
        with self.canvas:
            
            Color(0,1,0,0.5)
            
            Ellipse(pos=self.pos, size=self.size)

class Jeu(Widget):

    def debut(self):
        #On cree les balles:
        self.balle1=Balle(self.canvas,700,400)
        self.balle2=Balle(self.canvas,100,100)
        self.raquette=Raquette(self.canvas)
    
    def update(self, dt):
        #on efface le canvas:
        self.canvas.clear()
        #On deplace les balles:
        self.balle1.move()
        self.balle2.move()
        self.raquette.move()
        
    def on_touch_move(self, touch):
        if touch.y < self.height / 3:
            self.raquette.posX = touch.x

class MyApp(App):

    def build(self):
        Jeu1=Jeu()
        Jeu1.debut()
        #On appelle Jeu1.update() touts les centiemes de seconde
        Clock.schedule_interval(Jeu1.update, 1.0/100.0)
        return Jeu1


if __name__ == '__main__':
    MyApp().run()
  • Faites rebondir les balles sur le haut de l'écran.

  • Faites rebondir les balles sur la raquette.

  • Essayez de proposer des trajectoires obliques pour les balles.