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

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

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

文系でもわかるBASIC入門

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

 

何かを学ぶとき重要なことって何だと思いますか?
私はモチベーションだと思っています。
プログラミング言語を覚えたいとき、一番有効なのは作ることです。
でも、初めは「何を作ったらいいのか分からない」という人が多いんです。

目的が無いとモチベーションって下がり易いんですよね。
そこで今回はゲームを作って、より実践的なプログラミング技術を
学習していきたいと思います。

 

 

落下ゲームを作ろう

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

おっと、1つ注意です。
このゲームは30年ほど前の技術(?)を使っているのでしょぼいです。
ただ、ゲームプログラミングの基礎はそれなりに学習できると思います。

スマホのゲームアプリには、この仕組みよりも単純なものもありますよ。
見栄えの良いゲーム = 高度なプログラミングで作られている
という訳ではないんです。

 

 

谷間の壁を表現するために

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

まず、次のプログラムを入力してください。

0で波を作る

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

 

行番号230 をコメントにして実行してください。
次のようになります。

0が山のように表示される

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

 

この数値の0で谷間の壁を表現したいと思います。
なんか凄く嫌な感じがしてきましたか?
テキストでゲームを作るとはこういうことなんです。
さて、このままでは速すぎるのでWAIT処理を入れます。
つまり、無駄な処理をさせて速度を落とします。

wait処理を入れる

行番号155 と 215 を追加してください。
行番号230 も復活させて実行してみましょう。
今度は遅すぎる感じになりました。

 

速度を調整しましょう。下図を参考に
行番号155 と 215 のループ回数を減らして速度を調整してください

 

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

他の言語では、速度を調整する仕組みが用意されている場合が多いです。
ですから、今回のような無駄なループをさせて速度を調整する方法を
他の言語では絶対にしないでください

 

 

STRING$を使おう

先ほど、0の山を作るのにFOR NEXT命令を使いました。

ここでSTRING$関数を使えばもっと簡単に実現できます。
STRING$は、任意の文字を任意の数だけ連結することができます。

string$を使う

かなりスッキリしました。
それから速度調整用のループは適当な数に直しましょう。

 

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

左右に山を作る

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

 

実行してみましょう。

谷間らしき壁

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

 

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

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

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

 

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