0

この方法で新しいデータを使用して画面上に新しいオブジェクトを作成しようとしています:

spawnedObjectDict = dict()
while True: # main loop
if mouseClicked == True:
        RectangleName = "Rectangle" + str((len(spawnedObjectDict)))
        spawnedObjectDict[RectangleName] = SpawnedRectangle
        spawnedObjectDict[RectangleName].positionX = mouseX
        spawnedObjectDict[RectangleName].positionY = mouseY

これは、新しいオブジェクトを作成し、それらにマウスと等しい座標を割り当てる必要があります。ただし、それらすべてに新しいマウス座標が割り当てられ続けるため、それらは単に互いの上にスタックされます。最初は、1 つしか描画していないか、何らかの理由で dict に 1 つのオブジェクトしかないと思っていましたが、確認するためにこれを追加しました。

def drawRectCoords(RectName, theDict, x, y, size_x, size_y):
    for i in iter(theDict):
        BASICFONT = pygame.font.Font('freesansbold.ttf', 20)
        textSurf = BASICFONT.render(str(theDict['Rectangle0'].positionX) + ", " + \
                                    str(theDict['Rectangle0'].positionY), True, (255, 255, 255), (0, 0, 0))
        textRect = textSurf.get_rect()
        textRect.topleft = (x, y)


        textSurf2 = BASICFONT.render(str(len(theDict)) + ", " + RectName, True, (255, 255, 255), (0, 0, 0))
        textRect2 = textSurf2.get_rect()
        textRect2.topleft = (150, (20*len(theDict)))
        DISPLAYSURF.blit(textSurf, textRect)
        DISPLAYSURF.blit(textSurf2, textRect2)

案の定、Rectangle0 の座標は毎回変化していますが、textSurf2 は毎回更新され、RectangleName が変化し、spawnedObjectDict の長さが増加していることを示しています。

4

1 に答える 1

2

の新しいインスタンスを作成するには、次の操作SpawnedRectangleを行います。

spawnedObjectDict[RectangleName] = SpawnedRectangle()

SpawnedRectangle現在行っていることは、クラスを辞書のさまざまなキーに割り当てます。

于 2013-08-26T15:09:51.030 に答える