1

I am new to pygame. I've coded on Python before but never in pygame. I've made a code which plays a sound when certain keys are clicked and now I tried to make in image moving every time that the user click with his mouse.

import pygame, os, sys

pygame.init()
screen = pygame.display.set_mode((1300,1300))
screen.fill((250,250,250))

img = pygame.image.load(os.path.join(sys.path[0],"fonddecran.v1.jpg"))
screen.blit(img, (0, 0))
pygame.display.flip()
barrel=pygame.image.load(os.path.join(sys.path[0],"barrel-man.jpg"))
pygame.display.flip()
pygame.mixer.init()

it = true
while it:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            it=False

        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 3:
                pygame.mixer.music.load(os.path.join(sys.path[0],"Mi-mineur.mp3"))
                pygame.mixer.music.play()
            elif event.button == 1:
                screen.blit(barrel,event.pos)
                pygame.display.flip()

        elif event.type == pygame.KEYUP:
            if event.key == ord('b'):
                pygame.mixer.music.load(os.path.join(sys.path[0],"Mi-mineur.mp3"))
                pygame.mixer.music.play()
pygame.quit()

Unfortunately, the image just appears one more time every time. How can I delete it so it looks like it has moved?

Ted Klein Bergman
  • 9,146
  • 4
  • 29
  • 50
S H
  • 415
  • 3
  • 14

1 Answers1

2

To be able to "move" the image, you have to redraw the scene in each frame. Add a variable that stores the position of the image. Change the variable to the mouse position when you click the mouse:

import pygame, os, sys

pygame.init()
screen = pygame.display.set_mode((1300,1300))

img = pygame.image.load(os.path.join(sys.path[0],"fonddecran.v1.jpg"))
barrel=pygame.image.load(os.path.join(sys.path[0],"barrel-man.jpg"))
pygame.mixer.init()

barrel_pos = None

it = True
while it:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            it=False

        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 3:
                pygame.mixer.music.load(os.path.join(sys.path[0],"Mi-mineur.mp3"))
                pygame.mixer.music.play()
            elif event.button == 1:
                barrel_pos = event.pos

        elif event.type == pygame.KEYUP:
            if event.key == ord('b'):
                pygame.mixer.music.load(os.path.join(sys.path[0],"Mi-mineur.mp3"))
                pygame.mixer.music.play()

    screen.fill((250,250,250))
    screen.blit(img, (0, 0))
    if barrel_pos:
        screen.blit(barrel, barrel_pos)
    pygame.display.flip()

pygame.quit()
Rabbid76
  • 202,892
  • 27
  • 131
  • 174