第19話 カウンターの利用★
その後、研究開発室に現れたオーエスも交え、まずはギリギリ魔法補助具が格納できるくらいの大きさ……ランドセルくらいの大きさの魔法瓶での
時間がなく、十分な検証を行えなかったが、明らかにこれまでより弱い出力で、高い保冷効果を得られている感覚があった。
夜になって「また明日」と言った約束を果たすかのように、アイシャが研究開発室に来てくれた。
今日は秘書のスパ・ゲッツェコードもついてきている。
どうやら二日連続、夜を平民と過ごした(いかがわしい意味ではない)という事実が許容できないということらしい。
ユキはスパ・ゲッツェコードの鋭い視線を感じつつも、魔法瓶のような断熱効果の高いハードを作成するというユキとソレハのプランを説明する。
(スパ・ゲッツェコードは全く興味がないようで、聞いていなかった)
アイシャもそれに賛同してくれ、必要な資金調達は行うと言ってくれた。
そこからは地道な試作を繰り返す作業であった。
ソレハとオーエスがハードの試作をしてくれた。
サイズや形はひとまずユキの前世の記憶である冷蔵庫を参考にした。
二週間程度で一旦、ハードの試作品が完成した。
ハードが完成したらば、今度はユキの
適度な冷却の強さと長時間稼働の両立を実現するためのちょうどいい魔法出力となるよう魔法補助具の
その過程でいくつかの工夫を凝らす。
まず最初に取り組んだのは〝見栄え〟を良くすることだ。
以前、ユキが用務員の先輩であるジェイソンに絡まれて、魔法による決闘を行った時もそうであったが、魔法補助具は出力される魔法の〝見栄え〟を良くすると、なぜか設定値の限界を超えることができる性質がある。
ユキは今回の冷却装置の作成を行う過程において、ほぼ同程度の出力を設定した場合も見栄えが良い方が、エネルギー効率を改善できることが分かってきたのだ。
その前提の元、改良を加えたのが、下記の
////////////////////////////////////////////
【変更前】
// 弾の初期化処理
time = 0 // 射出時間
interval = 0 // 射出間隔
angle = device.angle // 射出角度
position = device.position //射出位置
size = 2 // 大きさ
power = 0.5 // 威力
attribute = ICE // 属性=氷
speed = 0 // 速度
acceleration = 0 // 加速度
・・・
// 弾の更新処理
position = device.position //弾の位置
↓↓↓
【変更後】
// 弾の初期化処理
time = 600 // 射出時間
interval = 60 // 射出間隔
angle = 360 / 10 * count / 60 // 射出角度
position = device.position //射出位置
size = 1 // 大きさ
power = 0.1 // 威力
attribute = ICE // 属性=氷
speed = 0.1 // 速度
acceleration = 0 // 加速度
・・・
////////////////////////////////////////////
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
【プログラミング豆知識】
プログラミングにおける掛け算記号は〝*〟を使用します。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
まず射出時間を600(time = 600)、射出間隔を60(interval = 60)とすることで、
5秒間、0.5秒間隔で、10発の魔法弾を射出するように設定する。
出力=大きさ
size = 2 ⇒ 1
power = 0.5 ⇒ 0.1
これで、大きさ×威力だけを見ると、変更前後で変化はない。
そして、弾の出方の肝となるのが、射出角度と速度、加速度だ。
射出角度を設定している
////////////////////////////////////////////
angle = 360 / 10 * count / 60
////////////////////////////////////////////
について確認する。
countとは、この魔法全体が始まった瞬間を視点とするカウンターである。
要するに、一発目の弾が出た瞬間が0として、射出完了の600までカウントアップするカウンターだ。
////////////////////////////////////////////
count / 60
////////////////////////////////////////////
の部分はcountを60で割った商となる。
例えば 7 を 3 で割ると、 2余り1となるわけであるが、7 / 3 は商の部分である2となるわけだ。
つまるところ count / 60 は
countが60増えるたびに1カウントアップする値となる。
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
【count / 60の値の遷移】
countが 0~ 59までの間→0
countが60~119までの間→1
countが120~179までの間→2
countが180~239までの間→3
countが240~299までの間→4
countが300~359までの間→5
countが360~419までの間→6
countが420~479までの間→7
countが480~539までの間→8
countが540~599までの間→9
・
・
・
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
count / 60 のうち、
60の部分をxに変えて、
count / x のようにすれば、
〝x増えるたびに、1カウントアップする値〟を作れるため、
ここで改めて射出角度の設定処理を確認する。
////////////////////////////////////////////
angle = 360 / 10 * count / 60
////////////////////////////////////////////
次に360 / 10の部分である。
この360とは一周、360°の360である。
要するに、
360 / 10
は
一周の1/10の36°
のことである。
最初から36としてもいいのだが、後からプログラムを見た時に、
その時、どういう意図でそのプログラムを書いたのかがわかるように、まわりくどく記載することがよくある。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
【プログラミング豆知識(高校の数Ⅱ以上を習っている方へ)】
実際は、角度の単位は〝弧度法〟(ラジアン)を使用する場合が多いです。
本作では度数法を用います。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
これらを踏まえて、もう一度、射出角度の設定処理を確認する。
////////////////////////////////////////////
angle = 360 / 10 * count / 60
////////////////////////////////////////////
360 / 10 * count / 60は
〝360 / 10〟に〝countが60増えるたびに1カウントアップする値〟を掛け合わせている。
何が起こるかというと、弾が射出されるたびに、前回の弾よりも〝36°〟だけ角度をずらして射出するということである。
つまり、ぐるりと円状に、大回転するように弾を射出することができるのだ。
これをゆっくり目のスピード(speed = 0.1)で射出すると、なんか雰囲気いい感じに弾が渦状に射出されるのだ。
このように、ただ1つの冷気の塊を魔法補助具先端に留まらせるだけの
これだけでもそれなりの成果が得られたのであるが、ユキは更に、一つ、工夫を加える。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます