0

私は現在、Minecraft で ftb をプレイしており、プログラミング言語として lua を使用するコンピューター クラフトと呼ばれる mod を使用しています。これまでに、3 方向と任意のサイズの部屋を片付けるための基本的なスクリプトを作成しました。方向は右左と中央です。中央は、ドアを部屋の中央にしたい場合に使用します。しかし、私が作成した関数を別の関数で1回実行するのに問題があります。

これは、別の関数で一度実行したい関数です

function hwd()
    for m = 1,w*0.5 do
       turtle.dig()
       echest()
       turtle.forward()
    end
end  

これが主な機能です

function cntr()
    if d == "c" then
            for p = 1,w do
                length()
                turtle.turnRight()
                turtle.dig()
                echest()
                turtle.forward()
                turtle.turnLeft()
            end
    end
end

最初のループで一度実行する必要がある部分は次のようになります

turtle.turnLeft()
hwd()
turtle.turnRight()

「for p = 1,w do」の後、「length()」の前

中央部分なしでスクリプトが機能していますが、この部分を追加する必要があります。どんな助けでも大歓迎です。

作業スクリプトについては、http: //pastebin.com/Uf5Li1Cyにアクセスしてください。

中央部分のヘッドが追加されたスクリプトの場合: http://pastebin.com/AqZHQrFb

4

1 に答える 1

1

ループは常に少なくとも 1 回実行されますか? 次に、そのコードをループの直前に配置します。

  -- do the special thing
  for p = 1,w do

そうでない場合は、ブール値で保護されたループに配置できます。

  local didTheSpecialThing = false
  for p = 1,w do
     if not didTheSpecialThing then
        -- do the special thing
        didTheSpecialThing = true
    end
    ...

または、実行する必要があるかどうかを確認して、ループの前に置くこともできます。

  if w > 0 then
    -- do the special thing
  end
  for p = 1,w do
于 2013-10-31T22:37:54.090 に答える