2019年06月10日

ActiveBasicとDXライブラリでゲームプログラミング!~第8回・追いかけゲームを作ってみよう!その3

n88_reon.gif
玲音:どうもこんにちは! B-Maga編集部の紅一点、玲音です!

n88_kaede.gif
楓:こんにちは! その玲音先輩に講座に引きずり込まれた楓です!
ところで先輩、編集部には妹弟子Aちゃんもいるし、私もいますから、紅一点というのはおかしいんじゃ……

n88_reon.gif
わーわー! 楓ちゃん、それを言ったらダメだよ!
それに、引きずり込んだなんて、人聞きが悪いってばっ。

n88_kaede.gif
えへへ……。それじゃ先輩、今回もいってみましょうか。

n88_reon.gif
う、うん、そうだね。
こほん、今回は、スピードの調節の方法、追いかけゲームでSgnをどうやって使ってるか、そして敵とぶつかった判定をやっていくよっ。

~dxWaitTimerでスピードを調節しよう!~

n88_reon.gif
さてさて、まずはスピードを調節する方法ですが、それにはdxWaitTimer関数を使いまーすっ。

n88_kaede.gif
dxWaitTimerですかー。

n88_reon.gif
うん。さっそく使ってみるよ。サブプロシージャGameProc()の中の、End Subの前当たりに、次の一行を入れてみて。

abdx1906-a01.JPG

abdx1906-p01.JPG
▲ 入れた後のGameProcはこうなります。

n88_reon.gif
入れてみたら、さっそく動かしてみてね。どうかな?

n88_kaede.gif
あっ、ちょうどいいスピードになっています! これぐらいなら遊べそうです!

n88_reon.gif
良かった良かった。さて、このdxWaitTimerは、指定された時間、プログラムの動きを止める関数なの。止める時間は、( )の中の引数で指定できるよ。ちなみに単位はミリ秒単位ね。

n88_kaede.gif
ミリ秒単位?

n88_reon.gif
うん。1/1000秒をミリ秒というんだよ。つまり、今回の場合だったら、一回の処理が終わるたびに、100ミリ秒……つまり、0.1秒の間、時間を止めてるわけ。

n88_kaede.gif
なるほどー。

~Sgn関数をどう使う?~
n88_reon.gif
さて、Sgn関数だけど、これは( )の中が0より大きければ+1、小さかったら-1を返す関数だってことは、前回話したよね。

n88_kaede.gif
はいっ。それで、これをどう使ってるんですか?

n88_reon.gif
その前に前提として、例えばX座標の場合、自分が敵の右にいれば左に、自分が敵の左にいれば右に移動しなきゃいけないことを踏まえておこう。これを言い換えれば、自分のXが敵のXより大きければ左に移動する、つまり-1をXに加える。逆に、自分のXが敵のより小さければ右に移動、つまり+1を加える、ってことになるよね。

n88_kaede.gif
はい、そうですねっ。

n88_reon.gif
では論より証拠。この図を見てねっ。

abdx1906-i01.JPG

n88_kaede.gif
おおーー。見事にSgnの値が、先輩の言っていた前提の通りになってますっ。これで、逃げるような動きにできたんですねっ。

n88_reon.gif
うん。ちなみに、式を逆にすると、敵が自分を追いかけるようになるよ。やってみてね。

n88_kaede.gif
はーいっ。

~完成っ~
n88_reon.gif
さて、最後は、自分が敵を捕まえたかどうかの判定だけど、これは簡単。敵のXとYが、自分のそれと同じになったかどうかをチェックすればOKだよ。

n88_kaede.gif
なるほどっ。それじゃ、さっそく入れてみましょうー。

n88_reon.gif
うん。だけどその前に、捕まえるのにどれだけの時間がかかったかをカウントする処理も入れちゃおう。
まず、プログラムの上の、Dim文がたくさん並んでいるところに、次の一行を追加して。

abdx1906-a02.JPG

abdx1906-p02.JPG
▲ 入れた後はこうなりました。

n88_reon.gif
それができたら、続いて、サブプロシージャGameProcの、さっき入れたdxWaitTimerのすぐ上に、次の一行を入れてね。

abdx1906-a03.JPG

abdx1906-p03.JPG
▲ 入れた後のGameProc

n88_reon.gif
やってることはいたって簡単。自分と敵の処理が終わるたびに、変数scに1を加算してるだけ。

n88_kaede.gif
ふむふむ。

n88_reon.gif
さて、ここまでできたら、いよいよ当たったかどうかの判定と、捕まえたときの処理だけだね。まず判定だけど、これはさっきも言った通り、自分のXとYが、敵のそれと同じかどうか調べるだけでOK。もし同じであれば、変数sceneに定数GAMEOVERを入れてゲームオーバーにうつす、と。
というわけだから、判定はこうなるよ。

