本篇教程由作者设定使用 CC BY-NC-SA 协议。

零:前言

    其实之前已经有很多大佬写过类似的教程了,本来不用写装机了,但是想想还是补上装机方便别人看得舒服吧。本文将一边讲如何做,一边讲这些的规则。

    使用版本:MC 1.12.2,OC 1.7.7




一:装机

    这一部分可以参考游戏内置的“开放式电脑使用手册”。

    1.准备物品

        你要准备三个方面的东西:“能源”、“机械”和“组件”。


        能源方面,你需要准备一个踩踏发电电容或者能量转换器来为整个系统供电。还要数跟线缆和(可选)电容

        其中,推荐使用能量转换器来产生电能。因为踩踏发电电容需要在上方至少站两个羊(发电速度3/s)或两个豹猫(发电速度6/s)才会发电.......只要你不用电脑太猛一般来说踩踏发电电容没问题,但只要随便上点高强度的比如机器人什么的,踩踏发电电容就完全不够了。能量转换器是将其它mod内的能源转换成OC使用的能源并注入电网。

        大部分机械都自带一个能存500电的电容,而电容本身能存1600的电。电容能够通过多个堆放到一起的方式互相提升单个电容的存电量。计算方式为:上下左右前后一格内的电容数量*800+上下左右前后两格内没被算过的电容数量*400。举个例子,3个电容排成一排,以最左边的电容为计算基准,右边一格检测到电容,那么电量上限+1*800,此时再往右一格中检测到电容,那么该电容离最左边的2格远,因此为1*400的电量上限。那么最左边的电容此时电量上限为1600+800+400=2800。右上方等斜线位置不是紧贴的,所以算离电容2格远。电容中间隔一格也能检测到,此时只算+400电量上限。

        线缆有两个作用:做数据线和做能源线。能源线,顾名思义,供应机械能源。而数据线可以当做网线或者什么的,它用于多个设备之间的数据传输。目前你只要记住线缆里面有两根我们看不到的线就行了,后面我会讲为什么特意分开理解。


        机械部分则是电脑核心方块,按照最低配置,你要准备一个基础机箱、一个基础显示屏、一个键盘、一个磁盘驱动器 (我这翻译是软盘驱动器)。


        基础机箱是核心,其它物品需要尽可能贴着它摆......离得远就用线缆吧。其中键盘不需要贴着机箱摆,它必须要贴着显示屏摆。当显示屏和键盘摆一起并被系统检测到时,右键键盘或屏幕会打开一个GUI。摆放不对或者没被识别到    就不会跳出任何GUI。这一套是初始电脑,后期你只要一个基础机箱、一个基础显示屏和一个键盘就能构成一台电脑了。

        当然,OC里面不止电脑,还有平板、单片机、机器人、无人机、服务器等,这些东西会在后面另外讲。第一部分只讲最基础的普通电脑。


        接下来是关键部分:组件。为了保证一台最低配最简单的电脑能开机起来,你需要:一个中央处理器(CPU)、一个基础磁盘驱动器、一个T1级内存条、一个EEPROM(Lua BIOS)、一个OpenOS。嗯,这些就可以让你开机了。(^v^)

        能开机是能开机,但你看不到任何东西,所以你还要一个基础显卡让屏幕能显示电脑内部在干什么。


        安全起见,你可以再准备一个分析器,它能让你检查电网、物理地址和运行报错。


    2.安装

        我们默认安装一个最简单的,能启动的电脑。

        首先,我们要安装能源系统。我这里使用了IC2mod(工业时代2)来为系统供电。

一文学会OC装机+基础命令+尝试读懂并使用简单命令编程(第一章)-第1张图片

        从左到右分别是:创造模式发电机,铜制绝缘电缆,能量转换器,电容。提示:电容可以等价为线缆。现在,能源部分就完成了。

        下一步是安装机械部分。从左到右是软盘驱动器,基础机箱,基础显示屏。基础显示屏前面放了一个键盘。

一文学会OC装机+基础命令+尝试读懂并使用简单命令编程(第一章)-第2张图片

        这里的电缆是随便连的,主要是让读者知道想要开机只要让机箱通电即可。

        随后,我们开始安转组件。首先打开软盘驱动器,在里面放上OpenOS软盘。你可以把这个软盘当做系统启动U盘之类的,里面装着一个类linux的系统。你也可以手持这个软盘shift+右键直接插进去。

