示例#1
0
 def initialisation(self):
     self.vie = self.vieConst
     self.balle = Balle()
     self.raquette = Raquette()
     self.perdu = False
     self.all_dead = False
     self.lignesBriques = [[
         Brique(i * 29 * width // 400 + XMIN + RAYON_BALLE * 5,
                j * 3 * height // 40 + YMIN + RAYON_BALLE * 3,
                self.vieBrique) for j in range(5)
     ] for i in range(11)]
示例#2
0
    def __init__(self, *args, **kwargs):
        Server.__init__(self, *args, **kwargs)
        pygame.display.set_caption("Server")
        self.screen = pygame.display.set_mode(outils.SIZE_SERVEUR)

        self.briques = Briques()
        for i in range(10,outils.SCREEN_WIDTH,120):
            self.brique = Brique((i, outils.SCREEN_HEIGHT/2))
            self.briques.add(self.brique)
        self.clients = Bars()
        self.balle = Ball()
        self.endGame = 0
        self.spriteJ1 = pygame.sprite.RenderClear()
        self.spriteJ2 = pygame.sprite.RenderClear()
        # self.run = False
        pygame.init()
示例#3
0
    def __init__(self):
        self.couleur = ['cyan', 'green', 'red']
        self.i_couleur = 0
        self.WIDTH = 396
        self.W2 = self.WIDTH / 2
        self.L = self.WIDTH
        self.H = 600
        self.H2 = self.H / 2
        self.R = 300.
        self.PAUSE = False
        self.VIE = 3
        self.tk = Tk()
        self.tk.title('CASSE BRIQUE')
        self.canvas = Canvas(self.tk, width=self.L, height=self.H)
        self.canvas.bind_all("<KeyPress-Left>", self.traite_keys_event)
        self.canvas.bind_all("<KeyPress-Right>", self.traite_keys_event)
        self.canvas.bind_all('<KeyPress-space>', self.traite_keys_event)
        self.canvas.pack()

        self.raquette = Raquette(self.canvas)
        self.balle = Balle(self, 190, 499, 210, 519)
        self.score = Score(self, 350, 580, 60)

        self.briques = []

        for g in range(0, 11):
            x1 = 44 * g + 5
            x2 = x1 + 40
            for f in range(0, 6):
                y1 = 25 * f + 5
                y2 = y1 + 20
                bri = Brique(self, x1, y1, x2, y2,
                             self.couleur[self.i_couleur])
                self.briques.append(bri)
                self.i_couleur += 1
                if self.i_couleur > 2:
                    self.i_couleur = 0
