Minecraftとタートルと僕

PCゲームMinecraftのMOD「ComputerCraft」の情報を集めたニッチなブログです。

Lua

タートルにAIを組み込もう2(rule-basedプログラミングの基礎)

はじめに 更新が大変遅くなりましたが、その分、内容濃い目でお送りします。 今回は、rule-basedプログラミングの基礎ということで、ルールをどんどん追加していくことで次第にタートルが複雑な作業をできるようになる過程を紹介しましょう。 最終的に以下の…

タートルにAIを組み込もう(rule-basedプログラミングのすすめ)

はじめに 関数型プログラミング? オブジェクト指向? いえ、時代はルールベースですよ!! (ある意味逆行してます) 今回は、手続き型とも、関数型とも、オブジェクト指向とも違う、新しいプログラミングパラダイムについてご紹介したいと思います。 ルー…

採掘タートルで整地する: (8)山を切土して空洞があったときの対策

チュートリアル「採掘タートルで整地する」 (7) << (8)この記事 >> (9) まだ 遅れた言い訳 先週末に連載の続きを書くと言いましたが、遅くなってすみません。 記事はできていたのですが、説明用のSS画像撮るのが面倒で放置してました。 さきほど撮ってき…

採掘タートルで整地する: (7)高さを自動認識して切土する整地プログラム

チュートリアル「採掘タートルで整地する」 (6) << (7)この記事 >> (8) はじめに 整地中 整地後 他のことに熱中していたので連載が止まっていました。別に忘れていたわけではないのでご安心ください。 さて、前回までに、奥行き/幅/高さを指定して整地…

採掘タートルで整地する: (6)松明設置、チェストへのアイテム格納機能の追加

チュートリアル「採掘タートルで整地する」 (5) << (6)この記事 >> (7) 前回までのお話 一度に3つの山を整地(切土)する関数を使うことで、これまでの1.5倍効率がよくなったよ!(当社比) すばらしいプログラムですね!(独自調査による評価) 今回の…

採掘タートルで整地する: (5)整地スピードを約1.5倍にする工夫

チュートリアル「採掘タートルで整地する」 (4) << (5)この記事 >> (6) はじめに 前回の記事で、奥行き(Depth)/幅(Width)/高さ(Height)を指定して、その範囲内を整地するプログラムを紹介しました。 以下のように引数を与えてプログラムを実行す…

採掘タートルで整地する: (4)奥行き・幅・高さを指定して「切土」する

チュートリアル「採掘タートルで整地する」 (3) << (4)この記事 >> (5) はじめに それでは、お待ちかねの整地プログラムです。 今回は、プログラム実行時のパラメータとして、奥行き・幅・高さ(Depth/Width/Height)を指定することで、その範囲内を掘る…

採掘タートルで整地する: (3)確実に1歩前進/上昇する関数

チュートリアル「採掘タートルで整地する」 (2) << (3)この記事 >> (4) はじめに 前回までに、砂/砂利を全て掘るのになぜ正面と真上で待機時間が違うのかというお話をし、確実に採掘プログラム(1行または、3行のコード)を紹介しました。 今回は、この…

採掘タートルで整地する: (2)【補足】なぜ砂/砂利処理時間が正面と真上で違うのか

チュートリアル「採掘タートルで整地する」 (1) << (2)この記事 >> (3) 前回の問題点 前回(第1回目)は、 真正面に砂/砂利の山があったとしても全て採掘して前進するプログラム 真上から砂/砂利が落ちてきたとしても全て採掘して上昇するプログラム …

採掘タートルで整地する: (1)落下する砂や砂利の対策

チュートリアル「採掘タートルで整地する」まとめ (1)この記事 >> (2) はじめに ComputerCraftに最初から入っている excavate プログラムは、指定した範囲内を現在地から下方向へと掘っていきます。 それに対してこれから考える整地プログラムは、現在地よ…

チュートリアル「採掘タートルで整地する」まとめ

はじめに さて、新連載です。 Twitterで面白いアイデアをいくつもいただいたので、これからしばらく、「整地」をテーマにいろいろなプログラムを考えていきましょう。 奥行き、幅、高さを指定して直方体領域内のブロックを削る 奥行き、幅だけを指定して、丘…

チュートリアル「FS APIを使いこなそう」まとめ

目次 チュートリアル目次 >> チュートリアル「FS APIを使いこなそう」まとめ 全13回 対象(Luaプログラミング、初級~中級者) (1): CCファイルシステムの基礎 (2): CCのファイルを扱うシステムプログラムの紹介 (3): FS APIの解説 (4): fs.open()でファイ…

FS API を使いこなそう(13): ゲーム再起動時にタートルが初期位置に戻ってくるプログラム

はじめに 前回の記事はlogging API ver.04の仕様を説明しました。 FS API を使いこなそう(12): logging API version0.4の解説と応用 またその応用例として、タートルが作業をしている間にゲームを終了しても、ゲーム再開時に自動的に初期位置へ戻ってくると…

FS API を使いこなそう(12): logging API version0.4の解説と応用

はじめに 前回は、logging API version0.4を完成させました。 FS API を使いこなそう(11): 移動履歴を使って元の位置に戻る機能を実現 (logging API version 0.4) http://pastebin.com/xLwUS6Y5 主な機能としては、以下のとおり。 ログをファイルに出力す…

【補足】論理演算子を用いたLuaの慣用表現

