Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pygame sprite not moving
#1
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()
Reply
#2
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()
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [PyGame] Sprites just randomly appear and dissapear in my pygame.sprite.GoupeSingle trueShadoWrr 2 1,975 Feb-13-2023, 09:34 AM
Last Post: Vadanane
  [PyGame] Pygame is treating blob_group as a surface, when I need it to treat it as a Sprite. Swagford 1 1,301 Jan-24-2023, 09:58 PM
Last Post: metulburr
  FileNotFoundError when I try putting sprite in Pygame zionkozisek 9 16,069 Dec-09-2020, 04:42 AM
Last Post: zionkozisek
  [PyGame] My Pygame Sprite not appearing... noodlespinbot 3 3,830 Oct-30-2020, 06:51 AM
Last Post: robinmurphy
  My Pygame Sprite not appearing... noodlespinbot 1 2,259 Apr-08-2020, 11:25 AM
Last Post: pyzyx3qwerty
  [PyGame] Sprite image.get_rect() moves sprite to 0, 0 michael1789 2 4,595 Dec-13-2019, 08:37 PM
Last Post: michael1789
  [pygame] Moving an object at angles SheeppOSU 3 8,557 Oct-24-2019, 08:05 PM
Last Post: SheeppOSU
  Sprite not rendering Clunk_Head 2 2,137 Oct-03-2019, 11:27 AM
Last Post: Clunk_Head
  Need help making a sprite GalaxyCoyote 4 3,236 Aug-11-2019, 09:12 PM
Last Post: metulburr
  [PyGame] pygame.draw.rect function stretches across the screen instead of moving BubblesTheGiraffe 2 3,644 Jun-11-2019, 08:32 PM
Last Post: metulburr

Forum Jump:

User Panel Messages

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