Python Forum
Pygame sprite not moving - 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: Pygame sprite not moving (/thread-22357.html)



Pygame sprite not moving - michael1789 - Nov-09-2019

I started on a dungeon generator. So far I have it fill the map with square sprites, spawn another sprite to act as a "digger". I just have the digger move right, but I can't make it show on screen. The self.x changes with each go through the "for x in range..." but the image doesn't move. I'm sure it's something simple, but alas...

COMPLETE CODE:
import pygame
import random
import time

pygame.init()



width = 400
height = 400
tile_size = 50
window = pygame.display.set_mode((width, height))

class Wall(pygame.sprite.Sprite):
    def __init__(self, x, y):
        pygame.sprite.Sprite.__init__(self)
        
        self.image = pygame.draw.rect(window, (19, 40, 200), (x, y, tile_size, tile_size), 0)
        self.rect = pygame.Rect(x, y, tile_size, tile_size)
        self.x = x
        self.y = y
        print(self.x, self.y)
        pygame.display.flip()
        time.sleep(.01)

class Digger(pygame.sprite.Sprite):
    def __init__(self, x, y):
        pygame.sprite.Sprite.__init__(self)
        
    
        
        self.image = pygame.draw.rect(window, (200, 4, 20), (x, y, tile_size, tile_size), 0)
        self.rect = pygame.Rect(x, y, tile_size, tile_size)
        self.x = x
        self.y = y
        
    def dig(self):
        
        
        for i in range(0, 50): 
            self.x = self.x + 2
            diggers.update()
            pygame.display.flip()
           
        
def Fill_Map():

    for x in range(0, width, tile_size):
       for y in range(0, height, tile_size):
            
            wall = Wall(x, y)
            walls.add(wall)
   
walls = pygame.sprite.Group()
Fill_Map()
diggers = pygame.sprite.Group()
digger = Digger((width / 2), (height / 2)) 
diggers.add(digger)
digger.dig()



RE: Pygame sprite not moving - michael1789 - Nov-10-2019

Never mind... I rewrote the Digger class to read this and it worked. My image and my Rects weren't tied together I guess. So the program moved the rect but not the image.

class Digger(pygame.sprite.Sprite):
    def __init__(self, x, y):
        pygame.sprite.Sprite.__init__(self)
        
    
        
        self.image = pygame.Surface((tile_size, tile_size))
        self.image.fill(red)
        self.rect = self.image.get_rect()  
        self.rect.x = x
        self.rect.y = y
        
    def dig(self):
        
        
        for i in range(0, 70): 
            self.rect.x = self.rect.x + 2
            self.rect.y = self.rect.y + 2
            diggers.draw(window)
            print(self.rect.x)
            pygame.display.update()