はじめに 今回はCCから離れて、プログラミング言語Luaについてお話しましょう。 お題はこちら。以前の記事で説明を省いてしまったので、その説明回となります。 function defaultPrint(x) local x = x or "world" print("Hello ",x) end x = x or "world"と…

FS API を使いこなそう(11): 移動履歴を使って元の位置に戻る機能を実現

前回の復習 前回までで、logging APIによるタートル移動履歴機能を完成させました。 FS API を使いこなそう(10): 関数の引数を柔軟に取り扱う logging.forward()などを使って移動したらログファイルに移動したことを書き込んでいきます。 今回は、そのログフ…

FS API を使いこなそう(10): 関数の引数を柔軟に取り扱う

前回のお話 前回:FS API を使いこなそう(9): 【補足】関数を定義する関数を定義する(解説編) 前回紹介したlogging API (ver. 0.2)を使うことで、任意の関数にログ記録機能を簡単につけられるようになりました。 問題点 でも使ってみて気づきませんでした…

FS API を使いこなそう(9): 【補足】関数を定義する関数を定義する(解説編)

前回までのお話 前回:FS API を使いこなそう(8): 【補足】関数を定義する関数を定義する(応用編) 関数を定義する関数を定義しましたよ! この関数、createLoggedFunc()を使ってプログラムが簡略化できました。 logging APIがとりあえずの完成です。 log…

FS API を使いこなそう(8): 【補足】関数を定義する関数を定義する(応用編)

前回のお話 関数型プログラミング(基本編): FS API を使いこなそう(7): 【補足】関数を定義する関数を定義する(基礎編) 前回は関数型プログラミングの基本ということで、Luaの関数がファーストクラスオブジェクトであることを説明しました。 ・・・え…

FS API を使いこなそう(7): 【補足】関数を定義する関数を定義する(基礎編)

移動履歴を残すプログラム かなり間が開きましたが、前回の続きを進めましょう。 前回: FS API を使いこなそう(6): タートルの移動履歴をファイルに書き残すプログラム まず最初に、前回は重要な部分しかお見せしなかったプログラムの完全版を掲載します。 …

FS API を使いこなそう(6): タートルの移動履歴をファイルに書き残すプログラム

移動履歴がなぜ重要か「ゲーム中断・再開問題」 タートルプログラミングに慣れたころ、誰もが悩むのがゲーム中断に伴ってタートルのプログラムも中断してしまうという問題です。 タートルが何かの作業している途中でゲームを中断すると、Luaプログラムも止ま…

FS API を使いこなそう(5): APIファイルの自動ダウンロード

はじめに これまではFS APIの解説をしてきましたが、今回からより実践的な利用方法を紹介しましょう。 まずは、pastebinサイトからのAPIファイル自動ダウンロード機能です。 どのようなケースを想定しているのか あるLuaプログラムがいくつかのファイル、た…

FS API を使いこなそう(4): fs.open()でファイルの読み書き

これまでのお話 前回までにComputerCraftでファイルを扱うための基礎知識を紹介しました。 FS API を使いこなそう(1): CCファイルシステムの基礎 FS API を使いこなそう(2): CCのファイルを扱うシステムプログラムの紹介 FS API を使いこなそう(3): FS APIの…

FS API を使いこなそう(3): FS APIの解説

はじめに 前回は、コンピュータのシェル上で実行できるプログラムの紹介をしました。 今回はLuaプログラムの中で利用できるファイルシステム系のAPI、すなわちFS APIについて解説しましょう。 まずはFS APIについてざっと説明し、その後、個別に使い方のサン…

FS API を使いこなそう(1): CCファイルシステムの基礎

はじめに これから、ComputerCraftのFS (File System) APIについての解説記事を連載します。 このAPIは一言でいうと、CCコンピュータ内部のファイルやディレクトリ(=フォルダ)を操作するために使います。 参考までに、CC公式WikiとCC非公式日本語WikiのFS…

ComputerCraft1.6のTurtle APIまとめ

はじめに 残念なことに、いまだComputerCraft日本語Wikiが更新停止中なので個人的な覚え書きも兼ねて、Turtle APIをまとめてみます。 特に変更が無いAPIについて、詳しくはCC日本語Wikiを見てください。 コンピュータクラフト非公式Wiki - API/Turtle 以下に…

近況報告と最近作ったComputerCraftプログラムを紹介

あたらしくワールドを作り直しました 色々と思うところあって、ワールドを新しく作り直しました。それに伴って、Mod構成も見直し。 特に、1.6.4版Greg-tech(gregtech408s)のひどさに閉口して、Gregはやめることにしました。 - ひどさの例 - 電子回路の作成…

【早いもうきた】ComputerCraft1.63が公開されました。

New Features in ComputerCraft 1.63 さきほど、ComputerCraft1.63が正式公開されました。 CC1.62からCC1.63への変更点は以下の通り。例のとおり、適当訳もつけておきます。 Turtles can now be painted with dyes, and cleaned with water buckets タートル…

CC1.62のバグ報告してきました

これは螺旋階段です。 螺旋階段のアイデアと設計図はリベルさんのところからいただいています。 第四回 Minecraftで西洋風の城を作る(螺旋階段の設計と設置作業) - リベルさんの戯言室 柱に密着して登ると引っかかるので一部だけ設計を変更していることと、…

今後の記事更新ペースについて

少しペースを落とします さすがに3月みたく、平日毎日更新はきつくなってきました。 平日の更新は2、3日に一度、土日はできるだけ更新というペースで行こう思っています。 だいたい仕事のせい。 そして、最近記事のことばかり気をとられてMinecraftで遊ぶ時…