1

所以我和我的朋友正在尝试为 ComputerCraft (Minecraft Mod) 编写一个程序,它使用 Lua 作为编程语言。我以前没有做过任何 Lua,他玩过它。基本上,我们试图用 清除一行文本m.clear(),但我认为它可能不知道m, 是什么,即使我试图定义它。

抱歉,如果问题措辞不当,代码如下:

m = peripheral.wrap("right")
m.write("Shutting down.")
m.clear()
sleep(.1)
m.setcursorpos(1,1)
print("Shutting Down..")

其余代码的功能(只是更多相同)我不会发布,因为程序的功能是让它每次添加一个.,如果你明白我的意思. 但是,这不是重要的部分。:)

笔记:其实我也不知道是什么peripheral.wrap("right")意思,取自ComputerCraft论坛的另一个人的代码(他也想清屏)。

4

6 回答 6

2

该函数peripheral.wrap(string side)返回一个表,其中包含来自计算机指定端外设的一些函数(如果没有找到,则返回nil)。您收到错误是因为您试图以 nil(nil = 无)访问变量。

调用以下命令将打印Hello, World到监视器的前面:

monitor = peripheral.wrap("top")
monitor.print("Hello, World")

同样,您可以对终端执行相同操作(计算机 gui,您不必包装它):

term.print("Hello, World")

如果您只想与 gui(而不是外部监视器)进行交互,则需要使用 table 术语而不是 peripheral.wrap()。

term.write("Shutting down.")
term.clear()
sleep(.1)
term.setCursorPos(1,1) --This is supposed to be setCursorPos not setcursorpos!!!
print("Shutting Down..")
于 2014-06-01T19:14:24.067 回答
1

这是在显示器上吗?

如果是,则显示器必须位于计算机的右侧。m.clear()实际上理解为peripheral.wrap("right").clear()并且会访问到右边的监视器并使用命令clear()

如果您想在计算机上清除它,只需使用term.clear().

于 2013-05-10T07:34:51.270 回答
0

尝试先检查它是否为零..

if m ~= nil then
  m.clear()
else 
 print("can't connect")
end
于 2014-01-14T05:52:52.320 回答
0

尝试使用term.clear()而不是m.clear().

于 2014-05-14T10:55:43.343 回答
0

我认为第一行应该是“local m =...” 另外,peripheral.wrap("right") 意味着它可以通过在计算机右侧发送任何命令而不是尝试发送任何命令来使计算机右侧的调制解调器、打印机等可用在计算机上运行它。

于 2014-01-09T23:35:24.710 回答
0

而不是 m.clear() 你应该使用 term.clear()

于 2013-05-08T05:04:29.547 回答