Minecraftとタートルと僕

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

チュートリアル

【More Turtles】フォーチュン付きブロックブレイカーを修正した

ちょっとだけ元気になったので更新。 はじめに 前回は、Fortune Mining Turtleを使ったフォーチュン付きブロックブレイカープログラムを紹介しました。 ダイヤ鉱石などを上のチェストに入れておくと、フォーチュン採掘で破壊して入手素材を増やしてくれます…

フォーチュン付きブロックブレイカー(More Turtles Mod)

はじめに 前回は「MoreTurtles」Modで追加されるFortune Mining Turtleについて紹介しました。 燃料を1消費するかわりに、フォーチュン付きでブロックを掘ってくれるすばらしいタートルです。 鉱石ブロックを幸運付きで破壊することで入手素材を飛躍的に増や…

フォーチュン(Fortune)採掘タートルの紹介(More Turtles Mod)

はじめに Nokiyen氏が作成した「More Turtles」Modで追加される新しいタートルについての紹介です。 今回は、Fortune採掘ができるタートルである、Fortune Mining Turtleについて具体的な使い方を紹介します。 なお、このModで追加されるSilkTouch Mining Tu…

え?シルクタッチで掘るのはやすぎ? となる事例

はじめに 前回は、シルクタッチタートルのすばらしさをアピールしました。 採掘タートルの基本性能調査(2)-シルクタッチタートル - Minecraftとタートルと僕 中でもシルクタッチ採掘に時間がかからないことはとても強力なのですが、それが問題となること…

採掘タートルの基本性能調査(2)-シルクタッチタートル

はじめに 前回の性能調査の結果、以下のようなことがわかりました。 前進・後進・上昇・下降・回転など、一つの行動をするのに0.365秒かかる。 turtle.dig()で1個のブロックを破壊するのに0.35秒かかる。 turtle.detect()など、Turtle APIのイベント処理を内…

採掘タートルの基本性能調査(1)

今回の記事は、はてな記法ではなく、Markdownで書いてみた。 (2014/02/20、表内のデータについて転写ミスを発見したので修正。結論は変わりません。) タートルの採掘速度を調査してみた 少しでも早く採掘できるとうれしいのではないかと、 採掘関連ではど…

【More Turtles Mod使用】シルクタッチ回転式直下掘りプログラムを改造しよう

これまでのお話と今回の目標 前回の記事で、シルクタッチを使った穴掘り用としては、ほぼ問題なく動くプログラムができました。 前回の記事: シルクタッチで回転式直下掘りプログラム(MoreTurtles Mod使用) - Minecraftとタートルと僕 シルクタッチタート…

シルクタッチで回転式直下掘りプログラム(MoreTurtles Mod使用)

はじめに 前回は、Nokiyen氏のMoreTurtles Modに入っているSilkTouch Mining Turtleを紹介しました。 シルクタッチタートルの紹介(More Turtles Modの紹介) - Minecraftとタートルと僕 前々回に紹介した回転式直下掘りプログラムを、シルクタッチを使うよ…

シルクタッチ採掘タートルの紹介(More Turtles Modの紹介)

シルクタッチ採掘タートルとは Nokiyen氏作成の「More Turtles」Modに含まれているタートルです。 トピック - [1.6.4~1.5.2] More Turtles 【CCアドオン/竹,豆腐,メイドさん連携】(01/13更新) • Minecraft 非公式日本ユーザーフォーラム このModは、Tofuタートル…

回転式直下掘りプログラムの修正

はじめに 前回は回転式直下掘りプログラムを紹介しましたがいくつか不満点がありました。 前回(回転式直下掘りプログラム - Minecraftとタートルと僕) 今回はプログラムを修正し、機能を付け加えましょう。 問題点 燃料の問題 最も問題となるのは直下掘り…

回転式直下掘りプログラム

はじめに それでは回転式直下掘りプログラムを考えていきましょう。 最初にアイデアをそのままプログラムで書いたものを紹介。 つぎにそれを具体化します。 最後はこのプログラムの問題点をいくつか挙げて次回の課題としましょう。 全体の流れ まずは、燃料…

初心に戻って採掘タートルを使いこなそう

はじめに 初心に戻って採掘タートルによる穴掘りプログラムを作っていきましょう。まずは採掘(Mining)タートル自体について情報をまとめましょう。 採掘タートルのクラフト 採掘タートルの性能 1歩移動するごとに1の燃料値を消費する。 上下、前後に移動可…

