Currently the objects do not react or move at all when key is being pressed. I'm trying to make a game with a player(menneske, menneske_gruppe)) that can move with the arrowkeys. And a couple enemysprites(spokelse, spokelser_gruppe) that will move on their own, but only inside the inner square of the game.
I've managed to draw all my object but i'm not able to move them. There is no edit code, but my objects don't move at all. And the player does not react when i press the arrow keys.
Here's all my code:
# Write your code here :-)
import pygame as pg
from pygame.locals import (K_UP, K_DOWN, K_LEFT, K_RIGHT)
import math as m
import random
# Initialize Pygame
pg.init()
class Spillebrett():
def __init__(self, bredde:int,hoyde:int, objektListe):
self.bredde = bredde
self.hoyde = hoyde
self.objektListe = []
def lagSpillebrett(self):
"""metode for å lage spillebrettet"""
spillebrett = pg.display.set_mode((self.bredde, self.hoyde))
spillebrett.fill((47, 79, 79))
frisone1 = pg.draw.rect(spillebrett, (240,240,179), (0,0,self.bredde/5,self.hoyde))
frisone2 = pg.draw.rect(spillebrett, (240,240,179), (self.bredde*4/5,0,self.bredde/5,self.hoyde))
def leggTilObjekt(spillobjekt):
self.objektliste.append(spillobjekt)
def fjernObjekt(spillobjekt):
self.objektliste.remove(spillobjekt)
class SpillObjekt(pg.sprite.Sprite):
def __init__(self, xposisjon:int, yposisjon:int, bredde:int, hoyde:int, farge, brett):
super().__init__()
self.xposisjon = xposisjon
self.yposisjon = yposisjon
self.bredde = bredde
self.hoyde = hoyde
self.farge = farge
self.brett = brett
def tegn(self):
"""Metode for å tegne figuren"""
pg.draw.rect(self.brett, self.farge, (self.xposisjon, self.yposisjon, self.bredde, self.hoyde))
def finnAvstand(self, annetObjekt):
"""Metode for å finne avstanden til et annet objekt"""
xAvstand2 = (self.x - annetObjekt.x)**2 # x-avstand i andre
yAvstand2 = (self.y - annetObjekt.y)**2 # y-avstand i andre
sentrumsavstand = m.sqrt(xAvstand2 + yAvstand2)
radiuser = self.radius + annenBall.radius
avstand = sentrumsavstand - radiuser
return avstand
class Menneske(SpillObjekt):
def __init__(self, xposisjon, yposisjon, bredde, hoyde, farge, brett, fart:int, poeng:int, bererSau:bool):
super().__init__(xposisjon, yposisjon, bredde, hoyde, farge, brett)
self.image = pg.Surface([bredde, hoyde])
self.image.fill(farge)
self.rect = self.image.get_rect()
self.rect.center = [xposisjon, yposisjon]
self.fart = fart
self.poeng = poeng
self.bererSaur = bererSau
def update(self, taster):
"""Metode for å flytte spilleren"""
if taster[K_UP]:
self.yposisjon -= self.fart
if taster[K_DOWN]:
self.yposisjon += self.fart
if taster[K_LEFT]:
self.xposisjon -= self.fart
if taster[K_RIGHT]:
self.xposisjon += self.fart
def reduserFart(int):
self.fart = self.fart - 0.2
def økPoeng(int):
self.poeng = self.poeng + 1
class Spokelse(SpillObjekt):
def __init__(self, xposisjon, yposisjon, bredde, hoyde, farge, brett, xFart, yFart):
super().__init__(xposisjon, yposisjon, bredde, hoyde, farge, brett)
self.xFart = xFart
self.yFart = yFart
self.image = pg.Surface([bredde, hoyde])
self.image.fill(farge)
self.rect = self.image.get_rect()
self.rect.center = [xposisjon, yposisjon]
self.dx = 0.5 # Or whatever speed you want you enemies to walk in.
self.platform = brett
def update(self):
"""Metode for å flytte spøkelse"""
# Sjekker om hinderet er utenfor høyre/venstre kant
if ((self.xposisjon - 0.1) <= 160) or ((self.xposisjon + self.bredde) >= 840):
self.xFart = -self.xFart
# Sjekker om hinderet er utenfor øvre/nedre kant
if ((self.yposisjon- 0.1) <= 0) or ((self.yposisjon + self.hoyde) >= self.brett.get_height()):
self.yFart = -self.yFart
# Flytter hinderet
self.xposisjon += self.xFart
self.yposisjon += self.yFart
objektliste = []
spillebrett = pg.display.set_mode((1000, 600))
#Lager spillerobjektet
menneske_gruppe = pg.sprite.Group()
menneske = Menneske(10,300,15, 30, (255, 38, 129), spillebrett, 0.1, 0, False)
menneske_gruppe.add(menneske)
# Lager et Hinder-objekt
spokelser_gruppe = pg.sprite.Group()
for s in range(7):
spokelse = Spokelse(random.randrange(160,840), random.randrange(0,600), 15, 32, (255,255,255), spillebrett, 0.08, 0.12)
spokelser_gruppe.add(spokelse)
pg.display.flip()
# Gjenta helt til brukeren lukker vinduet
fortsett = True
while fortsett:
# Sjekker om brukeren har lukket vinduet
for event in pg.event.get():
if event.type == pg.QUIT:
fortsett = False
# Henter en ordbok med status for alle tastatur-taster
trykkede_taster = pg.key.get_pressed()
spillebrett.fill((47, 79, 79))
frisone1 = pg.draw.rect(spillebrett, (240,240,179), (0,0,160,600))
frisone2 = pg.draw.rect(spillebrett, (240,240,179), (840,0,160,600))
# Tegner og flytter spiller og hinder
menneske_gruppe.draw(spillebrett)
menneske_gruppe.update(trykkede_taster)
spokelser_gruppe.draw(spillebrett)
spokelser_gruppe.update()
# Oppdaterer alt innholdet i vinduet
pg.display.flip()
# Avslutter pygame
pg.quit()