abdx1906-a04.JPG

abdx1906-p04.JPG
▲ 入れた後のMoveMyCharaはこうなるよ


n88_reon.gif
そして最後に、ゲームオーバーの処理ね。まず、Dim文がたくさん並んでる最初のほうに、次のコードを書いてね。ここでは、ゲームオーバー画面用のハンドルを入れる変数を宣言してるよ。

abdx1906-a05.JPG

abdx1906-p05.JPG
▲ 入れた後

n88_reon.gif
さらに、サブプロシージャInitProcに、次のコードを書いてね。

abdx1906-a06.JPG

abdx1906-p06.JPG
▲ 入れた後のInitProcはこうなります

n88_kaede.gif
ゲームオーバーの画像を読み込み、ハンドルを、変数hndOverに格納してるんですね。

n88_reon.gif
うん、その通りだよ。さて、サブプロシージャOverProcの、Sub OverProc()とEnd Subの間に、次のコードを書いてね。

abdx1906-a07.JPG

abdx1906-p07.JPG
▲ 入れた後のOverProc

n88_reon.gif
ここでやってるのも簡単。ゲームオーバーの画面を出して、dxDrawFormatStringでかかった時間を表示させてるだけ。
これで完成だよ!

n88_kaede.gif
わーい、やったー!

n88_reon.gif
できたけど、ここで一つ課題を。今のプログラムでは、捕まえたらそのまま止まったままだけど、これを一定時間が過ぎたらタイトル画面にうつるようにしてみよう。それと、色々改良もしてみちゃおう!

n88_kaede.gif
はーい。頑張ります!

n88_reon.gif
それでは次回は、いよいよシューティングゲーム編にうつるよ。お楽しみに!



※次の更新は、『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!

2019年06月06日

パソレクのなく頃に・礼:3話