一文学会OC装机+基础命令+尝试读懂并使用简单命令编程(第一章)-第3张图片

        随后我们右键打开基础机箱,开始往里面填我们之前准备好的剩下的组件

一文学会OC装机+基础命令+尝试读懂并使用简单命令编程(第一章)-第4张图片

        这是没装任何东西的样子。当你鼠标移到某个栏位上时,能放进该栏位的物品会在你的背包里高亮。反之,当你鼠标移到你背包里的某个物品上时,如果它能放进去,那么对应放置的栏位会高亮。

        最左边的栏位是放置EEPROM(Lua BIOS)的,也就是带电可擦可编程只读存储器。这个芯片存放最底层的系统(BIOS),在这个mod中,它存放的是Lua的BIOS。在现实中,你打开电脑看到的第一个画面就是这个。它负责整个电脑硬件级的开机自检,输入输出并提供最底层的对硬件的操控。我们用的操作系统如windows、linux等其实是基于BIOS上的。这方面涉及到电脑底层原理,感兴趣可以自行搜索这方面的东西。

        中间的电源键不用我说吧?

        右侧有三列。第一列叫卡槽,用来放置电脑额外的配件。电脑最初是叫计算器,只是用来算数学的,这部分由CPU负责。那它的其它的功能需要安装其它硬件来完成,比如网络要网卡,显示图像需要专门的显卡等。这点和现实中有点不太一样,不过不用管它。

        第二列的第一个是CPU位置,下面两个是内存条(RAM)位置。第三列是硬盘位置。硬盘和内存条都是存数据的,为什么两个要分开?因为CPU从硬盘中读写数据太慢了,虽然硬盘能存放很多数据。因此,CPU需要一个内存条来加快读写。内存条读写速度非常快,但是因此只能存放一点数据。这点和现实中一样。

        在全部组装完成后,应该是这样的:

一文学会OC装机+基础命令+尝试读懂并使用简单命令编程(第一章)-第5张图片

        在一切安装完成后,点击中间的电源键,电脑亮绿灯,开机成功。恭喜你,你会组装电脑了。


    2.5.组装部分错误分析

        Q:我屏幕没有显示任何东西。

        A:你又没有装显卡?

        Q:按下开机后就滴滴两声关机了,没有提示任何问题。

        A:拿起分析器,对着机箱潜行+按右键,聊天框内会跳出一堆信息,如果上一个错误是no bios found开头,那么你EEPROM也就是左侧的物品没放或放错了。

        Q:按下开机键后电脑运行一下就滴滴两声关机了,显示屏出现no bootable medium found。

        A:你确定电脑读取到OpenOS系统了?看看软盘有没有放对?看看磁盘驱动器是否紧贴着机箱或者能通过电缆连接到机箱?又或者你的磁盘没安装OpenOS系统?


        如果你确定一切都没问题,但是就是出现各种奇怪错误,那就把所有方块全拆了重新来一遍,还有问题我也无能为力,问作者吧。


    3.装系统

        电脑在滴一声后终于开始正常运转了。它先看了眼磁盘,没有系统,好吧,它又去找了找OpenOS启动盘,找到了,开始读取软盘里的内容,终于电脑进入了下面这个页面

