表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
異世界の魔法はJavaScriptで起動する  作者: あきらメル
第2章 入門編
16/30

入門編『オブジェクト指向』

「さて次は『配列はいれつ』の勉強をしようか」


そう宣言した魔導書に、エイダが猛烈な抗議の声を上げた。


「文字とか数字とかもう嫌だ。疲れた〜。魔法教えてよ」


駄々を捏ねるエイダに、魔導書も困ったように諭す。


「後少しでjavascriptの大まかな基礎が終わるんだが、もうちょっと頑張れないか?」


「うん、頑張れない」


「そうか」


魔導書はブツブツと考え込む。


「まぁ、今まで習った事でも、魔法の行使は可能か。復習という意味でも悪くないか」


魔導書は方針を決め、宣言する。


「よし、魔法の勉強をしよう」


「やった〜」


エイダは両手を上げて、歓喜の声を上げる。


「今教えられる魔法は『加速』の魔法だ。これはエイダがジャイアントスパイダーを倒す時に使った魔法だ」


「うんうん」


javascriptの時より食い付きが良いエイダに、苦笑いしながら魔導書は続ける。


「術式はこうだったかな?」


スクリプトが画面につづられていく。


<SCRIPT>

master.onthrow=function(event){

var stone=event.projectile;

var ax=100*stone.vx;

var ay=100*stone.vy;

var az=100*stone.vz;

stone.accelerate(ax,ay,az);

}

</SCRIPT>


「えっと?」


エイダは少し困った顔をする。半分理解し、半分わからない状態だ。


「順を追って説明する。まず初めに、この『master』とはエイダの事だ。マスター登録した時に、masterという変数にエイダを登録した」


エイダは思い出す。


「魔導書に手を置いた時?」


「そうそう。確かあの時はこの術式を使った」


<SCRIPT>

document.onmousedown=function(event){master=event.user;}

</SCRIPT>


魔導書は術式を書きながらつぶやく。


「あれ? こっちの方が説明しやすいな。これから説明しても良いか?」


「うん、いいよ」


「documentは日本語で書類という意味。javascriptの場合、今閲覧(えつらん)している魔導書の1ページを表すオブジェクトだ」


「オブジェクト?」


エイダは首をかしげる。


「そう。『ページ』『魔導書』『エイダ』等がオブジェクトだ。それらのオブジェクトには『色』『重さ』『位置』などの特質プロパティがある。」


「プロパティ?」


エイダは首を反対側にかしげる。


「例えばエイダなら、ヒットポイント(HP)というプロパティがある。生命力がどの位あるかのおおよその数値で、これが0になると死ぬ」


<SCRIPT>

alert("エイダのHPは"+master.hit_point+"です。");

</SCRIPT>


『エイダのHPは10.6です。』と画面に表示された。魔導書は説明を続ける。


「オブジェクトのプロパティを指定する場合は [オブジェクト名].[プロパティー名] で利用できる。


「なんか変数みたい」


「『そのオブジェクトに属する変数』の考えで合っている。他にも魔法量(MP)や知力もあるぞ」


<SCRIPT>

alert("エイダのHPは"+master.hit_point+"です。");

alert("エイダのMPは"+master.magic_point+"です。");

alert("エイダの知力は"+master.intelligence+"です。");

</SCRIPT>


『エイダのHPは10.6です。』

『エイダのMPは3.1です。』

『エイダの知力は44.0です。』


エイダは何か良いアイデアが閃いたのか、嬉しそうに魔導書に発表する。


「変数だったら代入だいにゅう演算子えんざんしで、数を変えることが出来るんじゃないかな?例えば」


エイダは楽しそうに術式を編集する。


<SCRIPT>

master.hit_point=999999999999999999;

master.magic_point=999999999999999999;

master.intelligence=999999999999999999;

alert("エイダのHPは"+master.hit_point+"です。");

