【mod介绍】电脑mod——只有码农知道的世界

先给大家看一下程序的截图吧
只要运行该程序,程序就会从会从服务器里面读取软件的目录文件,只要初始化成功后就说明已经连接了。。。

只要输入index后就能查看所有软件的列表。


输入download 文件名 就能开始下载了

退出来看下。。。下载成功
然后就能开始使用下载过来的软件了~~

楼主 无¨名¨氏  发布于 2014-08-02 16:22:00 +0800 CST  
Q:那么,我该如何获取这个程序呢?


A:首先,你需要修改下电脑mod的配置文件
进入游戏文件的目录里面,找到config文件夹




在里面找到ComputerCraft.cfg文件,这个就是电脑mod的配置文件


然后用记事本啊、notepad++什么的打开这个文件,在里面找到http_whitelist这一栏,在最后加上 ;* ,意思就是把所有的网站都列入白名单内,为接下来运行这个程序共享程序做准备


楼主 无¨名¨氏  发布于 2014-08-02 16:36:00 +0800 CST  
接下来就可以使用这个程序了,程序代码在这里


https://github.com/xia-st/xia/blob/master/xia
·

楼主 无¨名¨氏  发布于 2014-08-02 16:38:00 +0800 CST  
Q:阿勒,有150行哎,我在服务器里面没法用怎么办啊?


A:在服务器里的同学也有办法。首先,你的服务器得有个电脑mod(废话),然后你得请求你的腐竹修改电脑mod的配置文件,就是我上面的说明,然后重启服务器。
接下来,你应该在游戏里面弄台电脑mod里面的电脑,输入如下代码:

楼主 无¨名¨氏  发布于 2014-08-02 16:41:00 +0800 CST  
嗯。。。刚才代码部分开始往下不知道为什么没有发出来。。。
代码如下



local a = http.get("https://raw.githubusercontent.com/xia-st/xia/master/xia")
f = fs.open("xia", "w")
f.write(a.readAll())
f.close()


保存并退出后执行该代码,执行完成后你的电脑上就会有”xia“程序了
是不是很简单

楼主 无¨名¨氏  发布于 2014-08-02 16:43:00 +0800 CST  
这时候有好学的同学就会问,你这个程序是怎么实现的呢?


这个说来话长啊,没有兴趣的同学就跳过这一大段吧~~~


众所周知(确定都知道?。。。有兴趣看到这里的同学大概都知道吧),在电脑mod里面有个http api,里面有两个非常重要的函数http.post()和http.get(),对网页设计有所了解的同学应该知道get和post是用来提交表单的,前者加密性较差,但是生成的网页可以保存,后者的加密性较好,但是无法保存生成的网页。用这两个函数都能实现到网络上读取资源。所以正如上面的@xy12423所说的就只要个php网页服务器了!!
我本来是打算在家里搭建个服务器的。。。但是!!家里的电信坑爹的把端口给屏蔽了!就只开放了几个常用的端口,而且苦于我是个学生党,没有足够的资金去租一个服务器,而且即使租来了域名也是个问题,域名解决了学生党花这么难点钱服务器的稳定性也难以保证。。。因此,我后来想了一个非常巧妙的方法
































容我先喝口水(吃个晚饭)

楼主 无¨名¨氏  发布于 2014-08-02 16:53:00 +0800 CST  
于是我就回来了。。。那么我现在到底是怎么解决的呢?答案是——github
作为一名程序员应该会知道github,github是一个全球性的版本控制系统和开源代码库,只要在github注册个账号,就可以在上面上传想要分享的代码或者其他文件


于是我就把github作为了我分享代码的网站,上面发送的几个链接也都是github的链接。


但是!!该如何在电脑mod上获取已有代码的目录呢?在自己的php服务器里面可以通过发送个表单向服务器请求发送目录信息,但是github只能共享源码,不能执行里面的程序啊


于是我又想了一个方法。。。手动创建一个index文件。


如果已经有同学下载好”xia“程序的话输入”download index“下载下目录文件来看看,里面就有所有当前文件的列表。


除了这个问题还有一种情况。。。有一些程序需要多个文件同时存在才能运行,如果分开来运行的话会导致程序错误,这时候如果让用户一个个下载下来就会显得很不友好。因此,我又创建了两个文件,分别保存单纯的文件和文件夹,”xia“程序会读取这两个个文件,然后对文本进行处理,转化为一个真正的文件列表,供程序进行判断