一文学会OC装机+基础命令+尝试读懂并使用简单命令编程(第一章)-第6张图片

        这个页面分成4个部分

        第一部分是白框里的红线上面部分,这里写的是:这是OpenOS系统,版本1.7.7,这台电脑支持的内存为192K。

        第二部分是白框里的红线下面部分,这里是系统作者给的小提示,每次开机都会变。这次提示是讲当计算机在不怎么运行时会耗更少的电。

        第三部分是白框下面的红线上面部分,这里是在说你是通过启动盘启动系统的,快去输入install并重启系统来安装它。如果你不这么做,那么很多地方的文件只能写入,不能读取。

        第四部分是白框下面的红线下面部分,这里是你输命令的地方。#号前面表示目前在home文件夹下,这是默认启动后跳转到的文件夹。

        

        那么,现在你要输入install开始安装系统到你的硬盘上,以便你后面可以写一些代码。如果它跳出No writable disks found, aborting提示.......你确定装上硬盘了?

        在输入完成后,系统开始搜索能够安装的东西。我们一般只有一个OpenOS可以安装,所以它就问:Install OpenOS? [Y/n]   你要安装OpenOS吗?确定输入y,否定输入n。那我们当然是y啦

        接下来,它应该要搜索一下你有几个硬盘,它可以选择装到不同的硬盘上(比如现实中你可以把系统装D盘里)。不过我们这里只给它准备了一个硬盘,所以它默认就装这个硬盘上。

        在一阵安装后,它应该会提示Installation complete!  Reboot now?  [Y/n]   安装完成了,你想现在重启吗?我们当然选择y,确定现在重启。

        有时候,它会提示安装失败,别担心,这是因为我们只用了一个内存条,内存太小导致的。我们再来一遍通常就可以了。

        在重启后,上面页面中的第三部分应该消失了。这样,我们就安装成功了。


        提示:如果你嫌输入完整的命令有点麻烦,你可以输入命令前3-5个字母然后按一下tab键,这叫自动补齐命令,会大大让你舒服多的。


        现在,你的系统装好了,系统盘也就没用了,你可以收起来了。现在系统将从你的硬盘里读取并启动。


    4、补充

        你的电脑有“复杂度”或者“支持连接数”。在游戏里,支持连接数按照外面连接的可被读写的机器+机箱内部的组件来算,而复杂度则是依靠组件或者升级的等级来决定的。超过会导致关机或无法组装。目前我们只讲“支持连接数”,复杂度在稍后的无人机、机器人和单片机部分会用上。偷偷告诉你一件事:屏幕显示的东西越多越耗电,所以记得随手关机-v-




二、操作系统常见命令和你的第一个程序

    1、操作系统目录

        看大佬的教程吧,这已经写得很完整了。我总不可能直接copy过来吧?

        Openos操作系统目录结构 - [OC]开放式电脑 (Open Computers) - MC百科|最大的Minecraft中文MOD百科 (mcmod.cn)

        其中有一点需要注意,系统类似linux,你可以拿大部分基础的linux命令来用。内置一个语言lua。当你运行一个文件时,默认使用lua来运行。

    2、常用命令

        大部分命令之间有空格,注意空格!

        你可以用方向键来回放你之前输过的命令。

        cd xxx   跳转到xxx文件夹,比如cd /usr 跳转到usr文件夹、cd /跳转到最外面的目录、cd ./test 跳转到当前文件夹下的test文件夹、cd ../跳转到上一个文件夹(返回上一级)

        ls -l   列出当前文件夹内的所有东西,没有则不会显示任何东西。(在低内存时用list代替)

一文学会OC装机+基础命令+尝试读懂并使用简单命令编程(第一章)-第7张图片

        上图是ls -l后输出的内容,它分成4列。第一列是文件属性,d表示这是文件夹,f表示这是一个文件,r表示这个东西可以写入,w表示这个东西可以读取。第二列是大小,只有文件才会去计算大小。第三列是上次修改时间(我也不知道这是现实时间还是游戏内时间,好诡异)。第四列是文件/文件夹的名字。

        mkdir xxx   创建一个名叫xxx的新目录。

        rmdir xxx   删除一个名叫xxx的目录。注意一定要是空的才行

        cp xx yy   复制文件或目录从xx到yy。例子:cp a b 将文件a拷贝一份并命名为b,cp /home/a tmp/b 拷贝文件夹home里面的文件a到文件夹tmp里面并命名为b。通常会在最后加一个 -i以便自动检查是否有同样名字的文件存在,免得手残误覆盖你辛辛苦苦写好的代码。

        rm xxx   删除文件或目录,通常用这个删文件。(破坏专用命令)

        mv xxx yyy   移动文件与目录,或修改文件与目录的名称。

        edit xxx   内置编辑器,如果没有xxx这个文件就新建它,如果有就修改它。同名但不同后缀名的算不同文件。进去后ctrl+s是保存,ctrl+w是关闭(不管有没有保存)。有点像vim之类的。

        cat xxx   快速查看文件xxx里写了什么,它会以极快的速度把文件内写的东西“刷”出来。

        df   查看可以访问到的磁盘。名字是磁盘的物理地址

        rebote   立即重启电脑。如果你的电脑在重启游戏后出现奇怪的问题,试试这个。


    3、你的第一个代码

        在开始写代码前,别忘了我之前说这是能够保证电脑开启的最低配置,然而,想要编程,你需要提升一下它的内存,再加一个内存条吧,T1的就够了。记得重启电脑以便应用硬件上的更改。

        我们先在home文件夹,也就是一开机所在的目录下输入edit xxx.lua,xxx可以是你自己起的任何名字,.lua是为了保证后面你能够识别它是一个Lua文件。

        随后,我们输入print("hello world");

        注意,其中所有的都必须是英文模式。

        随后,ctrl+s保存,ctrl+w退出,输入你刚刚自己起的名字,屏幕上输出hello world。满满的vim味道。

        你已经会编程了,快去当秃头程序员吧


    4、如何破坏你的好基友电脑并让他一脸懵逼

        把最外面的init.lua给删了,这是最低级的。去boot文件夹里删了某个文件,这是中级的。设置一个程序,让它一直重启电脑,或者开机一段时间后就重启电脑,这是高级的。

