1
我遇到了我的代碼問題,我根本無法弄清楚。詞典沒有正確填充
由於每個代碼以下部分:
在Generate_Game_World
類創建第二個字典(worldmap)
後,HQ位置存儲在
self.worldmap[HQLOCATIONX,HQLOCATIONY]["Region_Type"] = "HQ"
但是,這樣做後,它似乎填補整個陣列具有「HQ」值,如測試窗口中所示。我簡直無法弄清楚爲什麼會發生這種情況。
import pygame
from tkinter import *
test = Tk()
test.geometry = ("640x480")
pygame.init()
WORLDSIZE = 499
HQLOCATIONX = int(WORLDSIZE/2)
HQLOCATIONY = int(WORLDSIZE/2)
class Generate_Game_World():
regionData = {"Region_Type" : "None",
"Region_Level" : 0}
def __init__(self, mapSize):
self.mapSize = mapSize
def main (self):
# creates 2d map
self.worldmap = {(x,y) : self.regionData for x in range(self.mapSize) for y in range (self.mapSize)}
# Sets the HQ to worldmap(249,249)
self.worldmap[HQLOCATIONX,HQLOCATIONY]["Region_Type"] = "HQ"
# checks worldmap(0,0) --> (10,10) for its Region Type
for x in range (10):
for y in range (10):
label = Label (text=self.worldmap[x,y]["Region_Type"]).grid(row = x, column=y)
class Game (object):
def main (self, screen):
gameworld = Generate_Game_World(WORLDSIZE)
gameworld.main()
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
return
test.mainloop()
pygame.display.flip()
if __name__ == "__main__":
screen = pygame.display.set_mode((1024, 768))
Game().main(screen)
我提供的代碼只是項目較大部分的一個片段,它隔離了給我帶來麻煩的區域。 這些鍵用於在引用它們時顯示拼貼。 None.png,HQ.png等 – Jess
@Jess:對,在這種情況下,你想創建字典的副本。如果您的'regionData'字典包含其他可變值,請改爲使用'copy.deepcopy()'。 –
我已經浪費了2個多小時試圖弄清楚這一點,並且幫助我節省了很多很多時間。謝謝 :) – Jess