TypeError:Rect参数无效

时间:2016-12-19 21:16:50

标签: python rect

好的,所以我是Python的新手,也是一般的编程。但最近我一直在取得进展,并决定在http://www.usingpython.com上试用2D Minecraft教程 - 当我去运行代码时,这是不完整的,因为它是在教程的开头,它给了我这个错误:TypeError:Rect参数无效

教程说我应该看到一个带有我的多色2D阵列的窗口,但是它是一个黑色的窗口,几秒后消失并显示我说错误..

这就是我所拥有的,“rect”有什么问题?我相信,如果我没有遗漏任何东西,那就是他用来教授的代码的完美副本..沮丧,有帮助吗?谢谢!!

import pygame
from pygame.locals import*

#Color link to constants
BLACK = (0, 0, 0)
BROWN = (153, 76, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

#Constants, Same as variables but never changing - they're constant!
DIRT = 0
GRASS = 1
WATER = 2
COAL = 3

#Dictionary Linking Resources to colors
colors = {
          DIRT : BROWN,
          GRASS :GREEN,
          WATER : BLUE,
          COAL : BLACK
}

#THE 2D ARRAY
tilemap = [
           [GRASS, COAL, DIRT],
           [WATER, WATER, GRASS],
           [COAL, GRASS, WATER],
           [DIRT, GRASS, COAL],
           [GRASS, WATER, DIRT]
]

#Useful Game Dimensions
TILESIZE = 40
MAPWIDTH = 3
MAPHEIGHT = 5

#Set up the display for PYGAME


pygame.init()
DISPLAYSURF =  pygame.display.set_mode((MAPWIDTH*TILESIZE,MAPHEIGHT*TILESIZE))
while True:

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

    for row in range(MAPHEIGHT):
        for column in range(MAPWIDTH):
         pygame.draw.rect(DISPLAYSURF, colors[tilemap[row][column]],     (column*TILESIZE,TILESIZE,TILESIZE))    
    pygame.display.update() 

1 个答案:

答案 0 :(得分:1)

您在这里错过了pygame.Rect参数:

pygame.draw.rect(DISPLAYSURF, colors[tilemap[row][column]],     (column*TILESIZE,TILESIZE,TILESIZE)) 

第三个参数必须是pygame.Rect对象,你必须使用4个整数参数构建它(还有其他可能性)

  

类Rect(builtins.object)    |矩形(左,顶,宽,高) - >矩形

这在语法上是正确的,因为quapka注意到一个参数从原始链接丢失了所以应该没问题:

pygame.draw.rect(DISPLAYSURF, colors[tilemap[row][column]], pygame.Rect(column*TILESIZE,row*TILESIZE, TILESIZE,TILESIZE)) 

编辑:我刚检查过,只要您提供4个参数,就不需要明确传递pygame.Rect

pygame.draw.rect(DISPLAYSURF, colors[tilemap[row][column]], (column*TILESIZE,row*TILESIZE, TILESIZE,TILESIZE)) 

您收到错误,因为您错误地提供了3个参数。