Arun
Arun

Reputation: 3

Pygame sprite won't move

so I'm trying to program a simple game for a school project but I'm kinda suffering right now. I'm trying to get the sprite to move but it just doesn't want to could someone tell me what I'm doing wrong, please? Here's my code sofar:

import pygame
from pygame.locals import *

clock = pygame.time.Clock()
fps = 60
size = 1000, 700
screen = pygame.display.set_mode(size)
pygame.display.set_caption('game')

sky = pygame.image.load("bilder/sky.png")
sky = pygame.transform.scale(sky, (1000, 700))
def draw_sky():
    screen.blit(sky, (0,0))


class Ekkdie(pygame.sprite.Sprite):
    def __init__(self, x, y):
       super().__init__()
       self.image = pygame.image.load("bilder/ekkdie.png")
       self.rect = self.image.get_rect()
       self.rect.center = [x,y]
    def update(self):
       keys = pygame.key.get_pressed()
       if keys[pygame.K_LEFT]:
           self.rect.x -= 7
       if keys[pygame.K_RIGHT]:
           self.rect.x += 7
       if keys[pygame.K_UP]:
           self.rect.y -= 7
       if keys[pygame.K_DOWN]:
           self.rect.y += 7

ekkdie = Ekkdie(100, 100)
ekkdie_group = pygame.sprite.Group()
ekkdie_group.add(ekkdie)
                                        
run = True
while run:

    clock.tick(fps)
    draw_sky()
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    pygame.display.flip()
    ekkdie_group.draw(sky)
    ekkdie.update()
    pygame.display.update()

pygame.quit()

Upvotes: 0

Views: 53

Answers (1)

likepython
likepython

Reputation: 16

You have to draw the sprite in the screen not in the sky image . Also i used a surface because you didn't upload your images. pygame.display.flip() is not neccesary because you are using pygame.display.update()

import pygame
from pygame.locals import *

clock = pygame.time.Clock()
fps = 60
size = 1000, 700
screen = pygame.display.set_mode(size)
pygame.display.set_caption('game')

sky = pygame.Surface(size)
def draw_sky():
    screen.blit(sky, (0,0))


class Ekkdie(pygame.sprite.Sprite):
    def __init__(self, x, y):
       super().__init__()
       self.image = pygame.Surface((100,100))
       self.image.fill('red')
       self.rect = self.image.get_rect()
       self.rect.center = [x,y]
    def update(self):
       keys = pygame.key.get_pressed()
       if keys[pygame.K_LEFT]:
           self.rect.x -= 7
       if keys[pygame.K_RIGHT]:
           self.rect.x += 7
       if keys[pygame.K_UP]:
           self.rect.y -= 7
       if keys[pygame.K_DOWN]:
           self.rect.y += 7

ekkdie = Ekkdie(100, 100)
ekkdie_group = pygame.sprite.Group()
ekkdie_group.add(ekkdie)
                                        
run = True
while run:

    clock.tick(fps)
    
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    
    draw_sky()
    ekkdie_group.draw(screen)
    ekkdie.update()
    pygame.display.update()

pygame.quit()

Upvotes: 0

Related Questions