第3話 遠距離攻撃

 ゴーレムの方向転換や百歩あるくなどをプログラムして暇を潰しながら旅をする。

 ゴーレムの背中で暮らすのにも慣れてきた。

 なんか包まれていると満たされる気持ちになる。

 これでうとうとできれば、最高なんだが。

 スライムに睡眠は必要ない。


 木の葉が揺れる。

 むっ、でっかいサルだ。

 どこから持ってきたのか樹の上から石をゴーレムに投げつけてくる。

 いい気分だったので見逃しても良いと思ったが。

 くそっ、糞を投げてきやがった。

 ゴーレムが汚れちゃったじゃないか。


 遠距離攻撃、カモン。

 持って無い。

 さいですか。


 俺には手引書という強い味方があるじゃないか。

 魔法を撃つぞ。


#include <stdio.h>

#include "magic.h"

void main(void)

{

 fire_ball_test();

}


 たしかこれで良いはずだ。

 プログラムを打ち込んでコンパイルっと。

 魔法語が詠唱されてファイヤーボールが発射される。

 サルが投げつけた石にファイヤーボールが当たり相殺された。


「ききー、きっきっきっきき」


 サルが笑っている。

 頭はないけど、頭にきたぞ。


 こんなのでどうだ。


#include <stdio.h>

#include "magic.h"

void main(void)

{

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

 fire_ball_test();

}


 へへっ、十連弾だ。

 どんなもんだ。

 ファイヤーボールを次々に撃つとサルは石を投げて相殺する。

 もう一度だ。

 駄目だ。

 相殺された。


 観察するとゴーレムが呪文を唱えている間に石を生み出して補充している。

 サルの癖に不思議パワー使いやがって。

 なんかど頭、いいやど核に来た。


 作戦会議だ。

 いったん投石の圏外に出て本をめくる。

 呪文が短くて沢山ファイヤーボールが撃てれば良いんだ。


 ループの目次を見る。

 これだな。

 まずはカウンターを定義しようだってさ。

 ふむふむそれで。

 次に繰り返し命令を入れましょうと。

 これは決まりきった形だから決まりで覚えるようにか。


#include <stdio.h>

void main(void)

{

 int i,ans; /*カウンターと合計の定義*/

 ans=0; /*合計初期化*/

 for(i=0;i<10;i++){ /*カウンターが0から9まで変わる。全部で10回繰り返す*/

  ans=ans+i+1; /*0から始まるので1を足す*/

 } /*ループの終わり*/

 printf("一から十の合計は%dです",ans); /*結果出力*/

}


 サンプルはこれか。

 ちなみに『/*』と『*/』の間がコメントでメモ書きだ。

 作ってみるか


#include <stdio.h>

#include "magic.h"

void main(void)

{

 int i; /*カウンター定義*/

 for(i=0;i<100;i++){ /*繰り返し百回*/

  fire_ball_test(); /*ファイヤーボール*/

 } /*ループ終わり*/

}



 本のサンプルを切り貼りして作ったが複雑だな。

 まず分からないのがカウンター定義。

 『int』ってなんだ。

 なになに、数には範囲と役割があります。

 『char』が一バイトで-128から+127までの整数をカバー。

 『int』が二バイトで-32768から+32767までの整数をカバー。

 『long』が四バイトで-2147483648から+2147483647までの整数をカバー。

 小数点が付く『float』や『double』なんてのもあるがこれは必要になった時に読もう。


 なるほどこの範囲に収まれば『int』で良いんだな。

 『char』を使わないのは変更する時127より大きくなる可能性はかなりあるからだって。

 読んだ所によれば定義ってのは自己紹介だ。

 私はこういうものですと言っている。

 つまり『int i;』は私は『i』という名前で、仕事は-32768から+32767までの整数をカバーできますとそう言っているんだな。

 定義は分かった。


 問題の繰り返しだ。

 『for(i=0;i<100;i++){』、自分でプログラムしても、これは全然分からない。

 いや『100』が書いてあるから百回繰り返しってのは分かるけど他はなんなの。


 『i=0』が初期設定。

 『i<100』が終了判定。

 『i++』が毎回する処理か。

 全然分からん。


 『i=0;i<100;i++』を細かく調べよう。

 記号の意味が書いてあるページをめくる。

 『=』は同じという意味ではない。

 なんだって。

 代入、要するに入れるという意味だと。

 なるほど。


 『i=0』は『i』に『0』を入れますって意味か。

 同じというのは『==』で現すのか。

 『i<100』は100より小さいとこれは普通だな。

 ループでもっとも気をつけなくていけないのは終了判定だと赤字で書いてある。

 そうなんだ。

 どういう事?

 何回ループするかでバグが起こる可能性がもっとも高いとな。

 例えば『i<100』と『i<=100』は同じではないだって。

 どういう事だ。

 『i<100』だと『99』以下。

 『i<=100』だと『100』以下を示すだって。

 難しい。

 もう嫌だ。

 『i=0;i<回数;i++』、これがその回数ループするって覚えた方が無難だな。


 『i++』は『i=i+1』と同じ意味だと。

 つまり1アップだな。


 とにかく動けばなんでもいいや。


 流石の百連弾にサルは敵わず三十を越えた辺りで投げる物がなくなった。

 そして、こんがり焼きあがった。

 ごちになります。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る