タッチパネル式パスワード認証ドア(h2touchpanel API利用)

昨晩のうちに投稿するつもりが案の定寝てしまいました。 はじめに タッチパネルに表示されているボタンを押してパスワードを入力し、 パスワードが正しければ右にあるドアが開くというプログラムです。このプログラムは、タッチパネルAPI(h2touchpanel API…

オブジェクト指向でどうやってAPIを作るか(h2touchpanel APIの詳細解説)

はじめに オブジェクト指向プログラミングでComputerCraftのAPIを作成するという、マニアックな企画です。 さて、どのくらいの人が興味を持ち、ついてこれるのでしょうか……。 本APIの作成方針 ComputerCraftにおいてAPIを作るときの原則は以下の通りです。 …

h2touchpanel API 詳細

はじめに 次の図のように、外付けモニタ・ターミナル画面にボタンを表示することでタッチパネルを実現するAPIです。 タッチパネルのボタンを右クリックすると、そのボタンにあらかじめ設定されているコマンド(任意の関数)を実行できます。 任意の関数を設…

外部モニタに図形を描こう

前回までのお話 前回までは、「ターミナル画面」で絵を描く方法を紹介してきました。 今回は外部モニタに絵を描く方法を紹介しましょう。今回も色を使うので、金色のAdvanced Monitorは必須です。 まずは画素数のチェック ターミナル画面でも画素数をチェッ…

Paintutils APIを使って図形を描こう

はじめに 前回の説明でターミナル画面に点を描き、線を引き、長方形を描きました。 これらの描画を通して基本的な原理を理解できたと思うので、今回は楽をする方法を紹介しましょう。 Paintutils API 標準で用意されているPaintutils APIは、画像を取り扱い…

ターミナル画面で点を描き、線を引こう

はじめに これまで僕たちは、CCのターミナル画面(コンピュータやタートルを右クリックして表示される画面)や外付けのモニタを使って、文字を表示してきました。今回はこれらの上で点を描き、線を引く方法について学びましょう。色を使いますので、Advanced…

Luaでオブジェクト指向(2)―ピクセル・四角形・ボタンオブジェクトを作ろう

(2014/02/08、表記法について一部修正しました。) はじめに 前回は、オブジェクト指向プログラミングの紹介とともに、 座標オブジェクトを作るプログラムを紹介しました。 今回はこれを応用して、以下のオブジェクトを作る関数を作ってみましょう。 ピクセ…

Luaでオブジェクト指向(1)―基本はコロン記法とメタテーブル

はじめに Luaは組み込み用途の小規模な言語であるにも関わらず、オブジェクト指向プログラミングが可能です。なにそれ怖い。Luaはインスタンスベース*1のオブジェクト指向プログラミングをサポートしています。もっと具体的に言うならば、オブジェクトの雛形…

h2peripheral API version0.2 詳細

現在判明している次バージョンCC1.6のperipheral.find()の仕様が不満なので作りました。(このページは、h2peripheral APIについて情報をまとめるページです。このページは随時更新します) 本APIの概要 (version 0.1についてはこちら)このAPIは、周辺機器を…

乱戦(Melee)タートルのダイヤ剣は強いぞ

スポナーのそばに置いて簡易トラップは有名だよね 動画紹介 カツ丼Pの有名すぎる動画(2012年8月) そして紹介されているプログラム while true do turtle.attack() turtle.dropDown() sleep(0.1) end 使い方(動画内の説明+僕の補足) ダイヤ剣タートルに…

クロージャとコルーチン(2)-クロージャでturtle APIを拡張してみた

はじめに 前回の、 クロージャとコルーチン(1)-状態遷移関数をつくってみた - Minecraftとタートルと僕 より少し間をあけてしまいましたが、 クロージャを使ったTurtleAPI拡張をご紹介します。 補足 なぜこのようにAPIを拡張したのか3行で説明 標準のtur…

クロージャとコルーチン(1)-状態遷移関数をつくってみた

はじめに 最近、 グローバル変数に頼ることなく「関数単独で状態遷移を実現できる関数」を作って遊んでいます。具体的には次のようなの。 配列を与えると、それを環状配列(左端と右端がつながっているリング状配列、ドラクエのワールドマップをイメージする…

ComputerCraftの魅力について語ってみる

ComputerCraftのご紹介 ComputerCraftは、PC版MinecraftのModの一つです。 このModによりマインクラフト世界にコンピュータを導入でき、様々な作業を自動化できるようになります。 中でもタートルというプログラム可能な自走型ロボットを使うことで、楽しみ…

環境構築(5)-文字列をコピー&ペーストする方法

初心者向けチュートリアルをうたっておきながら結局マニアックな内容でござる。 はじめに タイトルで期待させておいて申し訳ありませんが、今回の記事はそれほど役立ちません。 これから紹介する方法を使えば、文字列をコピー&ペーストできるようになるので…

環境構築(4)-pastebinコマンドでCC用Luaプログラムをインストール

最近、マニアックな方向に走りすぎている気がしてきたので、 初心に戻って初心者向けチュートリアルを強化。 はじめに ネット上で公開されているComputerCraft用のLuaプログラムを、手軽にインストールする方法を紹介します。今回は、一度事前準備さえしてお…

APIを作ろう(4)-h2peripheral API の実装を解説

はじめに h2peripheral API 詳細 - Minecraftとタートルと僕 で挙げた「h2peripheral API」を実装したので、そのソースコードを公開し内容を簡単に説明します。解説なんていらない、ただインストールだけしたい、ということであれば以下のようにpastebinコマ…

h2peripheral API version0.1 詳細

(このページは、h2peripheral APIについて情報をまとめるページです。このページは随時更新します) 本APIの概要 このAPIは、周辺機器を取り扱う標準のPeripheral APIを拡張するものです。 以下の関数があります。 wrapByName(<機器種別>) 隣接している全…

APIを作ろう(3)-Colors API を調べてコツをつかもう

はじめに 前回は失礼しました。それでは新しいAPIを実装するために、既存のAPIを調べてみましょう。「Craft OS」「Turtle OS」が提供しているAPIをいろいろ覗いてみたのですが、 小さくてシンプルという点でColors APIが参考になりそうです。今回はこのColor…

APIを作ろう(2)-初心者でも簡単に作れるAPI

はじめに それでは、APIを作ってみましょう。 コツをつかめば誰でも簡単に作れます。 APIに名前をつける ネーミングは、非常に重要です。 これをおろそかにすると使いづらくて仕方ありません。 働きを名前から想像できるように自然な名前をつけましょう。 僕…

APIを自作しよう(1) -APIとはなにか

これから、新しい連載をはじめるよ!! はじめに この連載では、以下の内容を解説する予定です。 APIとは何か。 まずはシンプルなAPIを作ってみよう(別名、初心者でもできるAPI作成) 既存のCCコンピュータAPIを見て、コツを学ぼう 色々なAPIを作ってみよう…

ComputerCraft環境構築(3)-プログラムを自動実行させる2つの方法

プログラムの自動実行について CCコンピュータおよびタートルは、再設置することで再起動(リブート)できます。あるいはターミナル画面を表示しているときに、「CTRL+R」キーを数秒間押しっぱなしにすることでも再起動できます。お手製のプログラムを実行す…

Minecraft1.6.4とComputerCraftインストールの手順(2)

はじめに 今回は以下の内容をお送りする予定です。 Minecraft1.6.4のインストール方法 ←前回説明しました Forgeのインストール ←前回説明しました ComputerCraftのインストール ←今回 ComputerCraft環境整備 ←今回 用意するもの 前回用意したMinecraft1.6.4…

Minecraft1.6.4とComputerCraftインストールの手順(1)

はじめに 今年に入ってからMinecraft1.5.2環境を捨て、1.6.4環境を新しく構築してゲームをやり直しています。 この環境構築ですが、これまでのバージョンに比べてとても簡単にできたことに驚きました。 この驚きを伝えるため手順を画像入りで詳しく紹介した…

sleep実装からイベントを学ぶ(12)―ラジコンプログラム(2)

はじめに(動画を見て、来てくださった方へ) 上記の動画について、ラジコンプログラムの導入方法を知りたい方は2014/01/11の記事をどうぞ。 今回の記事はラジコンプログラムを解説していますが、完全な初心者には難しい内容となっています。しかし、CCの初…

sleep実装からイベントを学ぶ(11)―ラジコンプログラム(1)

はじめに 上記の動画についての概略を知りたい方は2014/01/11の記事をどうぞ。このラジコンプログラムを理解するために、今回は、前提知識であるCC無線通信を学びましょう。 無線通信について詳細な情報は全てCC非公式Wikiに書いてあります。詳しくはそちら…

タートルラジコンプログラム 紹介動画

動画撮影&ニコニコ動画に投稿してみた はじめての動画投稿、ドキドキしますね。 ほぼテスト動画なので、動画自体についてのご批判はご容赦ください。【Minecraft】 ComputerCraft ラジコンプログラム 動画の内容 先日解説した「モニタボタンによるタートル…

【補足2】既存の関数を上書きして拡張しよう

はじめに (※今回の内容は、Luaの「無名関数」についての理解が不十分だと意味不明な可能性があります。 前回の記事とセットでご利用ください)さて、前回、 「既存の関数に不満があったら書き換えちゃおうぜ!!」などとまとめましたが、 僕個人としては、T…

【補足】Luaの型は色々あるけれど関数型って特殊なんです

はじめに 今回はLuaというプログラム言語について詳しくお話しましょう。 例によって長いので、結論だけ知りたい人、特にCのポインタを理解できている人なら、最後のまとめだけ見たらOKですよ。 Luaが扱う値のタイプ Luaでは様々な値を扱いますが、その値に…

sleep実装からイベントを学ぶ(10)-モニタボタンでタートルを操作する

はじめに 今回は、モニタボタンを使ってタートルを直接操作するプログラムを紹介します。前回の最後に予想したとおり、前回のプログラムよりかなり短いですよ今回は。機能的にも前回のプログラムの一部分を使っているだけなので、前回よりも理解しやすいプロ…

sleep実装からイベントを学ぶ(9)-モニタボタンでプログラムを操作する

はじめに 今回は以下のようなプログラムを紹介します。 「モニタボタンによる画面表示操作」プログラムの仕様 コンピュータに隣接した巨大モニタを表示専用モニタとする。 表示専用モニタの中央にキャラクタ「@」を表示する。 また同時にモニタの一番上に、…

sleep実装からイベントを学ぶ(8)-インタラクティブなプログラムを作る

はじめに さて、イベントに関する連載もそろそろ大詰めです。 これまで学んだ内容をフルに使って、いろいろと操作ができる、インタラクティブなプログラムを作ってみましょう。これまで紹介したプログラムは、ターミナル画面上でマウスをクリックしたり、キ…

sleep実装からイベントを学ぶ(7)-Too long without yieldingエラーの解決方法2

エラーを避けるまた別の方法 前回の記事で、「Too long without yielding」を避けるために定期的に「sleep」を入れようというお話をしました。しかし実は、これ以外にもエラーを避ける方法があります。 (これに気づいたのはつい最近なんですよね。これを踏…

sleep実装からイベントを学ぶ(6)-Too long without yieldingエラーの解決方法

はじめに CCプログラムを書いていると、必ず一度は出会う 「Too long without yielding」エラーこれを解決するために一般的に言われるのが、「sleep()を入れろ」なぜ? sleep入れたらプログラムの実行が遅くなるじゃない。 ただでさえプログラム実行という重…

sleep実装からイベントを学ぶ(補足)―ローカル変数・グローバル変数

【補足】変数名の先頭についている local ってなに? そういえば、これまで何度も使っているのに説明をしていませんでした。 良い機会ですのでLuaにおける変数の取り扱いについて説明しましょう。まず、最初に重要な項目だけ先に提示します。 他のプログラム…

sleep実装からイベントを学ぶ(5)―タイマーイベントとは

タイマーイベントってなに? 一言で言うならば、「時限発火式のイベント」です。これだけじゃあんまりなのでもう少し詳しく説明すると、 あらかじめ時間(秒)を指定してタイマーをスタートしておく。その時間が経過することで発生するのがタイマーイベント…

sleep実装からイベントを学ぶ(4)―メニュー画面を作る

ひゃっはー! ようやく仕事納めだ。年末進行やっとおわた。 更新するぜ。ちょー更新するぜ。 前回の課題について 前回出した課題は、以下のようなメニュー画面を作ることでした。 解答例 解答例は以下のとおり。 前回の「@」キャラクター移動プログラムを素直…

sleep実装からイベントを学ぶ(3)―Keyイベントを使いこなす

keyイベントを使いこなす 前回予告した通り、矢印キーを使った操作についてサンプルプログラムを示しましょう。 画面出力についての注意 この手の画面描画系プログラムでは、画面ちらつき防止のためにダブルバッファリングという手法を使うのが一般的です。 …

sleep実装からイベントを学ぶ(2)―イベントとは

イベントは裏で(ひっそりと)起きているんだ! タートル君が活動しているときに、僕たちが何かの働きかけを行うと、 タートル君の裏でイベント(Event)が発生します。たとえば、自動クラフトプログラムが動いているときに、 マウスでタートルの画面をクリ…