示例#4
0
class MyServer(Server):
    channelClass = ClientChannel

    def __init__(self, *args, **kwargs):
        Server.__init__(self, *args, **kwargs)
        pygame.display.set_caption("Server")
        self.screen = pygame.display.set_mode(outils.SIZE_SERVEUR)

        self.briques = Briques()
        for i in range(10,outils.SCREEN_WIDTH,120):
            self.brique = Brique((i, outils.SCREEN_HEIGHT/2))
            self.briques.add(self.brique)
        self.clients = Bars()
        self.balle = Ball()
        self.endGame = 0
        self.spriteJ1 = pygame.sprite.RenderClear()
        self.spriteJ2 = pygame.sprite.RenderClear()
        # self.run = False
        pygame.init()

    def Connected(self, channel, addr):
        self.clients.add(channel)
        if len(self.clients) == 1:
            clientTmp = self.clients.__getitem__(outils.J1)
            clientTmp.bar.set_position(outils.POS_J1)
            clientTmp.joueur = outils.J1
            self.spriteJ1.add(clientTmp.bar)
        elif len(self.clients) == 2:  # Joueur 2
            clientTmp = self.clients.__getitem__(outils.J2)
            clientTmp.bar.set_position(outils.POS_J2)
            clientTmp.joueur = outils.J2
            self.spriteJ1.add(clientTmp.bar)
            self.send_info("info", "C'est parti !")
        else:  # Partie pleine
            channel.Send({"action": "error", "error": "La partie est pleine"})
            # self.run = True

    def get_shot(self):
        liste = []
        for client in self.clients:
            for tir in client.tir_sprites:
                liste.append(tir.rect.center)
        return liste

    def update_bar(self):
        for client in self.clients:
            client.update_bar()

    def send_shot(self):
        self.send_info("shot", self.clients.__getitem__(outils.J1).get_shot())
        self.send_info("shot", self.clients.__getitem__(outils.J2).get_shot())

    def remove_client(self, joueur):
        if joueur == outils.KILL_J1:
            self.clients.__getitem__(outils.J1).Send({"action":"info","message":"perdu"} )
            self.clients.__getitem__(outils.J2).Send({"action":"info","message":"gagne"} )
            self.clients.__getitem__(outils.J1).get_bar().kill()
            self.endGame = outils.J1

        if joueur == outils.KILL_J2:
            self.clients.__getitem__(outils.J1).Send({"action":"info","message":"gagne"} )
            self.clients.__getitem__(outils.J2).Send({"action":"info","message":"perdu"} )
            self.clients.__getitem__(outils.J2).get_bar().kill()
            self.endGame = outils.J2

    def update_balle(self):
        isBriqueHit = self.briques.gestion(self.balle)
        if isBriqueHit:
            self.send_info("sound", "break.wav")
        if self.brique.__sizeof__() == 0 :
            self.balle.speed += 1
        if not(isBriqueHit):
            isJoueurKill = self.balle.update(self.clients.__getitem__(outils.J1).get_bar(), self.clients.__getitem__(outils.J2).get_bar())
            if isJoueurKill == outils.KILL_J1:
                self.remove_client(outils.KILL_J1)

            elif isJoueurKill == outils.KILL_J2:
                self.remove_client(outils.KILL_J2)
            elif isJoueurKill == outils.PLAY_SOUND_VAR:
                self.send_info("sound", "bound.wav")

    def get_positions_bars(self):
        """
        Fonction qui retourne une liste de la position des joueurs.
        """
        liste = []
        for client in self.clients:
            liste.append(client.bar.rect.center)
        return liste

    def get_positions_briques(self):
        liste = []
        for brique in self.briques:
            liste.append(brique.rect.center)
        return liste

    def send_briques(self):
        for client in self.clients:
            print "Briques \n\t"
            print self.get_positions_briques()
            client.Send({"action" : "briques", "liste":self.get_positions_briques()})

    def send_bar(self):
        for client in self.clients:
            print "Bar \n\t"
            print self.get_positions_bars()
            client.Send({"action": "bar", "liste": self.get_positions_bars()})

    def send_balle(self):
        for client in self.clients:
            print "Balle : \n\t"
            print self.balle.rect.center
            client.Send({"action": "balle", "center": self.balle.rect.center})
            print "Liste Tirs : \n\t"
            print self.get_shot()
            client.Send({"action": "shot", "liste":self.get_shot()})

    def send_info(self, action, message):
        """
        Cette méthode permet d'envoyer un message à tous les
        joueurs, en précisant le type et le contenu du message
        :param action: Type du message
        :param message: Généralement une String, pour informer de qqch
        :return:
        """
        for client in self.clients:
            print action + " - " +message
            client.Send({"action": action, "message": message})

    def get_all_clients(self):
        liste = []
        for client in self.clients:
            liste.append(client.bar)
        return liste

    def collide_ball(self, balle, bar):
        if balle.rect.colliderect(bar.rect) or balle.rect.colliderect(bar.rect):
            self.send_info("sound", "bound.wav")
            balle.deplacement()

    def del_client(self, channel):
        self.clients.remove(channel)

    def check_collision_tir_player(self):
        for tir in self.clients.__getitem__(outils.J1).tir_sprites:
            if pygame.sprite.collide_rect(tir, self.clients.__getitem__(outils.J2).get_bar()):
                # Collision joueur - tir 1
                self.remove_client(outils.KILL_J1)
        for tir in self.clients.__getitem__(outils.J2).tir_sprites:
            if pygame.sprite.collide_rect(tir, self.clients.__getitem__(outils.J1).get_bar()):
                # Collision joueur - tir 1
                self.remove_client(outils.KILL_J2)

    def launch_game(self):
        screen = self.screen
        background_image, background_rect = outils.Fonction.load_png('images/background.jpg')
        background_load, background_load_rect = outils.Fonction.load_png("images/loading_mini.gif")
        clock = pygame.time.Clock()

        # Petit Timer pour eviter un début du jeu trop brutal
        gameStart = False

        while True:
            self.Pump()

            if self.endGame != 0:
                if self.endGame == outils.J1:
                    self.clients.remove(self.clients.__getitem__(outils.J1))
                if self.endGame == outils.J2:
                    self.clients.remove(self.clients.__getitem__(outils.J2))

            clock.tick(60)

            # Pour permettre de quitter le serveur
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit(0)

            if len(self.clients) == 2:
                if not gameStart:
                    gameStart = True
                    self.send_info("info", "debut du jeu dans 3 secondes !")
                    time.sleep(3)

                self.update_bar()
                pygame.sprite.groupcollide(self.briques, self.clients.__getitem__(outils.J1).tir_sprites, False, True, pygame.sprite.collide_circle_ratio(0.7))
                pygame.sprite.groupcollide(self.briques, self.clients.__getitem__(outils.J2).tir_sprites, False, True, pygame.sprite.collide_circle_ratio(0.7))
                self.update_balle()
                self.check_collision_tir_player()
                self.send_bar()
                self.send_balle()
                self.send_briques()

                print "-----------------------------------------"

                screen.blit(background_image, background_rect)
            else:
                screen.blit(background_load, background_load_rect)

            # On dessine
            pygame.display.flip()