我试图在python中构建一个基于文本的开放世界游戏。
world = [["=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","=","="],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
[" "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "],
]
for i in world:
for j in i:
print(j, end="")
print("")这段代码成功地打印了世界地图,尽管速度有点慢。有没有提高性能的方法?最终,我希望有一个巨大的地图,玩家可以移动,与敌人互动,NPC等。有什么办法,我可以加快渲染,以获得比.1 FPS更好?
我在Python3.7空闲版。
谢谢!
发布于 2018-11-27 14:58:06
String已经是python中的只读迭代器。所以你可以做这样的事
world = [
" X ",
" XXX ",
" X ",
]
for row in world:
print(row)但是,您确实应该尽量减少对print的更多调用,这是很慢的。也许你只能用一个三倍引号的字符串?
world = """\
X
XXX
X """
print(world)哪个字符串可以通过计数(i,j)元素前面的字符数来访问它。每一行都有board_width + 1字符(不要忘记计算换行符),在元素(i,j)之前有j行。另外,在0上索引时,i元素与(i,j)在同一行,但在(i,j)的左侧,所以(i,j)元素是world[(row_width + 1) * j + i]。
如果您想保持双数组,因为它是可变的,那么在打印它之前,考虑将它合并到一个字符串中。为此,请使用map在一次调用中合并每一行。
displayedWorld = "\n".join(map("".join, world))edit1:您可以像TrebuchetMS那样理解列表,但实际上它在python3中构建了一个列表,map将创建一个迭代器,它不需要在调用"\n".map之前存储所有已转换的行,而是动态计算转换行的列表,而不将它们存储在列表中。
edit2:对于世界的部分呈现,只需在构建字符串之前使用列表的范围选择即可。例如,worldj1 1:j2只包含从索引j1 (包括)到索引j2 (排除的)的世界行。因此,如果要显示从(i,j)生成的具有维度(w,h)的矩形,请执行以下操作:
displayedWorld = "\n".join(map(lambda row: "".join(row[i:i+w]), world[j:j+h]))这使用了一个新的成语lambda,它只是一个未命名的函数。lambda lambda row: "".join(row)等效于方法"".join。因此,lambda row: "".join(row[i:i+w])只将行中的i和i+w合并。注意,在这个世界上,我们也只选择了从j到j+h的行。
发布于 2018-11-27 14:46:25
使用.join()可以快速地将列表串在一起。
print('\n'.join([''.join(row) for row in world]))空闲时,print的开销很大。您最好希望在打印字符串之前编译它,以获得最佳性能。
发布于 2018-11-27 14:51:48
如果您在linux / osx上,可以查看curses。使用该库,您可以单独绘制像素,而不是每次都重新绘制。
当涉及到一个巨大的地图时:只绘制当前可见的地图部分。
https://stackoverflow.com/questions/53502169
复制相似问题