Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
moving image with blit
#1
Hi,

I am developing a game where the player sprite will move automatically after rolling a dice. based on the number of dice it will move the sprite to the specific mouse location but it is not working! I can see it moves but gets back to its original position which is set before the while loop.

Code:
while done == False:
    screen.fill(WHITE)

    # move the image based on the dice answer
    moveList = {1: [80, 555], 2: [140, 555], 3: [200, 555], 4: [260, 555], 5: [320, 555], 6: [380, 555], 7: [440, 555],
                8: [500, 555], 9: [560, 555], 10: [620, 555]}

    # mouse = pygame.mouse.get_pos()
    # mouseX = mouse[0]
    # mouseY = mouse[1]
    # print (mouseX, mouseY)

    screen.blit(bg_image,[45,0])
    screen.blit(player1_img, [0, 545])
    screen.blit(player2_img, [0, 565])
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
            pygame.quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_r and roll == False:
                roll = True
            elif event.key == pygame.K_r and roll == True:
                roll = False
                # switch player unless it is 6
                if player == 1 and num == 6:
                    thepos = moveList[num]
                    theXpos = thepos[0]
                    theYpos = thepos[1]
                    screen.blit(player2_img, [theXpos, theYpos])
Reply
#2
we need your whole code.

You should be using pygame rects for positioning, not arbitrary x and y positions.
Recommended Tutorials:
Reply
#3
(Jul-09-2019, 04:59 PM)rwahdan Wrote:
while done == False:
    screen.fill(WHITE)
# ...snip...
    screen.blit(bg_image,[45,0])
    screen.blit(player1_img, [0, 545])
    screen.blit(player2_img, [0, 565])
# ...snip...

Every iteration, you draw the players at the same spot, right before checking for events. If you want them to move, you need to track their current location somewhere (and probably initialize that location to (0, 545)), and update it when you want them to move.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [PyGame] pygame blit() method syafiq14 1 4,897 Oct-30-2020, 04:46 PM
Last Post: Russ_CW
  index error when using lists to blit rotated images codefun45 7 3,545 Sep-03-2020, 11:11 PM
Last Post: codefun45
  How to change the player image, when moving Piethon 2 1,931 Feb-26-2020, 07:29 AM
Last Post: Piethon
  [PyGame] I found a way to generate sprites without .blit. Is it effecient? xBlackHeartx 19 8,418 Dec-07-2019, 01:06 PM
Last Post: metulburr
  error with survace.blit joemcsk1 3 4,458 Aug-06-2018, 12:23 AM
Last Post: metulburr

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020