So I recently made a game in python where the player collects green dots. It's unfinished, I'll implement more into the game later.
But I have a problem. I want my sprite to move using the arrow keys, change the position of X and Y depending on which key is used and ignore the rest. But it gives me an error saying that I am missing other arguments. Is there a way around this?
Code:
import pygame
import sys
import random
class Player(pygame.sprite.Sprite):
def __init__(self, width, height, posX, posY, color):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.center = [posX, posY]
self.eat = pygame.mixer.Sound("audio/Apple_Bite-Simon_Craggs-1683647397.mp3")
def __call__(self, posX, posY):
self.rect.center = [posX, posY]
class Target(pygame.sprite.Sprite):
def __init__(self, width, height, posX, posY, color):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.center = [posX, posY]
self.eat = pygame.mixer.Sound("audio/Apple_Bite-Simon_Craggs-1683647397.mp3")
def eat(self):
self.eat.play()
pygame.sprite.spritecollide(player, target_group, True)
pygame.init()
screen_width = 600
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))
player = Player(50, 50, 300, 250, (0, 255, 127))
player_group = pygame.sprite.Group()
player_group.add(player)
player_group.update()
target_group = pygame.sprite.Group()
for target in range(6):
target_sprite = Target(25, 25, random.randrange(15, screen_width), random.randrange(15, screen_height),
(127, 255, 0))
target_group.add(target_sprite)
run = True
while run:
screen.fill((0, 16, 16))
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
change_pos = Player(posX=-0, posY=+0.4)
if event.key == pygame.K_UP:
change_pos = Player(posX=-0, posY=-0.4)
player_group.draw(screen)
player_group.update()
target_group.draw(screen)
target_group.update()
pygame.display.update()
It gives me this error FYI:
TypeError: __init__() missing 3 required positional arguments: 'width', 'height', and 'color'
Plus I am new, anyways thx.