Minecraftとタートルと僕

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

こちらのページは更新が滞っており、情報が古くなりつつあります。新しいCC情報サイトをはじめましたので、もしよければご参照ください。今後ともよろしくお願い申し上げます。

「百億のマインクラフトと千億のタートル」(https://hevo2.hatenablog.com/)

Lua

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

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

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

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

Lua公式解説書注文しちゃった

Lua

Amazonさんでポチった Programming in Lua プログラミング言語Lua公式解説書作者: Roberto Ierusalimschy,新丈径出版社/メーカー: アスキー・メディアワークス発売日: 2009/08/28メディア: 大型本購入: 5人 クリック: 78回この商品を含むブログ (18件) を見…

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

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

「Too long without yielding」エラー発生までの時間を検証

発端 ご飯食べながらボーっとCC公式Wiki読んでいたら次のような記述をみつけました。 http://computercraft.info/wiki/OS_(API) os.pullEvent()の説明にて Note that if a program has not attempted to pull an event in the past ten seconds, it will be …

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

はじめに 今回は以下の内容をお送りする予定です。 Minecraft1.6.4のインストール方法 ←前回説明しました Forgeのインストール ←前回説明しました ComputerCraftのインストール ←今回 ComputerCraft環境整備 ←今回 用意するもの 前回用意したMinecraft1.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)が発生します。たとえば、自動クラフトプログラムが動いているときに、 マウスでタートルの画面をクリ…

sleep実装からイベントを学ぶ(1)―はじめに

はじめに 「whileループにはsleep()を入れること」CCプログラマなら誰でも知っているこのルール。そもそもsleep()って何をやっているんだろう。そのような疑問を持った僕が調べた結果、その副産物によって、これからの記事を書く予定です。これからの記事を…

クラフティタートルプログラミング チュートリアル(7)

クラフティタートルの続き Redstone APIやMFR2のRednetCableの説明で回り道をしてしまったけれど、 クラフティタートルを生産ラインに組み込むケースについて、最終的な自動クラフトプログラムを紹介・解説しましょう。チュートリアル(5)の自動クラフトプ…

Redstone APIを使ってレッドストーン信号を出そう

今回の内容 redstone API説明してクラフティタートルプログラムの完成版を出そうと思ったら、 内容が多すぎてそこまでいかなかった・・・。プログラムは次回かな。今回は、以下の内容でチュートリアルを進めましょう。 CCのLuaインタプリンタの説明 CCではレ…

クラフティタートルプログラミング チュートリアル(6)

クラフティタートルを生産ラインに組み込む それでは、クラフティタートルの応用編をはじめましょう。 これまで考えてきたクラフティタートルを、拠点の生産ラインの中にどうやって組み込むかを考えます。 基本形 これまで考えてきたクラフティタートルの配…

動画見てたら鼻水出た(失礼

動画のお話 11/29の記事で紹介した、いま僕の中で一番ホットな動画シリーズなんだけど なんと2つも話が追加されているよ やふー! しかも最新のPart3はアップしたのついさっきじゃないですかー。先週末にpart2が出てたので、時間ができたら感想書かなきゃと…

クラフティタートルプログラミング チュートリアル(5)

それでは自動クラフトプログラムの改良をすすめましょう。まずは、 チュートリアル(3)で掲載したプログラム仕様と今回の改良の方針についてまとめておきます。 改良の方針 改良前(チュートリアル(3))の仕様 1個のアイテムをそのままクラフトするよう…

クラフティタートルプログラミング チュートリアル(4)

さて、少し寄り道したけれど、クラフティタートルのチュートリアルを続けましょう。 前回のプログラムの改善 対応できるレシピを増やそう 前回のプログラムは、サトウキビ→砂糖のような1x1レシピに対応するためのプログラムだけど、 もっと多くのレシピに対…

モニタ使用のチュートリアル

モニタ(Monitor)の基礎知識 コンピュータのすぐ隣(上下左右どちらでも)に置いたモニタに色々な表示ができる モニタブロックを四角形の形に置けば結合して大きな一つのモニタとなる(どのサイズまでいけるかは知らない) カラー表示させたいならAdvanced …

クラフティタートルプログラミング チュートリアル(3)

昨晩のうちに公開するつもりが、思わず寝てしまいました。 出勤前に急いで投稿です。 自動クラフトプログラム再考 サトウキビ→砂糖のように、1個のアイテムをそのままクラフトするような不定形レシピ。 これを以降では、「1x1レシピ」と呼びます。1x1レシピ…