【发布时间】:2021-04-25 11:29:27
【问题描述】:
所以我最近用python制作了一个玩家收集绿点的游戏。未完成,稍后我会在游戏中实现更多。
但是我有一个问题。我希望我的精灵使用箭头键移动,根据使用的键更改 X 和 Y 的位置并忽略其余部分。但这给了我一个错误,说我缺少其他论点。有没有办法解决这个问题?
代码:
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()
它给了我这个错误仅供参考:
TypeError: __init__() missing 3 required positional arguments: 'width', 'height', and 'color'
另外我是新人,无论如何谢谢。
【问题讨论】: