“ Rect参数无效”

问题描述

我一直在尝试编写游戏,但它一直给我一个"rect argument is invalid"错误。如果有人可以告诉我我在做什么错,那太好了。我相信它与代码中的列表和元组有关,但是我已经对其进行了彻底的审查,但它无法正常运行。该代码只是不断向我显示相同的错误消息。

我的代码

import pygame
import sys
import random

pygame.init()

Width = 800
Height = 600

Red = (255,0)
Blue = (0,255)
White = (255,255,255)
backgroundColor = (0,0)

playerSize = 50
playerPos = [100,300]

columnSize = [50,150]
columnPos1 = [700,random.randint(0,100))]
columnPos2 = [700,random.randint(400,500))]

screen = pygame.display.set_mode((Width,Height))

game_over = False

clock = pygame.time.Clock()

while not game_over:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
            
        if event.type == pygame.KEYDOWN:

            x = playerPos[0]
            y = playerPos[1]

            if event.key == pygame.K_LEFT:
                x -= 20
            elif event.key == pygame.K_RIGHT:
                x += 20
            elif event.key == pygame.K_UP:
                y -= 20
            elif event.key == pygame.K_DOWN:
                y += 20
            
            playerPos = [x,y]

    screen.fill(backgroundColor)
    if columnPos1[0] >= 0 and columnPos1[0] < Width and columnPos2[0] >= 0 and columnPos2[0] < Width:
        columnPos1[0] -= 10
        columnPos2[0] -= 10
    else:
        columnPos1[0] = 700
        columnPos2[0] = 700

        columnPos1[1] = [700,100))]
        columnPos2[1] = [700,500))]

    pygame.draw.rect(screen,Red,(playerPos[0],playerPos[1],playerSize,playerSize))
    pygame.draw.rect(screen,(columnPos1[0],columnPos1[1],columnSize[0],columnSize[1])) #this is where rect is invalid
    pygame.draw.rect(screen,(columnPos2[0],columnPos2[1],columnSize[1])) #here as well

    clock.tick(30)

    pygame.display.update()

添加后,错误开始发生

columnPos1[1] = [700,100))]
columnPos2[1] = [700,500))]

解决方法

columnSize[50,150],所以您的rect参数看起来像

(columnPos1[0],columnPos1[1],[50,150],150])

您可能是想

(columnPos1[0],columnSize[0],columnSize[1])
,

好的,所以我解决了这个问题:

代替此:

columnPos1[1] = [700,random.randint(0,100))]
columnPos2[1] = [700,random.randint(400,500))]

我应该这样做:

columnPos1[1] = random.randint(0,100))
columnPos2[1] = random.randint(0,500))