トラップタワーの作り方やSEEDなど、MinecraftPEを楽しむための情報や、最新のアップデート情報が詰まった非公式wikiです。

ここでは、より複雑なプラグインを作るためのコードの書き方などを書いていきます。
phpの少し難しい部分にも触れます。本来wikiで解説するべきではないのかもしれませんが需要があるとのことで書き残しておきます。

配列について

はじめに

まず初めに変数に代入可能な値の種類について学んでおこう。
この"値の種類"は、プログラム用語で「型」と呼ばれる。

いままで、これを読んでいる方は「変数にはなんでも入れれる」と言って、文字(string型)だったり数字(int型)、trueやfalse(bool型)などを代入してきたことだろう。
配列(array型)-連想配列とも呼ばれる-も変数に代入可能な値の一種。
さまざまな値をひとまとまりにしておける便利なものが配列である。
概念として、箱みたいなものなものだと覚えておけばいいだろう。
ようするに、配列は値をまとめて一塊にして扱えるものだ、と考えればいい。

配列は、$name = "あい うえお";と同じような形で、$names = array("あい うえお","かき くけこ");のような形で代入可能。
以下で詳しく書くとする。

さまざまな格納方法

配列の格納方法/取り出し方はさまざまある。ここに書いておく以下は全て同様である。
しまい方
1
$array = array("あい うえお", "かき くけこ");

2
$array = array();
$array[] = "あい うえお";
$array[] = "かき くけこ";

3
$array = array();
$array[1] = "かき くけこ";
$array[0] = "あい うえお";

4
$array = array( 0 => "あい うえお", 1 => "かき くけこ");

配列には「0番目」があることを知っておこう。
この「0番目」や「1番目」のことを"(配列の)キー"と呼ぶ。

1のコードでは、array(0番目,1番目);のように並んでいる。
一気に代入するときにはこれのほうがよい。
(紙束が入っている箱の中をイメージ)

何かを順番に代入していくときには、2のコードを使うとよいだろう。
(箱を用意しておき、(中に何枚はいっているかなどは確認せず)一枚ずつ順に紙をしまっていくイメージ)

特定のキーにピンポイントで入れたいときには3を使う。
(箱を用意しておき、その中身を見て、「キー番目」に「値」をしまうイメージ)

4は、箱を用意するのと値を入れるのを持ってくる形であり、1とほぼ同様である(キーを明示する書き方をしている)
取り出し方
上記のコードだと、"あいうえお"と表示したい場合にはprint($array[1])とすればわかるだろう。
次は注意が必要だ。もしprint($array)としてしまうとエラーが出て、"Array"と表示されることだろう。
「そこに箱がある」のはわかるが、「何が入っているか/とってこればいいのか」は示されていないのでこうなる。

''箱に何が入っているかわからない時、もしくは知りたい場合は、'print_r($array);'をすれば中身が見れる。''
↑デバッグの際によく使うので覚えておこう。

キーは文字にもできる

先ほどはキーは0と1つまり数字だけだったが、このキーは文字列にすることも可能である。

$array = ("ア行" => "あいうえお" , "カ行" => "かきくけこ");

$array["ア行"] => "あいうえお";
$array["カ行"] => "かきくけこ";

キーを文字列にした場合、数値とは厳密には同次元では併用できないので注意である。(←1度目では意味は理解できなくてよい)
これで配列の中身とキーについては終了だ。

グローバル変数と普通の変数の違い


ただの変数だと、その関数(function)の終わりにリセットされる。破棄されてしまう。
(たとえば$name = $player->getName();とすると、次関数が実行されるときには別の値になっている-つまりリセットされてしまう)

しかしグローバル変数($xxx->がつくやつ)を使うと、そのclass内(もしくは外でもいい)では、入れた値を取得できるようになる。function内で破棄されないのである。
これを使うことで、例えばこのユーザーは今どういう状態で…ということを判別が可能になる。

状態の保持の実装

キーには文字列も使える、つまりプレイヤー名をキーとして格納することも可能なのである。

たとえば
$name = $player->getName();
$this->player[$name] = 1//クエストを受けている状態にする
これでクエストを受けている状態だと定義する。
この場合

if($this->status[$name] == 1){
#クエストのオーダーを受けているときの処理
else{
#クエストのオーダーを受けていない時の処理
}

と処理を分けることができる。

多次元配列(二次元配列/三次元配列)

ここまでarrayの中には数値やテキストをデータとして格納してきた。しかし、格納できるのはそれらだけではない。arrayの中にarrayを入れれるのだ。箱の中に箱を入れ、その箱の中に紙が入っている、というような感じである。
いきなりぶっとばしていこう。

$the_player = array(
"money" => 0,
"status" => array("順位" => 0, "状態" => "生"),
"blocks" => array (1,2,3)
);

執筆中

関数を作る

ある処理が、違う変数内部から何回も行われる場合は、関数を作る場合が多い。
そのほうがコードは短くなるし、あとで変更したくなった時にも全体を変更する必要がなく、一か所を変更するだけでできるし、なにより見た目がきれいである。

5人より多いときに入ってきたときにだけ特別なメッセージを表示させるコードを書くとする。
/* 関数を使わない */

$player = $event->getPlayer();
$

執筆中
onCommand

スポンサードリンク

Menu

メニュー




サバイバル攻略
生き延びるためのテクニック


MOD・スキン・テクスチャ・アドオン
雰囲気を変えてプレイ


レッドストーン
レッドストーンを利用したテクニック








Wiki公式Twitterアカウント

Twitterでも更新情報をお届けしております!

メンバーのみ編集できます