Reputation: 3
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
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