简体   繁体   中英

pygame Rect argument is invalid

So in Python3 im using pygame and it has been fine up to this point i get this error

Here is he code ill add a # where the problem is

import pygame
import time
import random
pygame.init()

display_width = 800
display_height = 600

black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)

car_width = 73

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('drivin meh truck-by me')
clock = pygame.time.Clock()

carImg = pygame.image.load('truck.png')

def things(thingx, thingy, thingw, thingh, color):
    pygame.draw.rect(gameDisplay, color,[thingx, thingy, thingw, thingh]) #this is were i get the error

def car(x,y):
    gameDisplay.blit(carImg,(x,y))

def text_objects(text, font):
    textSurface = font.render(text, True, green)
    return textSurface, textSurface.get_rect()

def message_display(text):
    LargeText = pygame.font.Font('freesansbold.ttf',80)
    TextSurf, TextRect = text_objects(text,LargeText)
    TextRect.center = ((display_width/2),(display_height/2))
    gameDisplay.blit(TextSurf, TextRect)

    pygame.display.update()

    time.sleep(2)

    game_loop()

def crash():
    message_display('you done goofed')

def game_loop():

    x = (display_width * 0.45)
    y = (display_height * 0.8)

    x_change = 0

    thing_startx = random.randrange,(0, display_width)
    thing_starty = -600
    thing_speed = 7
    thing_width = 100
    thing_height = 100

    gameExit = False

    while not gameExit:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -5
                elif event.key == pygame.K_RIGHT:
                    x_change = 5

            if event.type == pygame.KEYUP:
               if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_change = 0

    x += x_change

    gameDisplay.fill(white)


    things(thing_startx, thing_starty, thing_width, thing_height, red)
    thing_starty += thing_speed
    car(x,y)

    if x > display_width - car_width or x < 0:
        crash()


    pygame.display.update()
    clock.tick(60)

game_loop()

pygame.quit()
quit()

I have no idea why this happens i even changed the brackets to [] {} and () and i still get the same error

You are using a list type and you should pass a tuple . This is the correct way:

pygame.draw.rect(gameDisplay, color,(thingx, thingy, thingw, thingh))

And you have a var problem, instead:

thing_startx = random.randrange(0, display_width)

You have:

thing_startx = random.randrange,(0, display_width)

The problem is a , .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM