无法弄清楚如何根据变量修改列表(例如Objects [variable [variable2]])

时间:2015-12-05 14:27:47

标签: python arrays list pygame

我试图为一个项目制作一个简单的游戏,我需要游戏能够处理多个矩形对象(可能大约10-15但显然我不想要每个都有一个函数)。

我遇到的问题是我希望Python访问例如 对象是一个包含所有矩形的列表(当前是Rct0和Rct1)所以我想要一个函数能够修改/访问Objects [variable [variable2]],所以我想说要在Objects中更改Rectangle 1的Color,我该怎么办?去做 ?当我试图筑巢时#39;它,它总是抛出一个错误。 我在下面提供了我的代码。

import pygame, sys, time, random
from pygame.locals import *

pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()

cWhite = pygame.Color(255,255,255)
cGray = pygame.Color (70,70,70)
cRed = pygame.Color (255,0,0)
cBlue = pygame.Color (0,0,255)
cCyan = pygame.Color (0,255,255)
cGreen = pygame.Color (0,255,0)


global cycleCount, longCycle, pause
cycleCount = 0
longCycle = 0
pause = False
global x, y, cID, rID, objCount
global Objects, Rct0, Rct1
Rct0 = [0,0,0,0,0]
Rct1 = [0,0,0,0,0]
Objects = [[Rct0],[Rct1]]


def spawnRandomizer():
    global x, y, cID, rID
    x = 440
    y = random.randrange(60,440)
    cID = random.choice(colours)
    rID = 0
    Objects[rID] = [x, y, cID, 1, 1]
    print(Objects[rID])


def drawRectangle():
    global x, y, cID, rID
    Objects[rID] = [x, y, cID, 1, 1]
    pygame.draw.rect(Window, cGreen, (Rct0[0], Rct0[1], 50, 50))


#FRAME LOOP

while True:
    Window=pygame.display.set_mode((500,500), 0, 32)
    pygame.display.set_caption('Rectangle generator')
    Window.fill(cWhite)

    if cycleCount == 0:
        spawnRandomizer();
    drawRectangle();






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


    if cycleCount == 30:
        cycleCount = 0

    if longCycle == 300:
        longCycle = 0

    cycleCount = cycleCount + 1
    longCycle = longCycle + 1
    pygame.display.update()
    fpsClock.tick(30)

1 个答案:

答案 0 :(得分:0)

我发现你可以做Objects [0] [1]或Objects [variable1] [variable2]所以我解决了我的问题。我之前因某种原因无法找到它。