Python Forum
moving image with blit - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Game Development (https://python-forum.io/forum-11.html)
+--- Thread: moving image with blit (/thread-19671.html)



moving image with blit - rwahdan - Jul-09-2019

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])



RE: moving image with blit - metulburr - Jul-09-2019

we need your whole code.

You should be using pygame rects for positioning, not arbitrary x and y positions.


RE: moving image with blit - nilamo - Jul-10-2019

(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.