别说是我教你的,都是你自己悟出来的。(手动滑稽)

        



三、看懂并使用别人的API

    看到这,你一定很想自己上手编程了对吧?首先,你应该要看懂说明书吧?然后稍微了解lua语言对吧?让我们“快速”入门吧。首先看看官方的说明书。

    OpenComputers 的官方文档 [OpenComputers] (cil.li)

    1、一个简单的小程序

        我们先来个借助一个最简单的小程序来完成这个教学。我们本次要做的是:读取一个箱子里的物品并输出它的名字。

        那么,我们需要看看怎么访问一个箱子:需要一个适配器方块来与mc里的方块“交互”。说明书里写,适配器能连接并将支持的组件连进网络内.......但是箱子不是受支持的组件,怎么办?下面又提到可以在里面加物品栏控制器升级来访问更详细的信息,那我们试试加个。这个物品对应的说明书上页面中有提供API,里面刚好有读取某个格子物品名字的命令。读取的命令是getStackInSlot(side:number, slot:number):table。翻译一下,getStackInSlot是这个命令的名字,括号内表示你要输入的数据,最后的冒号+名字其实是表示它将返回给你一些数据,数据是以table(表)形式存在。那么side是什么?根据查询,这是作者定下的一个数据,用来表示哪个面的物品,从0到5分别表示底部、顶部、背面、正面、右侧、左侧。slot呢?它是一个插槽值,翻译一下,就是第几个格子。side和slot后面都跟了一个number,表示这填入的应该是一个数字。

        再看看教程页下面的范例,local干什么的?用来表示一个变量。require()干什么的?一查,用来申请使用作者写的库(代码)。那么根据说明,首先我们要先申请作者写的component(组件)库,然后再选择component库里的组件名字inventory_controller,随后调用这个组件里的命令getStackInSlot(),在里面输入你箱子所对应的方向,随后用一个变量存放该命令返回的数据,然后print()输出该数据......等等,输出的是一组数字和代码?这是什么?这其实是内存地址,它没有把里面存放的数据真的放出来。那么table里的数据怎么调用?查一下,原来是用table.名字的方式调用。我想要输出物品的名字,物品的名字对应的名字在哪?名字是label。试着输出一下,没问题了。我还要考虑一下如果输出是空,那这样做会报错,那么我得用if来检查一下是否为空,为空就直接输出空,有东西再输出它的名字

        最终,代码长这样。

local com=require("component");
local iv=com.inventory_controller;
local data=getStackInSlot(0,1);
if data then
    print(data.label);
else
    print("nothing or error");
end


        我猜,你一定想直接抄走......没问题,复制上面的代码,到游戏里默认按鼠标中键即可黏贴。可惜我没找到如何复制游戏内的代码。

        如果你学过部分编程,你应该能跟上我的思路。由于编程展开讲会稍微复杂,因此我后面再更新更适合完全不懂编程人的教程。


        如果你装了jei mod,那么你可以通过查看某个部件可以造什么的方式来查看它内置的迷你英文版API。比如网卡能做什么的界面中有一个界面显示网卡的API。