Python Turtle模块如何批量自动生成独立RawTurtle对象
批量生成同属性可独立标识的RawTurtle实体
- 需求:传入数量参数
a,批量生成属性统一的RawTurtle游戏实体,每个实体有独立标识支持单独调用,同时支持统一遍历操作
初始试错代码
def spawnEntity(a): for x in range(0, a): global entity spawnpt = (rand.randrange(-(cWidth/2), cWidth/2), rand.randrange(-(cHeight/2), cHeight/2)) entName = (f'entity{x}') def entGenerate(a): print(a) (f'{a}') = turtle.RawTurtle(screen) (f'{a}').shape("square") (f'{a}').speed("fastest") (f'{a}').penup() (f'{a}').pencolor("gray") (f'{a}').fillcolor("gray") (f'{a}').setpos(spawnpt) print(a) entGenerate(entName) entList = [] entList.append(entName) proportion = (16, 9) cWidth = (proportion[0] * 80) cHeight = (proportion[1] * 80) root = Tk() root.title("Shooter Game") canvas = Canvas(master=root, width=cWidth, height=cHeight) canvas.grid(row=1, column=1) screen = turtle.TurtleScreen(canvas) spawnEntity(4) root.mainloop()
可运行的最终实现
def spawnEntity(a): global ent, entity ent = (a) entity = {num: turtle.RawTurtle(screen) for num in range(ent)} for i in range(ent): spawnpt = (rand.randrange(-(cWidth/2.5), cWidth/2.5), rand.randrange(-(cHeight/2.5), cHeight/2.5)) entity[i].shape("square") entity[i].speed("fastest") entity[i].penup() entity[i].pencolor("gray") entity[i].fillcolor("gray") entity[i].setpos(spawnpt)
- 单独调用某实体:通过序号字典键取值,例如操作第2个实体移动可写
entity[2].forward(50) - 批量操作所有实体:遍历字典值实现统一逻辑,例如
for turtle_obj in entity.values(): turtle_obj.setx(0)
内容的提问来源于stack exchange,提问作者Getlo
相关产品推荐
相关产品推荐

