Pygame, TypeError: Rect Argument Invalid

Question:

I’ve a problem with my code it says, TypeError: rect argument is invalid.

I’m very new at this, and i dont know how to solve the problem.
I’m using pygame and python 2.7.

import pygame
import random
pygame.init()

black    = (   0,   0,   0)
white    = ( 255, 255, 255)
blue     = (  20,  90, 150)
green    = (   0, 255,   0)
dkgreen  = (   0, 100,   0)
red      = ( 200,  60,   60)
purple   = (0xBF,0x0F,0xB5)
brown    = (0x55,0x33,0x00)

def background(screen):
    screen.fill(black)
size=[510,510]
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Cheese")

tab=[[[30*i,30*j] for i in range(17)] for j in range(17)]
clock=pygame.time.Clock()

player=[]
for k in range(5):
    playerIm=pygame.image.load("player"+str(k)+".gif").convert()
    playerIm.set_colorkey(white)
    player.append(playerIm)
PlaYerimg=player[0]
xj=0
yj=0

done=False
while done == False:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            done=True

    #TECLAS        
    if event.type==pygame.KEYDOWN:
        if event.key==pygame.K_LEFT:
            PlaYerimg=player[4]
            if xj>0:
                xj=xj-1
        elif event.key==pygame.K_RIGHT:
            PlaYerimg=player[2]
            if xj<16:
                xj=xj+1
        elif event.key==pygame.K_UP:
            PlaYerimg=player[1]
            if yj>0:
                yj=yj-1
        elif event.key==pygame.K_DOWN:
            PlaYerimg=player[3]
            if yj<16:
                yj=yj+1


    background(screen) #define a cor do ecra
    pos=pygame.mouse.get_pos() 

    mousestat=pygame.mouse.get_pressed()
    print pos

    count=0
    for i in range(17):
        for j in range(17):
            x=tab[i][j][0]
            y=tab[i][j][1]
            if count%2==0:
                pygame.draw.rect(screen, white,[x,y,30,30])
            else:
                pygame.draw.rect(screen, black,[x,y,30,30])
            count=count+1

    screen.blit(PlaYerimg, tab[yj][xj])        
    pygame.display.flip()
    clock.tick(20)
pygame.quit()

The problem is in the argument of rect, but I’m passing the right argument.

Asked By: user5405099

||

Answers:

The 3rd argument must be a tuple. Replace [], by ()

pygame.draw.rect(screen, white,(x,y,30,30))
...
pygame.draw.rect(screen, black,(x,y,30,30))
...               
Answered By: Andre
obstacle0 = pygame.draw.rect(screen, red, [obstacles[0], 200, 20, 20])
obstacle1 = pygame.draw.rect(screen, orange, [obstacles[1], 200, 20, 20])
obstacle2 = pygame.draw.rect(screen, yellow, [obstacles[2], 200, 20, 20])

My problem is: obstacle0 = pygame.draw.rect(screen, red, [(obstacles[0], 200), 20, 20])
TypeError: rect argument is invalid

Answered By: TWO
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.