当一个列表完成计数后,如何操作它进行倒计时?

2024-09-26 17:55:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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),然后这些立方体填满了蓝色(倒钩),看起来就像一个进度条(下图2)。进度条只向上计数,并在满时停止。这个代码工作得很好。我现在要做的是写一段代码,上面写着‘一旦进度条填满,让进度条倒计时到相反的方向。’请帮帮我。你知道吗

这段代码是关于操作列表的。我尝试使用block.append(barBlock)添加一个项目。我尝试使用block.insert(9, barBlock)插入一个项目。我试过用del block[9]删除一个项目。我尝试过使用block[9] = barBlock更改列表项。让我说清楚。到目前为止,我的代码是正确的。我之所以知道这一点,是因为我在读一本书,他们给出的评论都是暗示,我做得很有效率。现在,他们增加了一个额外的目标,即在相反方向的进度条上倒计时。所以,解决方案是添加更多的代码,这就是你要做的。请帮帮我。先谢谢你。你知道吗

Progress bar not filled up

Progress bar filled up


Tags: the项目代码进度条posimporttimecount
2条回答

我想出来了。下面是完整的代码。跟我来!你知道吗

从mcpi.minecraft公司进口布雷艇 mc=Minecraft.创建()

导入时间

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, 22, 22, 22, 22, 22, 22, 22, 22, 22] # Lapis lazuli
glass = 20 # glass

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(.2)

count = 10

while count >= 0:

    mc.setBlock(x, y + 9, z, blocks[0])
    mc.setBlock(x, y + 8, z, blocks[1])
    mc.setBlock(x, y + 7, z, blocks[2])
    mc.setBlock(x, y + 6, z, blocks[3])
    mc.setBlock(x, y + 5, z, blocks[4])
    mc.setBlock(x, y + 4, z, blocks[5])
    mc.setBlock(x, y + 3, z, blocks[6])
    mc.setBlock(x, y + 2, z, blocks[7])
    mc.setBlock(x, y + 1, z, blocks[8])
    mc.setBlock(x, y, z, blocks[9])

    count -= 1
    blocks.insert(0, glass)
    time.sleep(.2)
    print("Is this code being reached")

这只是代码的清理版本:

from mcpi.minecraft import Minecraft
import time

mc = Minecraft.create()

pos = mc.player.getTilePos()
x = pos.x + 1
y = pos.y
z = pos.z


def stack(delay, block, direction):
    for count in range(10) if direction == 1 else range(9, -1, -1):
        print(count)
        mc.setBlock(x, y + count, z, block)
        time.sleep(delay)

stack(0, 20, 1)
stack(0.5, 22, 1)
stack(0.5, 20, -1)

相关问题 更多 >

    热门问题