Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer un jeu avec Pygame

Créer une zone à remplir sur python

    23 janvier 2020 à 11:06:33

    Bonjour,

    J'aimerais créer un jeu où l'on doit remplir des cercles avec des quartiers de cercle, quand un cercle est rempli, le cercle se vide et des points sont gagné à chaque quartiers placés et cercles vidés.

    J'ai déjà créer ma fenêtre de jeu, mon quartier de cercle qui peut bouger au clique de souris et mes cinq cercles. Mais je ne comprends pas comment faire pour que quand je clique sur un cercle, mon quartier se positionne dessus à la bonne place et se "verrouille" de sorte que je ne puisse pas mettre un autre quartier dessus. Je pense qu'il faut que je créer des zones dans mon cercle et que mon quartier soit créer de sorte qu'il ne rentre que dans cette zone. Mais je ne sais vraiment pas comment faire ça. 
    import pygame
    from pygame.locals import *
    
    pygame.init()
    
    #Ouverture de la fenêtre Pygame
    fenetre = pygame.display.set_mode((600, 600))
    
    #Chargement et collage du fond
    fond = pygame.image.load("fond.jpg").convert()
    fenetre.blit(fond, (0,0))
    
    #Chargement et collage du personnage
    perso = pygame.image.load("partdepizza.png").convert_alpha()
    perso=pygame.transform.scale(perso,(70,75))
    rect_image = perso.get_rect()
    perso_x = 100
    perso_y = 0
    rect_image.center = (0, 0)
    #fenetre.blit(rect_image, (perso_x, perso_y))
    fenetre.blit(perso,rect_image)
    #Rafraîchissement de l'écran
    pygame.display.flip()
    
    #BOUCLE INFINIE
    continuer = True
    while continuer:
        pygame.draw.circle(fond, (255, 255, 0), (300, 75), 50, 2)
        pygame.draw.circle(fond, (255, 255, 0), (100, 200), 50, 2)
        pygame.draw.circle(fond, (255, 255, 0), (100, 400), 50, 2)
        pygame.draw.circle(fond, (255, 255, 0), (300, 525), 50, 2)
        pygame.draw.circle(fond, (255, 255, 0), (500, 400), 50, 2)
        pygame.draw.circle(fond, (255, 255, 0), (500, 200), 50, 2)
        pygame.draw.circle(fond, (255, 100, 0), (300, 300), 50, 2)
        for event in pygame.event.get():    #Attente des événements
            if event.type == QUIT:
                continuer = False
            if event.type == MOUSEBUTTONDOWN:
                if event.button == 1:   #Si clic gauche
                    #On change les coordonnées du perso
                    perso_x = event.pos[0]
                    perso_y = event.pos[1]
        
        #Re-collage
        fenetre.blit(fond, (0,0))
        rect_image.center = (perso_x, perso_y)
        fenetre.blit(perso,rect_image)
        #fenetre.blit(perso, (perso_x, perso_y))
        #Rafraichissement
        pygame.display.flip()
    
    newfond=pygame.transform.rotate(perso, 90)
    fenetre.blit(newfond,(perso_x,150))
    pygame.display.flip()
    
    #boucleinfinie
    xRect=20
    yRect=10
    pygame.quit()
    

    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2020 à 23:52:45

      Salut,

      Je te suggère de faire des superpositions d'images. Le fond de départ est une image simple avec X cercles non remplis. À chaque clic, on calcule la coordonnée du curseur de la souris, selon le résultat, d'abord, on vérifie qu'il n'y a pas de quartier car dans ce cas, pas la peine d'aller plus loin, puis on calcule l'orientation. Comme il y a 4 quartiers par cercle, il suffit de lui attribuer un compteur à rebours, quand le compteur atteint 0 on détruit le cercle.

      Je crois que la zone d'un cercle dont tu parles existe déjà parce que de mémoire, le cercle est inscrit dans un carré à sa création, d'ailleurs, on crée des ellipses si la forme est inscrite dans un rectangle. Tu peux tricher un peu en mettant les coordonnées d'un 1/4 de carré supérieur gauche pour un quartier supérieur gauche, ou alors faire un peu de trigonométrie, c'est relativement simple mais ça demande un peu plus de boulot

      • Partager sur Facebook
      • Partager sur Twitter

      Créer un jeu avec Pygame

      × 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