我正在使用两个范围在第二场比赛中放置牌,所以我已经创建了一个' tilemap' ...
tilemap = [ [TILE for w in range(MAPWIDTH)] for h in range(MAPWIDTH)]
这有效...现在我想附加一个名为' piecemap'的类的实例。对应于tilemap。要做到这一点,我有一个名为Piece的类,看起来像这样......
class Piece():
otherstuff = "string"
location = [0,0]
我的问题是如何加载" w"宽度范围和" h"在高度范围内进入"位置"属性使用列表理解?目前我的努力(不起作用)看起来像这样......
piecemap = [[Piece.location[0] for w in range(MAPWIDTH)],[Piece.location[1] for h in range(MAPHEIGHT)]
我知道这是错的,但不知道如何做对!有什么帮助吗?
答案 0 :(得分:5)
class Piece():
otherstuff = "string"
location = [0,0]
这是一个非常奇怪的课程。您有类属性otherstuff
和location
,就好像每个创建的Piece
都会占用相同的位置。
相反,您可能需要实例属性,如下所示:
class Piece:
def __init__(self, x, y, name="Unspecified"):
self.location = [x,y]
self.otherstuff = name
然后你的列表理解如下:
tilemap = [ [Piece(w, h) for w in range(MAPWIDTH)] for h in range(MAPWIDTH)]
答案 1 :(得分:2)
根据我的阅读,我假设位置是每个instance
的属性(不是类属性)。 name
属性(可能)也是如此。
因此,我会在创建此类对象时设置位置:
class Piece():
otherstuff = "string"
def __init__(self,x,y):
self.location = [x, y]
# self.otherstuff = name # add it to the parameters if that's the case
piecemap = [[Piece(w,h) for h in range(MAPWIDTH)] for w in range(MAPHEIGHT)]
答案 2 :(得分:1)
我不知道您需要的是什么类,但您可以使用Copying to output path
C:\Users\Me\AppData\Local\Temp\PublishTemp\TestProject113
C:\TestInstalls\TestProject113\wrap\MyTestService\project.lock.json(1,0):
Error : The expected lock file doesn't exist.
Please run "dnu restore" to generate a new lock file.
函数检索所有位置:
zip
答案 3 :(得分:1)
你需要这样的东西:
>>> [[x,y] for x in range(3) for y in range(2)]
[[0, 0], [0, 1], [1, 0], [1, 1], [2, 0], [2, 1]]
在你的情况下,它可能是:
piecemap = [[Piece.location[0], Piece.location[1]] for w in range(MAPWIDTH)] for h in range(MAPHEIGHT)]
但我不确定你真正期待的是什么
答案 4 :(得分:1)
你不想要这样的东西:
tilemap = [ (w, h) for w in range(MAPWIDTH) for h in range(MAPWIDTH)]
MAPWIDTH = 3
[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1) ),(2,2)
然后你可以创建你的" Piece"对象