这两个程序就是实现读取fileList和folderList文件,并保存到列表里面的功能的。


于是我就初步完成了整个代码共享程序的设计,再考虑到一些细节部分,于是这个程序就做好了~~~
最后我还加上了帮助功能,下载好这个程序之后运行一下应该会有提示输入”help“的,试着输入下看一下如何使用吧~

楼主 无¨名¨氏  发布于 2014-08-02 18:04:00 +0800 CST  
不过github还有几个问题的确没法解决。。。一个就是代码上传的功能,如果要向github上传代码的话必须要使用git工具,而且需要用特定的电脑通过ssh才能上传,不想普通的网站发个表单就能实现上传了。。。


所以说,欢迎各位有想法、有创意的同学们发布自己的代码到我的邮箱里来或者到我所加的科技群里我的邮箱是[email protected],科技群号是 346489254 ,欢迎大家来稿。只要你的代码是自己制作的,或者虽然借鉴了其他人的代码,但是拥有自己的更新的,我都会把大家的代码放上去供大家下载!!
那么,今天的教程就是这样了。。。。明天(或者后天),我将会更新我在这段时间内所设计的另一个作品!!挖矿机器人程序(阿勒?你以前不是发过了吗?)
尽情期待!!


楼主 无¨名¨氏  发布于 2014-08-02 18:18:00 +0800 CST  
今天有事更不了了。。。明天继续

楼主 无¨名¨氏  发布于 2014-08-04 16:24:00 +0800 CST  
大家好!!我又回来了

楼主 无¨名¨氏  发布于 2014-08-05 13:56:00 +0800 CST  
经人提醒,发现我上次更新的时候忘记上传最新版本的电脑mod了,所以我先把链接放在下面
作者官网:

http://www.computercraft.info/
百度网盘:

http://pan.baidu.com/s/1hqvcfHE

楼主 无¨名¨氏  发布于 2014-08-05 13:59:00 +0800 CST  
我之前说到,我这次准备要发布一个挖矿机!!但是我之前不是也已经发布了一个了吗?这次的版本与之前有什么区别呢?


答案就是。。。这次的挖矿机具有自动探测矿物并且采集矿物的功能!!!




是的,你没听错!这次的挖矿机能够自动挖矿!!
只要在它移动的路径上发现了矿物,它就会自动挖掘出整个矿区里的矿(即连在一起的矿物),有了它,麻麻再也不用担心缺少矿物了。












那么程序代码呢??代码在哪里??!


还记得我上回提到的代码共享程序吧,我已经把这个代码上传到github里了,你只要下载了“xia”程序,执行它,然后输入download miner就行了。。。
。。。
。。。
啥?是之前的代码。。。嗯,不小心写错了,应该要输入download autominer才对嘛


如果你没有下载“xia”程序(下载方法上回写过了的说。。。)的话你也可以直接到我的github repository 来直接查看或者下载源码。。。网址如下
https://github.com/xia-st/xia/blob/master/autominer

