「ゴブリンでもわかるゲームプログラミング」第2話 ~読むだけでゲームプログラミングがなんとなくわかるようになる謎のファンタジー小説~
およそ一年後、季節は夏――
「あっぢぃいい」
ユキはうだるような暑さの中、〝芝刈り〟をしていた。
ユキ・リバイス、15歳は〝魔王城の用務員〟として働いていたのである。
この世界(国)の義務教育は中等部までであった。(前世と同じであるが)
ユキは魔法を学びたかったため、高等部への進学をしてみたい気持ちもあった。
しかし、高等な魔法を学ぶのには急激にハードルが上がり、魔法学を履修できるのは、王立の学園だけとなっていた。
その王立の学園とは貴族や相当なエリートでなければ入学できないという。
ユキは、いかんせん魔生成不可者……通称、〝無才〟である。
ゆえに進学など到底、無理であった。
とはいえ、当のユキ本人は大して気にしていなかった。
以前からユキは前世で苦労した学業を、今世でやり直すことについてはあまり前向きではなかったのだ。
というわけで、求人中であった魔王城の用務員として就職した。
わけであるが、なんの因果か…… ユキがメインに担当することになったのは、広大な敷地のある魔王城の一角を占めている〝王立学園高等部〟であった。
要するにユキは高校の用務員さんとなっていた。
そして今日は芝刈りの仕事……というわけだ。
「ああ゛……夏ってなんでこんな暑いのだろう……溶けるぅ」
広大な魔王城にある学園はこれまた非常に広い敷地を有している。
その学園にある芝生もそれはもう無駄に広いわけである。
ユキは前世でのクーラーの効いた部屋でのデスクワークを恋しく思う。
「ってか、ユキがヘラヘラしてるからだろ」
少年が不満そうにユキに声を掛ける。
やや明るい茶髪にそばかすまじりの快活そうな少年だ。
彼はユキと同じ年齢で同僚であるイント・フロート。
「あ、そうだな、イント。すまん……」
ユキはイントに謝罪する。
(そもそも俺たちの今日の担当はこんな広い芝生の芝刈りではなく、寮生の衣類の洗濯であったはずなのだ……)
それがこんなことになったのは……
◆
30分ほど前――
「いやー、今日はまじで格別に暑いな。なぁ、ユキ、こんな日に洗濯当番に当たったのはラッキーだな」
「そうだな」
ユキとイントは今日の担当として割り当てられていた洗濯のために学生寮のランドリーへと向かおうとしていた。
その時……
「ねぇねぇ、君達~」
(……!)
背後からユキとイントを呼びかける声がした。
二人が振り返るとそこには筋肉質で体格のいい男がいた。
彼はジェイソンという名で、ユキとイントの先輩用務員である。
ジェイソンの後ろには彼の連れもいる。ジェイソン同様、ガタイがいい。
「な、なんすか?」
この時点で嫌な予感がしているイントは怪訝な顔でジェイソンに尋ねる。
「あのさー、君達って体調いいよね?」
「はい?」
「僕達、今日、ちょっと体調が芳しくなくてね」
「そうなんですね。お大事に」
ユキはそう言って、イントを連れてそそくさと去ろうとする。と……
「ちょっと待て」
「まだなにか?」
「俺たちは体調が悪い」
(いやいや、その筋肉、今日もすこぶる好調そうじゃないですか)
「言ってる意味がわかるか?」
ジェイソンは先程までの穏やかな雰囲気ではなく、ドスを利かせた声で脅すように言ってくる。
だが、それを受けて、イントは抵抗するように……
「……! あ゛ぁ? わかりませんねー、どういう意味か……」
「あー、わかりました! ひょっとして担当を替わって欲しいとかですかね?」
「ゆ、ユキ……!?」
イントは驚いた様子でユキの方を見る。
「そうだよ、分かってくれるならいいんだよ、悪いね、ユキくん、イントくん」
ジェイソンは白々しくお礼を言うのであった。
◆
そして現在――
(気が強いイントには悪いが、たかだか担当の違いのために、実利にならないトラブルはごめんだ)
「まぁ、いいけどよ。ユキは大人だな」
「はは、そうかな」
ユキは苦笑いする。
(実際、35年……いや、記憶が甦ってからもカウントすると38年生きてるからな)
「いやー、しかし、ユキ。暑いだけならともかく……いや、暑いがゆえにか……雑草の発育も半端ないな……」
「うむ」
「「…………」」
二人はしばし沈黙する。
すると……
「ユキ……あれ、使うか……」
イントがぼそっと言う。
「え? だけどバレるとまずくないか」
「だけどよ、ユキ。このクソ暑い中、まじめにやってたら下手したらぶっ倒れるぞ」
(うーむ……でも確かに巻き込んだイントが倒れでもしたら申し訳ない)
「そうだな。わかった」
「よしきた!」
イントはパチンと指をはじく。
と、ユキは用務道具の中から、一本の杖を取り出す。
それは魔法補助具であった。
その魔法補助具を地面に向け、芝生に宛がう。
そして……
「……実行」
次の瞬間であった。
杖の先端からは大きめの風弾が発生する。
風玉は杖の先端部分を維持するように回転する。
「さて」
ユキは魔法補助具を芝が生えた地面に宛がいながら進んでいく。
すると、風弾が通過した箇所の芝生は綺麗に刈り取られていく。
数分後――
「あぁー、終わった終わった! やっぱユキの〝芝刈り機〟は快適すぎる」
「そうか? ありがとう」
ユキは自分の魔法補助具がイントに褒められて素直に嬉しかった。
// 弾の初期化処理
time = 0 //射出時間
interval = 0 //射出間隔
angle = device.angle //射出角度
position = device.position //射出位置
size = 3 //大きさ
power = 1 //威力
attribute = WIND //属性=風
sub_attribute = BLADE //サブ属性=刃
speed = 0 //速度
acceleration = 0 //加速度
// 弾の更新処理
position = device.position //弾の位置
仕組みは簡単だ。
弾の初期化処理で、弾の初期位置を杖の先端位置(position = device.position)に設定する。
さらに気持ち大きめ(size = 3)にする。
メイン属性の風(attribute = WIND)とサブ属性の刃(sub_attribute = BLADE)を設定する。
そして弾の更新処理にて、弾の位置を杖の先端位置(position = device.position)にし続ければ、ずっと杖の先端位置に固定できるというわけだ。
これにより、誰でも使える便利な風刃魔法を用いた芝刈り機ができるというわけだ。
【プログラミング豆知識①】
// は プログラム内にコメントしたいときに使用します。
//から右側はプログラムとしては認識されません。
そのため、//以降にプログラムの意味、意図などを書いて、後から見た時に、理解しやすいようにコメントをしておくことが一般的です。
【プログラミング豆知識②】
左の英字で書かれた値 = 右の値はプログラムにおいて、代入(設定)です。
例えば、
power = 1 // 威力
これはpowerに、1を設定していることを意味します。
同様に、
size = 3 // 大きさ
これはsizeに、3を設定していることを意味します。
このpowerやsizeは設定後に、使用することができます。
例えば、output(出力)というパラメータを威力(power)×大きさ(size)にしたいなら、
output = power * size
のようにすればよいです。
注意すべき点は、設定したい値は必ず左側に記述する必要があります。
【プログラミング豆知識③】
device.positionのように、左の値.右の値というように、〝.〟でつなぐ場合、
左の値〝の〟右の値
という意味になります。
つまり、device.position は
device(杖).(の)position(位置)
という意味になります。
◆
およそ一年前――
ユキは魔法補助具の魔法論理を読み取れるようになった。
その後も解析を続けたユキはある重大なことに気づく。
そもそもユキはある仮説を立てていた。
魔法補助具の内部は、マイコン(マイクロコンピュータ)に類似している。
だから、メモリ(記憶装置)に魔法論理が組み込まれているのではないかというものだ。
しかし、そのメモリ(記憶装置)の内容を読み取り、魔法論理を解析することができる装置……
すなわちマイコンに対する〝パソコン〟に当たる存在がないことが問題であった。
だが、この一年前の出来事により、ユキは更に大胆な一つの仮説を立てる。
その仮説とは、魔法補助具に対するパソコンの役割を果たすもの……それは〝人間〟なのではないかというものである。
この仮説を信じるならば、魔法論理を読み取れるだけでなく〝編集〟することも可能である。
ユキはそう信じ、それから読み取り⇒放出の訓練を繰り返した。
魔法論理を編集するイメージを常に持ちながらだ。
ユキが訓練において、イメージした内容は非常にシンプルなものであった。
speed = 2 ⇒ speed = 1
そして、ある日のこと。ついに魔法補助具から放たれた光弾の速度がゆっくりになったのだ。
慌てて、魔法論理の読み取る。
すると、確かに魔法補助具内の魔法論理の数値が、ユキがイメージした通り(speed = 2 ⇒ speed = 1)に変わっていたのだ。
そうして、ユキはついに魔法補助具内の魔法論理の改変を修得したのであった。
この記事が気に入ったらサポートをしてみませんか?