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.
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))
...
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
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.
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))
...
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