楼主 无¨名¨氏  发布于 2014-08-05 14:14:00 +0800 CST  
那么如何使用这个程序呢?
首先。。。你要有个我的世界1.6.4 forge版本,然后。。。你需要下载电脑mod放到mods文件夹里,再然后。。。你创建一个新游戏。。。挖矿弄到3个钻石。。。(有完没完了- -#)


总之,你就是得有个钻石镐机器人



然后在里面最后五个位置放置上如图的物品


这五个东西是用来判断非矿物的,就是说如果探测到某个方块不在这个列表里面就默认为矿物。。。如果你自己想修改非矿物的数量的话可以打开程序修改下图中圈起来的数据

把它改成你想要的非矿物的个数,然后所有的非矿物要从后往前放。。。
然后只要输入程序的名字,机器人就会自动开始挖矿了~~~


PS:如果还想要修改机器人挖矿的深度的话可以修改上图中的digit参数,这个参数是设置挖矿的深度的。。。建议这个数字要小于100,如果大于100的话turtle可能会进入未被加载的区域,这样turtle就会停止工作,这时候你就得刨开洞把它给挖出来了= =

楼主 无¨名¨氏  发布于 2014-08-05 14:41:00 +0800 CST  
那么现在开始测试吧
为了加快速度我把长度设置为了20


楼主 无¨名¨氏  发布于 2014-08-05 14:45:00 +0800 CST  

回来了= =果然20格的话挖不到什么好东西呐。。。




看一下里面的深♂洞,这样就已经深♂不♂见♂底了,旁边也有坑坑洼洼的矿物被挖走的痕迹。由于这种挖矿方式不需要人工干预而且效率很高,又加上挖好的矿洞人没法直接进去,所以我就没有做钻石的检测(我才不会说是懒得做呢)

楼主 无¨名¨氏  发布于 2014-08-05 14:50:00 +0800 CST  
程序就是如上图的那种用法,然是我想好学的同学肯定不会就这样结束了吧,你肯定还想了解代码的逻辑吧~~~好,那么好学的同学继续往下看!!↖( ̄▽ ̄")

楼主 无¨名¨氏  发布于 2014-08-05 14:55:00 +0800 CST  
为了了解我写的程序,我首先来介绍一下关于编程的一个比较重要的概念:递归


那么什么是递归呢?简单来说,一个函数调用自身的过程就叫递归,我们下面来看个简单的例子


这里的fun函数作用是返回n值的阶乘(讲解递归的时候这个阶乘函数总是最好的例子之一)。我们能看到在fun函数中第二个return语句后面调用了自己,然后里面的参数是n - 1。


这个函数大概的运行过程就是先是执行fun(5),根据if条件判断会返回 5 * fun(4),然后继续执行fun(4),返回5 * 4 * fun(3),依次类推,能够得到5 * 4 * 3 * 2 * fun(1), 但是由于fun(1)返回1,所以整个fun(5)会返回 5 * 4 * 3 * 2 * 1的值120,于是最后得出了结果


输出fun(10)的值也是可以的。。。


楼主 无¨名¨氏  发布于 2014-08-05 15:10:00 +0800 CST  
那么接下来可以看一下我的代码了


如图所示,我重写了forward()、up()、down()、back()这几个函数,原因我之前的教程已经说明了。。。为了防止杀意【划掉】砂砾的干扰,后面几个compare()、compare()、compareUp()、函数是用来把相应方位的方块与物品栏最后几个的方块进行比较的,如果比较成功就返回true,否则就是false。
最后面几个dfsForward()、dfsUp()和dfsDown()是核心代码,他们可以用来实现深度搜索算法。

楼主 无¨名¨氏  发布于 2014-08-05 15:30:00 +0800 CST  
前面几个代码我就不详细说明了,就给大家看一下截图吧。。。


后退那个就是如果后退失败的话就转身前进,成功前进一格后在转身。。。

比较函数也很简单,首先判断是不是为空的,判断方式是走过去看看(。。。额),能走过去就说明是空的,如果不是的话就继续比较物品。。。

楼主 无¨名¨氏  发布于 2014-08-05 15:37:00 +0800 CST  
接下来重点来看看深度搜索的函数。三个搜索函数分别在前进时、上升时、下降时调用。
首先开看看dfsForward()函数:

由于是在前进时进行判断的,所以就不需要对后面的方块进行检测,所以我在这里按照左、前、后、上、下的顺序分别进行方块检测。
首先是向左转,检测左边是否为矿物,如果是的话就挖掉他,向前走一步,然后执行前进时的搜索函数,然后再后退,再接下来执行的是一个for循环,分别对前面(一开始状态下的前面)和右边(同前)进行判断。结束for循环后面向之前的前方(即向左转),然后在判断上面和下面是否为矿物,是的话就挖掘矿物,进去挖出来的矿坑后执行向上或者向下的搜索函数,最后再回到原位。。。。。。



向上和向下的搜索函数就比较简单了,用一个for循环搜索周围四格的矿物(结束循环后正好面向原处),再搜索上面或者下面的方块,然后再调用相应的函数即可。。。

楼主 无¨名¨氏  发布于 2014-08-05 15:50:00 +0800 CST  

楼主:无¨名¨氏

字数:37940

发表时间:2013-09-22 03:09:00 +0800 CST

更新时间:2016-03-08 01:09:35 +0800 CST

评论数:3365条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看