alert("エイダのMPは"+master.magic_point+"です。");

alert("エイダの知力は"+master.intelligence+"です。");

</SCRIPT>


「これで私、凄い魔導師になれちゃうかも?」


自慢げなエイダに、魔導書も肯定的に答える。


「良いアイデアだと思うぞ。実際に実行してみよう」


『エイダのHPは10.6です。』

『エイダのMPは3.1です。』

『エイダの知力は44.0です。』


前回と同じ値が表示された。


「あれ? 変わらない?」


魔導書は、今起きた現象について説明する。


「普通のプロパティーだったら『読み書き』できるのだが、HPやMP等のステータスに関しては『読む(read only)』しか出来ないんだ。それらのプロパティーには防護処理プロテクションがかかっている」


「なんだ〜」


エイダは残念そうに肩を落とす。


「それにこれらのステータスはただの指標だ。例えばHPは『体力』『健康状態』『傷の具合』『毒の存在』など色々な事柄を考慮されて計算される値であって、HPそのものには何の効力はない。仮にHPの値を変えられたとしても、心臓を刺されていれば死ぬ」


「そっか……ってあれ?」


エイダはふと気がついた。


「魔法教えてくれるって言ったのに、結局数値ばっかりだ」


「うん、そうだな。この後ちゃんと教えるから、我慢我慢」


「む〜」


不満げに唸りながら、エイダは我慢するしかなかった。

ーーーーーーーー ログ ーーーーーーーーーー

エイダは『オブジェクト』を理解した。

エイダは『プロパティ』を理解した。

『オブジェクト指向しこう』スキルがLV1になった。

ーーーーーーーーーーーーーーーーーーーーーー


登場人物


エイダ・ラブレス

挿絵(By みてみん)

冒険者に憧れている9歳の普通の女の子。

魔法を使いたくてウズウズしている。


職業:術者プログラマ LV1

称号:初心者

スキル:『関数かんすう LV3』『構文こうぶん LV1』『文字列もじれつ LV1』『コメント LV1』『算術さんじゅつ演算子えんざんし LV1』『文字列もじれつ演算子えんざんし LV2』『変数へんすう LV1』『代入だいにゅう演算子えんざんし LV1』『オブジェクト指向しこう LV1 new』

関数:『alert()』

HTMLタグ:『<script>』


喋る魔導書

挿絵(By みてみん)

エイダが森の奥で出会った喋る魔導書。

基礎をちゃんと教えてくてウズウズしている。


作者より


そう簡単には俺TUEEEEさせる気はありません。世知辛い世の中です。


1話〜3話からスクリプトをコピペしようと思ったら、加速の魔法スクリプトに間違いを見つけました。


<SCRIPT>

master.onthrow(event){

[加速のコード]

}

</SCRIPT>


と書いてありましたが、正しくは:


<SCRIPT>

master.onthrow=function(event){

[加速のコード]

}

</SCRIPT>


初歩的なミスで、かなり恥ずかしいです。それも一ヶ月以上は放置していた。当たり前ですが、魔法に属する『関数』『変数』『オブジェクト』はないので、実際に動作チェックできないのが悩みの種です。簡易的なインチキmasterオブジェクトを作くろうかなと考えています。


またmaster登録する時にdocument.onclickのイベントを使っていましたが、これは一旦ページに触れて手を離さないといけない。ストーリー的にはページに触れたままで登録されてるっぽいので、onmousedownを使おうか、『手を離してくれ』の台詞を入れるかにしないとダメな事案でした。結局onmousedownに変更しました。


参考にしたページ


JavaScriptのプロパティディスクリプタ。 read onlyプロパティに関して。

https://qiita.com/hosomichi/items/db5c501272b622fdd848


jsfiddle


ステータス表示

https://jsfiddle.net/AkiraMeru/bxubthgz/


ステータス改変できず

https://jsfiddle.net/AkiraMeru/bxubthgz/1/

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