読者です 読者をやめる 読者になる 読者になる

いつクリはてブロ

いつになったらクリエイティブするの?

DXRubyで作ったシューティングゲームを交えて高校生向けプログラミング講座をしてきた話

Ruby Game Developing Advent Calendar 2016 5日目の記事です。
Ruby Game Developing Advent Calendar 2016 - Adventar

昨日はしのかろさんの「Ruby っぽいゲーム・プログラミング Tips」でした。
RGDAC2016 (4th day) Ruby っぽいゲーム・プログラミング Tips (初期値設定に tap メソッドを使う) · GitHub

やだ…tapメソッドめちゃくちゃ便利…
これ、今回の私の話とかなり関わるし、講座を実行する前に知りたかったです。
明日から使いたい知見ですね。

プログラミング講座 前提・経緯など

仕事と直接関わりは無いんですが、お知り合いの高校の先生のご協力で、現役高校生6人ほどにプログラミング講座みたいなことをしてきました。
その先生ご自身もご参加なさる上、別の先生ももう一人ご参加とのことで、多少ビビりながらお勉強っぽい内容にガン振りして内容を組み立てました。
それはそれとして、やはり私が講師ならゲームにしなきゃという思いと、高校生相手なこともあって、形だけでもゲームになっているものを用意しました。

また、環境導入の難しさ問題については、USB Rumix2-miniを利用して解決しました。
http://ruby.morphball.net/rumix/
これは、生徒さんたちが自宅でやろうと思ったときにすぐ始められるように(環境変数とかで困ったりしないように)という理由があります。
それと、自宅のPCは恐らく家族共有だと思うので、消そうと思ったらすぐに消せてPCに残らないのもいい感じです。

あおいたくさんの記事を見て、使うことを思いつきました。ドーモ!
http://blog.aotak.me/post/68564562978/introduction-to-dxruby

当日使ったコード

コードはこちらです。
https://github.com/vivit-jc/game_pg_lecture

方針として、Rubyの書き方を最初から教える感じではつまらないだろうし、時間も短いので、まずそれなりに動くサンプルを用意し、「これをこういう風に改造するのはソースコードのどこを変えればいいでしょう?」という形式でやることにしました。
さらっと最初だけ説明したら、後は講師は見回りだけして、基本は勝手にやってもらうスタイル。
DXRubyは本当に行数が少なくゲームっぽい挙動を書けるので、最初によく動くサンプルを提示するという強行突破な形式でもうまくやることができました。
分からないなりにあれこれ弄っては、面白い挙動になってギャハハという様子があちこちで見られ、結果的にはいい感じに退屈しない講座になったのではないかと思います。

stg.rb

f:id:vivit_jc:20161205220852j:plain
順番的にfall.rbやjump.rbを先に触れたのですが、弾の画像素材を使い回すためにバスケットボールを弾にしたSTGっぽいサンプルにしてみました。
何故STGかというと、三角関数を実際にどう使ってるかというのを見せたかったからです。
三角関数って実際どこで使うの?」というよくある疑問に答えられればという思いがあります。
STGなのでDXRubyのSpriteが活きる箇所なのですが、Spriteを使ってしまうと何をやってるか分からなくなってしまいそうだったので、今回は使いませんでした。
当たり判定は無いので実はゲームになってません。嘘タイトル記事だった。

map.rb

f:id:vivit_jc:20161205220900j:plain
RPGのフィールドマップっぽいものも用意してみました。
ソースコードのポイントとしてはファイル入出力とか配列とかだったんですが、講座内ではあまりその辺に触れなかったので次にやるときはやらなきゃですね。
テキストファイルを書き換えるとマップが変わるというだけでもかなり受けは良かったです。
RPG強し。

xy.rb
junp.rb
fall.rb

これらはDXRubyにおける表示の基本を例示するためのもので、ついでに自由落下の法則とか物理の勉強っぽい要素を入れたんですが、あまり受けは良くなかったです(そりゃそうだ

circle.rb

stg.rbの前フリとして、三角関数とXY座標の関係みたいな話を入れました。
また、X座標だけsin関数を使った場合の挙動を示して、STGの弾の動きの布石にしました。

omikuji.rb

画像でなく文字の表示と、乱数の発生の例示です。
本当は乱数を使った数学の解法であるモンテカルロ法を書いてみよう! とやりたかったのですが、ちょっと難しかったみたいでした…。

アンケートの結果とか

f:id:vivit_jc:20161205221151p:plain
わあ、僕のトゥイッターみたいだあ

やってみて思ったこと

僕自身が中学高校の頃、プログラミングをやりたいのに教えてくれる人がいなくて、独学でやってはいたもののやはり厳しさがあったんです。
もしそういう高校生がいるのなら、何とかしてあげたいというのがそもそものきっかけでした。
今回やった感じだと、楽しんでもらいつつ、一番難しい最初の一歩を踏み出せてもらえたかなあと思います。

次回やるとしたら、もうちょっとゲームに寄せて、かつ今回やらなかったプログラミングっぽいことに触れていけたらと思います。
まだ次回があるか分からないですが…。


明日はうのはな透さんの「パズルっぽいゲーム制作のときのなんかの話」です。
楽しみです!