【发布时间】:2018-04-02 19:40:01
【问题描述】:
from mcpi.minecraft import Minecraft
mc = Minecraft.create()
import time
pos = mc.player.getTilePos()
x = pos.x + 1
y = pos.y
z = pos.z
# Add 10 glass blocks (ID 20) to this empty list
blocks = [20, 20, 20, 20, 20, 20, 20, 20, 20, 20]
barBlock = 22 # Lapis lazuli
count = 0
while count <= len(blocks): # len (the number of items) of an object
mc.setBlock(x, y, z, blocks[0])
mc.setBlock(x, y + 1, z, blocks[1])
mc.setBlock(x, y + 2, z, blocks[2])
mc.setBlock(x, y + 3, z, blocks[3])
mc.setBlock(x, y + 4, z, blocks[4])
mc.setBlock(x, y + 5, z, blocks[5])
mc.setBlock(x, y + 6, z, blocks[6])
mc.setBlock(x, y + 7, z, blocks[7])
mc.setBlock(x, y + 8, z, blocks[8])
mc.setBlock(x, y + 9, z, blocks[9])
count += 1
# Delete the last block in the list
del blocks[9]
# Insert a lapis lazuli block at the first position in the list
blocks.insert(0, barBlock)
time.sleep(.5)
此代码堆叠了十个玻璃立方体(下图 1),然后将这些立方体填满蓝色 (barBlock) 以呈现进度条的外观(下图 2)。进度条仅向上计数并在已满时停止。这段代码工作得很好。我现在要做的是编写代码,上面写着“一旦进度条填满,就让进度条朝相反的方向倒计时。”请帮我。
这段代码都是关于操作列表的。我尝试使用block.append(barBlock) 添加项目。我尝试使用block.insert(9, barBlock) 插入一个项目。我尝试使用del block[9] 删除项目。我尝试使用block[9] = barBlock 更改列表项。让我说清楚。到目前为止我的代码是正确的。我知道这一点是因为我正在读一本书,他们给了 cmets 作为提示,我已经有效地做到了。现在,他们添加了这个奖励目标,即在相反方向的进度条上倒计时。所以,解决方案是添加更多代码,这就是你进来的地方。请帮助我。提前谢谢你。
【问题讨论】:
-
你的意思是像
while count >0: ...; count -=1这样的东西吗? -
我不太确定我是否理解您的问题,但可以参考stackoverflow.com/questions/869885/… 或stackoverflow.com/questions/3476732/…。我认为你正在寻找的是一个递减的 for 循环。
标签: python arrays list indexing