プログラミングに数学を感じるのは(1)

プログラミングでゲームづくりをしてみてよく思うことは、数学と近いということです。

まず、数学をよく使います。でもこれはプログラミングだけではないでしょう。何か物づくりをしようと思ったら、図形や曲線、動きの距離や速さや加速度など、数字が必要になってきます。

数学はどちらかというと、教科の中では嫌われ者のイメージです。積み重ねの学問なので、ひとたびわからなくなるとその先からはもうついていけなくなって、一旦苦手になると嫌いにならざるを得ないですし、難しいと言えば難しいのかも知れない。

だから、よく言われるのが、「数学なんて将来役に立つのかよ。三平方の定理、三角関数、そんなもの社会に出てから使うか?」という将来の自分に数学不要説。

こういう言われ方をするのは、数学が顕著だと思います。「それ将来必要?使う?」あまり他の教科では耳にしません。

だけど、考えてみたら、体育や部活の、野球にしたってサッカーにしたって、実際に将来それを使うなんてプロの競技者くらいなものです(体力強化や娯楽でという意味は別として)。でもそれを無意味だと言う人はいない。やっていて楽しいからです。

だけど数学は楽しくない。嫌い。だから「こんなものやって何になる!」と言いたくなる。(気持ちは分かる)

けれど、いつか新聞記事で、社会に出てから役にたった教科は何かというアンケートで「数学」が一番になっていました。意外でしたがやっぱり、と思いました。世の中のもので数が関係ないものはないからです。

ゲームをつくるにも数学はたくさん出てくるわけで、そこで、「数学はゲームのために必要なんだよ!」といつか先生が言われた言葉ですが、私は溜飲の下がる思いが致しました。

「そうなんだよ!みんな数学が嫌いでそんなもの要らないって言うけど、みんなの大好きなゲームは、数学がなかったら作れないんだよ!ゲームが楽しいのも数学のおかげだ!もう要らないなんて言わせない!」

(元々は数学は物理のためにあるというのが正しいです。数学は物理学の計算部門が独立したものだからです)

AIマンドラゴラ

AIに挑戦せよという授業の中で作ったものです。

前の、45.ブッタ様大噴火47.おならして帰る を応用してシューティングゲームにして、ダメージによって敵の画像・攻撃・動きが変わるようにしました。

マンドラゴラのつもりで描いた敵が、にんじんに見えてしまうのは、頭の葉っぱが短すぎたからでしょう。

(授業での発表のとき、デモ用に当たり判定を外してゲームオーバーにならないようにしておきました。発表が終わったので元に戻したら、先生が「ああ、これマンドラゴラか〜」と言われて再度プレイされて、一瞬でやられてゲームオーバーになってしまい可笑しかったです)

工夫やこだわり

・ボスのビームは関数 function bossbeam(w, h, b)を作って、変化させた

・クリアのときの大爆発

ソースコード

おならして帰る

タイトルですが、これは、テキストの中に課題として 

//プレイヤーの位置まで迫って、(おならして)帰って左右移動

とあったので、そのとおりに作ったものです。

娘にやってもらったら、「なにこれーやだー最低ー!」と引いていました。。。

【ポイント】

・ifの条件分岐は、上から判定していくので、順番を考える

・modeパラメーターを設定して、条件を満たしたときに一度だけ発動するようにする

・tl.clearとtl.unloopの違いを理解して使い分ける

 (1)タイムラインを止める(別の動きにするために今のtlの動きを即時止める)
 boss.tl.clear();
 (2)タイムラインのループのオン
 boss.tl.loop();
 (3)タイムラインのループオフ(tlのloopを止める)
 boss.tl.unloop();
ソースコード