初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

文系でもわかるBASIC入門

17.落下ゲームを作ってみよう

何かを学ぶとき重要なことって何だと思いますか?
私はモチベーションだと思っています。
プログラミング言語を覚えようとする時、一番有効なのは作ることなんですが
初心者の内は「何を作ったらいいのか分からない」という人が多いんです。
目的が無いとモチベーションって下がり易いんですよね。
そこで今回はゲームを作って、より実践的なプログラミング技術を
学習していきたいと思います。

 

1. 落下ゲームとは、どんなゲーム?

深い谷間の中を、壁にぶつからないように落下していくゲームです。
有名なゲームでもなく、オリジナルがある訳でもないのですが、
BASIC言語が全盛だった頃、似たようなゲームが沢山ありました。

おっと、1つ注意です。
このゲームは30年ほど前の技術(?)を使っているので見栄えはしょぼいです。
ただ、ゲームプログラミングの基礎は、ある程度学習できると思います。
スマホのゲームアプリには、この仕組みよりも単純なものも
存在するくらいなので
見栄えの良いゲーム = 高度なプログラミングで作られている
という訳ではないんです。

 

2. 谷間の壁を作るための知識

今回のゲームはテキストで作ります。
グラフィック機能を使えば、少しは見栄えの良いものになるのですが
ちょっと難しくなってしまうので使わない方向で行きます。

次のプログラムを入力して下さい。

basic 落下ゲームを作る

実行すると処理速度が速すぎて、よく見えないですね。
ESCキーで実行を止めます。

行番号230 をコメント(または削除する)にして実行して下さい。
次のようになります。

basic テキストでゲームを作る

横向きですが、数値の0で作った山のようになってます。

この数値の0で谷間の壁を表現したいと思います。
なんか凄く嫌な感じがしてきましたか?
テキストでゲームを作るとはこういうことなんです。

さて、先程のままでは速すぎるのでWAIT処理を入れます。
つまりは無駄な処理をさせて、処理速度を落とすのです。

basic スクロールゲームを作る

行番号155 と 215 を追加して下さい。
行番号230 も復活させて実行してみましょう。
今度は目に見える速さになったと思います。

下のムービー再生ボタンを押してみて下さい。
※これはFlashを使って再現したムービーです

似たような速さになるように、行番号155 と 215 の数値を調整して下さい

速さの調整が必要になる理由ですが、このBASICでは
実行環境(パソコンのスペック)の違いにより速度に影響が出てしまうのです。
サンプルと同じ数値では、速すぎたり遅すぎる人がいると思います。

他の言語では、速度を調整する為の仕組みが用意されている場合が多いです。
なので、今回のような無駄な処理をさせて速度を調整する方法を
他の言語では絶対にやらないようにして下さい。

 

3. STRING$関数の使い方

先程、数値の0を使って山を作るのにFOR NEXT命令を使いました。

ここでSTRING$関数を使えばもっと簡単に実現できます。

basic string関数の使い方

STRING$関数は、任意の文字を任意の数だけ連結した文字列にすることができます。

そろそろ、谷間の壁らしきものを作りたいと思います。
次のプログラムを入力して下さい。

basic string spaceの使い方

新しくSPACE$関数が出てきました。
これは空白を任意の数だけ用意するものです。

実行してみましょう。

basic スクロールを利用して壁を作る

数値の0で作った道のようなものができました。
これを谷間の壁とします。

プログラムについてですが、
STRING$関数とSPACE$関数で指定している数には意味があります。

PRINT STRING$(I+20,"0")+SPACE$(30)+STRING$(29-I,"0")

20+30+29=79
このツールの画面幅が80桁なので、80を超えないようにトータルで79としています。
80を越えるとそこで改行してしまうからです。
数値を増やすとどうなるか試してみるといいでしょう。

 

次はプレイヤーが動かす落下物を作ります。
説明が長くなりましたので次回に続きます。