文 裏編/絵 伊地山基之 氏
※この記事は、裏編が習ったりしていた内容をもとに記述されています。
 現在の内容とは若干違っている部分があることをご了承くださいませ(平伏

paso1906-01.gif
paso1906-02.gif
paso1906-03.gif
=-=-=-=-=-=-=-=-=-=-

※次の更新は、『ActiveBasicとDXライブラリでゲームプログラミング!』の予定です。お楽しみに!
posted by 裏編 at 09:05| パソレクのなく頃に・礼 | 更新情報をチェックする

2019年06月03日

BASIC系言語三種一気に紹介!

皆さんは、どんな言語を使ってプログラミングしてますか?
C言語系? Java? それともHSP?
そういえば、昔はPascalというものもありましたよね。
裏編がとても気に入っているのはBASICです。
使いやすいし優しいし、何しろはじめてパソコンを持った時から使ってましたからね。
とはいえ、最初に使ったのは、日本語BASICの『G-BASIC』でしたが。
さて。BASICといえば、MicroSoftのVisual Basicと、あと、裏編の中ではフリーのActiveBasicが有名ですが、他にもフリーのBASICは色々とあります。
今回は、世に出回っている色々なフリーのBASIC系言語の中でも、特にいいなと思った三種を紹介しましょう。
皆さんがプログラミングをはじめる助けになれば幸いです。

~Tiny Basic

toku1905-01.JPG

Tiny Basicは、竹内照雄 氏によって開発されたBASIC言語です。
ヘルプによれば、『Quick Basicのサブセットとして作られた』そうです。Quick Basicの小型版というところでしょうか。
それだけあって、言語構成は、かつてのBASICとは異なり、Quick BasicやVisual Basicのような構造化されたものになっています。
また、ウィンドウ構成は、実行用ウィンドウとコーディング用ウィンドウから成り立っています。
このBASICの特徴としては、まず最近のBASICなのにRead文とData文が使えること。この二つの文は、まずData文に数値データ、文字列データを用意して、それをRead文が読む、というものです。

toku1905-02.JPG

Read文とData文によって、繰り返しを使って、簡単にデータを読み込むことができます。また、データをプログラム中に持たせることができるので、ファイルを読み込んで、それから……という手間が省けるのも長所の一つです。
その反面、自分で作る場合はいいのですが、他者のプログラムを入力するときは、数値の羅列をいちいち打ち込まなければならないのが辛いところです。その昔、マシン語を使うときには、Data文でマシン語のプログラムデータを用意しておくのですが、それを打ち込むのが……あああああ。
コホン、取り乱しました。さて、Read文とData文だけでなく、どのData文から読み始めるかを指定できるRestore文もまた用意されています。なお、その場合には行番号ではなく、ラベルで読み始める位置を指定するようになっています。
もう一つの特徴は、オブジェクト言語の要素を取り入れています。とはいえ、一般的なそれではなく、画面についてプロパティやメソッド、イベントを持たせる、というものです。
Tiny Basicのプロパティには、背景色のBackColor、線の太さを表すDrawWidthなどがあります。またメソッドについては、従来型の命令として扱うそうです。
これにより、画面の背景色などの設定が簡単になると思われます。
使い勝手としては、コーディング部分が普通のテキストエディタになっているのでとても使いやすいです。
言語としても、画面のプロパティにさえ気を付ければ、今のBASICに慣れた人なら問題ないのでは、と感じました。
もちろん、関数やサブプロシージャも用意されているので、見通しのいいプログラムを作るのも難しくありません。
あと、グラフィックを読み込み、任意の位置に表示する命令もあるので、ゲームを作るのも可能だと思います。
その一方、DLLを使う機能は用意されていないので、DLLを使うプログラムはできないのが弱点です。
このTiny Basicは、こちらからダウンロードできます。

~YB

toku1905-03.JPG

YBは、関根恵一 氏によって作られたBASIC系言語です。ヘルプによれば、『YBとは、Yamasemi Basicの略』とのこと。
さて、このYBの特徴は、その言語仕様です。
BASICが元ではありますが、『配列の添え字を囲むのに使うかっこは( )ではなく[ ]を使う』、『C言語のようにブロックを囲むのは{ }を使う』、『一行に複数の文をまとめて書ける』など、C言語の要素も取り入れているのが特徴です。
また、変数をオブジェクトのように使えるのも特徴の一つです。変数の内部に複数の変数?(プロパティ)を持たせたり、特定の処理をさせるメソッドを持たせたりすることができ、さらに継承することもできるのです。これは大きな特徴で、色々応用が利きそうな仕様だと思います。
また、文字列を計算式や命令として扱う機能がついているのも大きなポイントの一つだと思います。
その一方で、グラフィックを扱う機能がないことは、ちょっとマイナスポイントですね。
とはいえ、プログラミングの勉強をするための言語としては、十分な機能を持っていると思います。あと、データを処理するソフトを作るための言語としても、上記の特徴から向いているのではと思います。
このYBは、こちらからダウンロードできます。

~New X1

toku1905-04.JPG

その昔、X1というパソコンがありました。かのSHARPが開発したパソコンで、機能的にはなんとテレビも兼ねたディスプレイを持ち、プログラミングの合間にテレビを見る、といったことができる他、カセットレコーダーを内蔵していて(この当時、フロッピーディスクの他にカセットレコーダーが記録装置として使われていたのです!)、そのカセットレコーダーの読み込み速度が、他のものより早く、さらに巻き戻しや早送りをプログラムから制御できたりと、カセットレコーダーの使い方にも一日の長があるパソコンでした。
また、BASICのほうも、文字をグラフィックキャラクタとして扱えるPCG機能を持った、ゲームが特に作りやすかったBASICでした。
さて、このNew X1は、そのX1のBASICをベースに作られたBASICだそうです。
起動してみると、確かにウィンドウにどどんと、懐かしのBASICの画面が!
CopyRightに、HUDSONとSHARPの名前があるのは、多分、作者のこだわりでしょうw
このNew X1はただX1のBASICを再現しただけでなく、ゲームが作りやすく工夫されているところもあります。
例えば、画像ファイルをスプライトやPCGとして使うことができたり、wavファイルをBGMとして再生することができたり、などです。
やっぱり、素材を使えるというのはゲームを作るためのBASICとしては、大きなアドバンテージになると思います。
その一方、言語仕様は旧BASICのものなので、最近のプログラミングを学ぶには不向きと言えます。
ですが、先述した通り、ゲームを作るために使うものとしては、先に紹介した二つ以上に優れており、向いていると思います。
ぜひ、デモプログラムを実行してみてください。NewX1の持つポテンシャルに魅了されると思いますよ。

New X1は、こちらからダウンロードできます。

~最後に

ここまで三つのBASIC系言語を紹介してみましたが、どうでしたでしょうか?
いずれも特色があり、使いやすい言語だと感じました。
お勧めは、プログラミングの勉強ならTiny Basic、ゲーム作りならNew X1ってところでしょうか。C言語にも慣れたいなら、YBもいいかもしれません。
自分に合ったBASIC言語を選び、プログラミングを楽しみましょう!

※次の更新は、『パソレクのなく頃に・礼』の予定です。お楽しみに!
posted by 裏編 at 09:24| 特集 | 更新情報をチェックする