每当我运行游戏时,它都会显示TypeError:draw_window()缺少2个必需的位置参数:'红色'



很抱歉,这是一个非常基本的问题,但我已经尝试过查看代码,但它不起作用。这是我的代码:

import pygame
import os
WIDTH, HEIGHT = 900, 500
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Simple Game')
WHITE = (255, 255, 255)
FPS = 60
SPACESHIP_WIDTH, SPACESHIP_HEIGHT = 55, 40
YELLOW_SPACESHIP_IMAGE = pygame.image.load(
os.path.join('Assets', 'spaceship_yellow.png'))
YELLOW_SPACESHIP = pygame.transform.rotate(pygame.transform.scale(
YELLOW_SPACESHIP_IMAGE, (SPACESHIP_WIDTH, SPACESHIP_HEIGHT)), 90 )
RED_SPACESHIP_IMAGE = pygame.image.load(
os.path.join('Assets', 'spaceship_red.png'))
RED_SPACESHIP = pygame.transform.rotate(pygame.transform.scale(
RED_SPACESHIP_IMAGE, (SPACESHIP_WIDTH, SPACESHIP_HEIGHT)), -90)
def draw_window(red, yellow):
WIN.fill(WHITE)
WIN.blit(YELLOW_SPACESHIP, (yellow.x, yellow.y))
WIN.blit(RED_SPACESHIP, (red.x, red.y))
pygame.display.update()

def main():
red = pygame.Rect(100, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT)
yellow = pygame.Rect(700, 300, SPACESHIP_WIDTH, SPACESHIP_HEIGHT)
clock = pygame.time.Clock()
run = True
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
red.x += 1
draw_window()
pygame.quit()

if __name__ == "__main__":
main()

每当我运行它时,我都会收到错误消息TypeError: draw_window() missing 2 required positional arguments: 'red' and 'yellow'有人知道为什么吗?我已经看了很多次代码,但我搞不清

当您在main((中调用该函数时,需要向其传递两个参数:

while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
red.x += 1
draw_window() <--- Here
pygame.quit()

传入两个值,如draw_window(red, yellow)

仅仅围绕它命名变量是不够的,您必须在调用函数时指定它们。

我认为这是因为您在倒数第四行调用draw_window((时没有任何参数。draw_window(红色、黄色(函数在没有您希望它使用的数据(红色和黄色(的情况下无法运行。

最新更新