2019年12月25日

みくみく音楽館:クリスマス特集

 メリークリスマス! 
 さて、今月は12月ということで、今回のみくみく音楽館は、クリスマスソングを二曲お届けするクリスマス特集でいこうと思います。
 みんなご存じの曲や、オリジナルソングなど、素敵なクリスマスソングをお届けしていきますよ。
 どうぞよろしく!

~みっくりすます【作詞・作曲・編曲:doriko】

しんぐるべ~る しんぐるべ~る
「一人きり」
そんなあなたに 愛を送るよ
はつね~ はつね~
♪みっくりすます♪
素敵な夜を お取り寄せ
Merry X'mas 君に届け
冷たい空をこえて
私はここにいるよ 早く帰ってきてね
冷えたからだで 君がかえってきたら
私が「ぴったりぎゅっと」 あたためてあげる
そして いっしょに「なべ」でもつつこうよ
ネギをたくさん入れて~
しんぐるべ~る しんぐるべ~る
「一人きり」
でもね 私が君に歌うよ
はつね~ はつね~
♪みっくりすます♪
今日の お鍋は・・・
き~り~た~ん~ぽ~
さみしくひとり 君が泣いてる時には
私が「ぴったりぎゅっと」 なぐさめてあげる
そいで やっぱり「なべ」でもつつこうよ
しらたきはいれないで~
にゃ~
しんぐるべ~る しんぐるべ~る
「一人きり」
でもね 私が君に歌うよ
はつね~ はつね~
♪みっくりすます♪
今日の お鍋は・・・
き~り~た~ん・・・
しんぐるべ~る しんぐるべ~る
「一人きり」
でもね 私は「君が大好き」
はつね~ はつね~
♪みっくりすます♪
明日の鍋も・・・
き~り~た~ん・・・
き~り~た~ん~ぽ~
※一緒に雪を眺めた
 一緒のこたつで眠った
 それはささやかな幸せの形
 悲しい想いは全て
 雪と一緒に溶けてゆけ
 やさしさだけ残して


 ジングルベルをもとにした歌です。とっても愉快で、らぶらぶで、一人きりのクリスマスの寂しさなんて吹き飛んでしまいそうな歌です。 これだけで、もうつかみはOK、って感じ? では二曲目です!

~初音ミクが「きよしこの夜~ジングルベル」を歌います【投稿者:JEM777 氏】


 クリスマスの定番ソング、きよしこの夜とジングルベルのメドレーです。
 やっぱり、クリスマスといえばこれですよね。どの曲も、とてもきれいでした。

~最後に

 クリスマスソング三曲お届けしましたが、どうでしたか?
 クリスマスを一人で過ごす人も、大切な人と過ごす人も、これを聞いて心を温めてくれたらうれしいです。

 それでは、メリークリスマス!(^_^

※次の更新は、特集です。お楽しみに!(年末年始があるので、新年の更新は、1月中旬からとなります。ご了承ください。

posted by 裏編 at 09:39| Comment(0) | PCメディア情報 | 更新情報をチェックする

2019年12月20日

フリーソフトでゲームを作ろう!

 いつか、以前にも話しましたが、一昔前は、ゲーム作りといえば、BASICなどのプログラミング言語でプログラミングするのが当たり前でした。
 それが最近では、ツクールなどの作成ソフトで楽々開発できるようになりました。そして今では、なんと、有志の方の開発したフリーソフトを使って、無料でゲーム作りを楽しむことができるようになりました。いやはや。時の流れは素晴らしいですよね。
 そこで今月は、そんな有志の方々が作られた、すばらしいフリーのゲーム開発ソフトを紹介していこうと思います。

【3DダンジョンRPGコンストラクションセット for WIN98】

 まずはRPGですが、2Dのドラクエタイプのものは、RPGツクールというすばらしいものがありますし、フリーソフトでも、WOLFRPGエディタという使いやすいものがあります。ここでは一風変わって、Wizardryや女神転生シリーズのような3DダンジョンRPGの開発ツールを紹介します。
 『3DダンジョンRPGコンストラクションセット for WIN98(以後3DRPGコンストラクション)』は、まさにその名前の通り、その3DダンジョンRPGを作るためのソフトです。
 設定できる魔法系統は、魔術師系と僧侶系の二系統とシンプルですが、それでも種族や職業、武器や魔法など、RPGに必要なことは全て設定でき、また、簡単な設定で、自動的にシナリオを作ってくれる機能まであって、とても使いやすいソフトです。
 グラフィックが線画だけなのが、ちょっと残念ですが、それでも3DダンジョンRPGを作りたい人には、おすすめできる一本です。

 この以後3DRPGコンストラクションは、ヒーロー氏の開発されたソフトで、こちらからダウンロードすることができます。

et-1912-01.JPG

et-1912-02.JPG

et-1912-03.JPG

et-1912-04.JPG

et-1912-05.JPG

【シューティングゲームビルダー】

 さて、次はシューティングゲームです。このシューティングゲームビルダーは、ツクール感覚でシューティングゲームが作れるありがたいソフトです。
 スクリプトを使うなど、若干プログラミングの知識が必要なところがありますが、チュートリアルがありますし、素材も自作のものが使えたり、さらに3Dモデルも使えるなど、かなり高機能かつ使いやすいです。
 当たり判定が数値で入力しなければいけないなど、やや面倒ですが、それを除けば、とてもおススメな開発ソフトですよ。
 このシューティングゲームビルダーは、SB氏の開発されたソフトです。ダウンロードはこちらから!

et-1912-06.JPG

et-1912-07.JPG

et-1912-08.JPG

【シミュレーションRPGエディター】

 さて、最後はシミュレーションRPGです。このシミュレーションRPGエディターは、キャラクター、イベント、マップと基本的な要素を設定できることはもちろん、システムもある程度変える(属性やメニュー、ダメージ計算など)ことができるなど、やや高機能な開発ツールです。
 データの設定や、マップの作成なども、ツクールと同じ感覚でできるため、気楽に簡単にすることができます。
 素材も、自分で作ったものや手に入れたものを簡単に活用することができるなど、自由度が高くなっています。
 そのシミュレーションRPGエディタは、アントン氏の作品で、こちらからダウンロードすることができます。

et-1912-09.JPG

et-1912-10.JPG

【最後に】

 ここまで、三本の開発ソフトを紹介しましたが、どうでしたか? この他にも、色々な開発ソフトがあります。
 皆さんも、それらのソフトを活用し、自分だけのゲームを作ってみてはどうでしょうか?
 きっと、ゲームをプレイするだけでは見つからない、別の楽しさが見えるかもしれませんよ!

==========
次の更新は、『みくみく音楽館:クリスマス特集』の予定です。お楽しみに!

posted by 裏編 at 12:21| Comment(0) | その他のゲーム情報 | 更新情報をチェックする

2019年12月16日

師匠のVB.NETどたばた塾~第4回

sisyo.gif
師匠T:さぁ、今回もVB.NETどたばた塾、張り切っていくとしようぞ! さっそく行くぞ!

deshi.gif
弟子D:師匠、どうしてそんなに急いで講座に入ろうとしてるんですか?

sisyo.gif
何事もないぞ弟子よ! 何も見てないし見えない! さぁ、確か今回は、配列変数についてであったな!

deshi.gif
何かに目をそらしておられるような……あ(建物の外を歩くカップルを見つける)

sisyo.gif
クリスマスに浮かれているカップルなぞ、わしの目には映らないし見てないぞ! さぁ、さっそく始めるとしようぞ!

deshi.gif
はぁ……。

【 こんなときは!? 】

sisyo.gif
さて。数人の成績を合計して、その平均点を出したいとき、おぬしならどうする?

deshi.gif
え? うーん。その人数分の変数を用意して格納し、それを計算……とか。こんな風に。

vb1912-01.JPG

sisyo.gif
ほほう。では、例えば1クラス40人分の平均を出したりしたい場合はどうする?

deshi.gif
……ぐわーーー!! 無理です、気力が持ちません!

sisyo.gif
それだけではないぞ。〇人目の点数を入力した点数に修正するという場合もどうする? IFやSELECT CASEで、対応した変数を修正する、という形にしてもかなりの労力がかかるであろう。

deshi.gif
はぁはぁ……そ、そうですね。はっ! こんな時に、配列変数が役に立つのでは?

sisyo.gif
うむ、その通りじゃ。さすが我が弟子、配列変数についての学習は怠りないと見えるな。

deshi.gif
えーと、配列変数ってなんでしたっけ?

sisyo.gif
はあっ!!(飛び蹴り)

deshi.gif
うわあっ。

sisyo.gif
では改めて、配列変数について復習しておくとしようぞ。配列変数とは、一つの変数をいくつもの部屋に区切って、それぞれごとに別々の値を入れられるようにしたものじゃ。

deshi.gif
あ、思い出してきたかも。それぞれの部屋は、添え字という数値で識別するんでしたっけ。

vb1912-p01.gif

sisyo.gif
その通りじゃ。この添え字は、いわば部屋番号のようなものと考えるがよかろう。そして一番のポイントとしては、この添え字には変数も使える、ということじゃ。
例えば、2が入っている変数iを添え字に使った場合、2番の値を見たりすることができる。もちろん、この変数iが1増えて3になった場合は、3番の値を見たり操作したりできるのだ。

deshi.gif
なるほど。ということは、For~Nextなどの繰り返しと組み合わせることで、大量のデータを処理することができそうですね!

sisyo.gif
そういうことじゃ。では次からは、その配列変数の使い方について説明していくことにしようぞ。

【 全てはDimから始まるのじゃ! 】

sisyo.gif
まず、変数と同じように、配列変数を使うにはDim文で定義する必要がある。書き方はこうじゃ。

----------
Dim 配列変数名(添え字の最大) As 変数の型

例:
Dim a(5) As Integer
----------

sisyo.gif
ここで注意するべきことが一つある。わかるかな?

deshi.gif
??

sisyo.gif
それは、配列の添え字は0からスタートするので、実際には配列の部屋数は添え字の最大よりも1多くなる、ということじゃ。例の場合だと、実際には0~5までの6つの部屋が作られるのだ。

deshi.gif
なるほど。

sisyo.gif
なお、Javaでは配列の宣言の後に、配列の確保をする必要があったが、VB.NETではそんなことはない。上のDim文だけで全てOKじゃ。

deshi.gif
ふむふむ。

sisyo.gif
それと、昔のBASICとは違い、VB.NETのDim文には、書き方のバリエーションとして、配列を宣言すると同時に、初期値を入れてしまう書き方がある。その場合は、このように書くのじゃ。

----------
Dim 配列変数名() As 変数の型 = {値1, 値2……}

例:
Dim b() As Integer = {5, 2, 4}
----------

sisyo.gif
このように書いてやると、VB.NETは自動的に、値の数と同じだけの部屋を持つ配列変数を作り、この初期値を入れてくるのじゃ。便利じゃろう?

deshi.gif
はいっ!

【 配列を使え! 】

sisyo.gif
さて。配列変数の使い方は、いたって簡単。このように書けばいいだけじゃ。

----------
配列変数名(添え字)

例:
a(3)
----------

sisyo.gif
この添え字の部分には変数も使えるというのは先ほど話した通りじゃ。ゆえに、先ほどお主が言った通り、For~Nextと組み合わせて、こんな使い方もできるのだ。

vb1912-02.JPG

sisyo.gif
このように、多くのデータを、For~Nextなどの繰り返しと組み合わせることで、簡単に処理できるのが配列変数の強みじゃ。

deshi.gif
ですね!

sisyo.gif
さて。昔のBASICとは違い、VB.NETの配列には、色々と役立つ機能が内臓されておる。まずはCloneからじゃ。

deshi.gif
Clone?

sisyo.gif
これは、ある配列をコピーして、全く別の配列を作るというものじゃ。コピーしてできた配列は、元の配列とは全く別の配列なので、コピーしてできた配列をいじっても、元の配列には何の影響もないのがポイントじゃ。
なお、Cloneはこのように使う。

----------
新しい配列変数名 = 元となる配列変数名.Clone

例:
b = a.Clone
----------

sisyo.gif
これだけで済むのじゃ。簡単じゃろう?

deshi.gif
はいっ。

sisyo.gif
次はRedimじゃ。これは配列の部屋数を自由自在を変えてしまう、というものじゃ。Redimはこのように書く。

----------
Redim 配列変数名(添え字の新しい最大値)

例:
Redim c(5)
----------

deshi.gif
あれ? 師匠。やってみたんですけど、Redimを使ったら、配列の中身が0になっちゃったんですが……。

vb1912-03.JPG

vb1912-r01.JPG

sisyo.gif
おぉ、それを忘れておったの。普通、Redimを使うと、その中身はクリアされてしまう。それを防ぐには、RedimのあとにPreserveを付ける必要があるのじゃ。

----------
Redim Preserve 配列変数名(添え字の新しい最大値)
----------

sisyo.gif
それでやってみよ。今度はちゃんと値が残るはずじゃ。

deshi.gif
おおっ、ほんとだ!

vb1912-r02.JPG

sisyo.gif
次はLengthとGetLengthじゃ。これを使うと、その配列の部屋の数を取得することができる。2次元以上の多次元配列の場合、Lengthを使うと、全ての部屋数を合計して返してしまう。特定の次元の部屋数を使うには、Lengthではなく、GetLengthを使う必要がある……ってどうした?

deshi.gif
あ、あのー、師匠。多次元配列とはなんぞや。

sisyo.gif
おっと、それを忘れておったな。多次元配列とは、複数の添え字を持つ配列のことじゃ。というより、1次元配列は一棟の建物、2次元配列は数階建ての建物、3次元配列は数階建ての建物が複数集まった団地……と例えればイメージが伝わるかな?

vb1912-p02.jpg

deshi.gif
あー、わかる気がします。つまり、2次元配列の場合、Lengthはその建物(配列)の全ての部屋数を返して、GetLengthは指定した階の部屋の数を返す、というわけですね。

sisyo.gif
うむ、そんな感じじゃ。さて、話を戻すぞ。このLengthとGetLengthはそれぞれ、次のように使う。

----------
配列変数名.Length

例:
d.Length →配列変数dの、全ての部屋数を取得する

配列変数名(次元数[, 次元数……]).GetLength
例:
e(2).GetLength →配列変数eの、2次元目(2階)の全ての部屋数を取得する
----------

sisyo.gif
なお、GetLengthのところの[ ]は省略してよいことを表しているぞ。

deshi.gif
ふむふむ。

sisyo.gif
そして最後に、IndexOfとLastIndexOfについて教えておくとしよう。これは、指定した値が入っている部屋を調べて教えてくれる、という代物じゃ。これはこのように使う。

----------
Array.IndexOf(調べる配列変数, 探す値)
Array.LastIndexOf(調べる配列変数, 探す値)

例:
Array.IndexOf(f, "ABC")
→配列変数fの部屋の中から、"ABC"という文字列が格納されている部屋を探し、その添え字を取得する
----------

deshi.gif
IndexOfとLastIndexOfとはどう違うのですか?

sisyo.gif
うむ。IndexOfは配列の先頭から探す。LastIndexOfはその逆(つまり配列の最後)から探すのだ。

deshi.gif
なるほど、わかりました!

sisyo.gif
では、今月はここまで。次回は、VB.NETにおけるクラスについて説明していくぞ。Java道場を読んでおくことを勧める。
ではさらばじゃ! いい年を過ごすのじゃぞ!!

==========
※次の更新は、『フリーソフトでゲームを作ろう!』の予定です。お楽しみに!

posted by 裏編 at 15:08| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする

2019年12月12日

師匠TのチャレンジARSゲーム!~第拾七回:『サザンクロス』 【バンダイ】(その4)

うむ、師匠Tである!
さて、いよいよサザンクロスの攻略も佳境! 今回はラストまで一気に駆け抜けていくぞ!
終盤だけあって、謎もますます難しくなっていくぞ。腕がなるわい!

ではいくぞ!

どんなゲームも、完全制覇じゃ!

【 本編じゃ! 】

ars1912-01.JPG
むむ、ここは一体どこじゃ!? とりあえず、周りの宇宙人に話を聞いてみることにしよう。

ars1912-02.JPG
ここが出口らしいがちょっと待て。その前に何か聞いておいたほうがいいかもしれぬな。

ars1912-03.JPG
虹の橋がかかっておるが、ちょっとやそっとでは先には進めぬぞ。頭をひねってみよ!

ars1912-04.JPG
そしてやってきた! ここが目的地の会議場じゃ!

ars1912-05.JPG
扉があるが、この扉も曲者。ちょっとやそっとでは開けることはできぬ。
まずは持ち物を確認してみよ。

ars1912-06.JPG
フェニックスじゃ! とりあえず……こんにちは。

ars1912-07.JPG
カプセルを手に入れたと思いきや、いきなりそのカプセルを奪われてしもうた!
うぬぬ……犯人め、許せぬ!

ars1912-08.JPG
部屋の一つにやってきたぞ。椅子があるとくれば……。これは定番のトリックじゃな。

ars1912-09.JPG
出口じゃが、このドアも一筋縄ではいかぬ。先の部屋で手に入れたアレを使う必要があるぞ。

ars1912-10.JPG
エレベータじゃな。さすが未来のエレベータだけあって、ボタンを押してOK、とはいかぬようじゃ。

ars1912-11.JPG
ars1912-12.JPG
先にネタバレしておくと、こやつがカプセルを奪った犯人じゃ!
しかし、こいつも簡単にカプセルを返してはくれぬ。どうしたらいいじゃろうか?

ars1912-13.JPG
トレーニングルームみたいじゃ。頑張っておるのう。

ars1912-14.JPG
門番がいるのう。ここを通るのも簡単にはいかぬぞ。
まずは、この門番の話を聞いてみよう。

ars1912-15.JPG
変わったリンゴがあるのう。じゃが、このリンゴの木に惑わされてはならぬぞ!

ars1912-16.JPG
受付カウンターまでやってきた。ここですることと言えば……わかるであろう。
外国旅行に行ったときと同じじゃよ。

ars1912-17.JPG
ars1912-18.JPG
ars1912-19.JPG
さぁ、ここがいよいよ正念場! この宇宙港の中を歩き回って、離陸に必要な『フライトナンバー』を見つけるのじゃ!!

ars1912-20.JPG
フライトナンバーを見つけたら、この宇宙船で、いざ出発じゃ!

ars1912-21.JPG
さて、出発じゃが……。必要なアイテムはそろっておるか? フライトナンバーは知っておるか?
特にフライトナンバーの探し忘れ、覚え忘れには注意!
間違っているナンバーを入れてしまうと、そこでゲームオーバーじゃぞ!!

ars1912-22.JPG
ぎゃー! ブラックホールじゃ!!
さて、この後どうなるかは……

ここから先は君の目で確かめるのじゃ!!
健闘を祈っておるぞ!

※この記事に使われている画像の二次使用を禁じます。
※このゲームの著作権は、バンダイ(現セガバンダイ)にあります

==========
※次の更新は、新連載『師匠のVB.NETどたばた塾』の予定です。お楽しみに!
posted by 裏編 at 09:23| Comment(0) | チャレンジARS | 更新情報をチェックする

2019年12月09日

ActiveBasicとDXライブラリでゲームプログラミング!~第14回・シューティングゲームを作ろう!その6

n88_reon.gif
玲音:どうもこんにちは! この講座も、いよいよ今回で最終回! 頑張っていきましょう!

n88_kaede.gif
楓:こんにちは、楓です! だけど、先輩に引きずり込まれて始まったこの講座もいよいよ最後だと思うとさびしいですよね。


n88_reon.gif
だから、引きずり込んだんじゃないってー。さてさて、今回はタイトルやゲームオーバー画面、それにBGMや効果音を入れて、ゲームを完成させていくよ! よろしくね!

~タイトルとゲームオーバー画面を入れよう!

n88_reon.gif
さて。それでは、まずはタイトル画面の処理から入れて行こう! さっそく問題。タイトル画面の処理かどこに書くかな?

n88_kaede.gif
はーい! Titleサブプロシージャです!

n88_reon.gif
はい、正解。さて、ここに書いていくわけだけど、書いていくのは次の処理です。
・タイトル画面を表示する
・スペースキーが押されたら、変数funcにFUNC_PLAYINITを入れて、サブプロシージャPlayInitに処理をうつす

n88_kaede.gif
ふむふむ。

n88_reon.gif
それじゃ、まずはタイトル画像をハンドルに読み込む……前に、Case FUNC_TITLEの下の
func = FUNC_PLAYINIT
を消しておこう。そうしないと、すぐにサブプロシージャPlayInitに進んじゃうからね。

n88_kaede.gif
なるほど!

n88_reon.gif
さて、それが済んだところで、いよいよ処理を作っていこうか。まずはタイトルのハンドル用の変数の定義ね。
''※このほかにも必要な変数があればこの下に追加してください
の行と、
''メイン関数
の行との間に、次の一行を入れてね。

abdx1912-l01.JPG

n88_reon.gif
続いて、MaterialLoadサブプロシージャに、次の一行を追加。

abdx1912-l02.JPG

abdx1912-p01.JPG
▲追加した後のMaterialLoad(赤枠が追加した部分)

n88_reon.gif
そして、Titleサブプロシージャに、次のコードを書いてね。

abdx1912-l03.JPG

n88_reon.gif
プログラムの内容は、さっき話した通り。DX_PAD_INPUT_Mは、スペースキーを表してるよ。

n88_kaede.gif
ふむふむ。

n88_reon.gif
それじゃ続いて、ゲームオーバー処理も作っていこう。まずは、ゲームオーバー画面のハンドル用変数の定義からね。これは、
''※このほかにも必要な変数があればこの下に追加してください
の行と、
''メイン関数
の行との間に書いてね。

abdx1912-l04.JPG

n88_reon.gif
そして、ゲームオーバー画面を読み込む処理。こちらは、MaterialLoadサブプロシージャに。

abdx1912-l05.JPG

abdx1912-p02.JPG
▲ 追加後のMaterialLoadサブプロシージャ(赤枠が追加した部分

n88_reon.gif
そして、肝心のゲームオーバーの処理。これは、GameOverサブプロシージャに書いてね。

abdx1912-l06.JPG

n88_reon.gif
コードはほとんど、タイトル画面と同じ。違うのは、表示させてるのがゲームオーバー画面ということと、変数funcにFUNC_TITLEを入れてるところだけかな。

n88_kaede.gif
なるほどっ。

n88_reon.gif
ついでだから、スコアの処理も入れちゃおう! まず、
''※このほかにも必要な変数があればこの下に追加してください
の行と、
''メイン関数
の行との間に、次の一行を書いてね。

abdx1912-l07.JPG

n88_reon.gif
そして、PlayInitサブプロシージャに次の一行を追加。

abdx1912-l08.JPG

abdx1912-p03.JPG
▲ 追加した後のPlayInitサブプロシージャ(赤枠が追加した部分

n88_reon.gif
続いて、AtariJikiTamaToTekiサブプロシージャにこれを追加。
これは、自機の弾が敵に当たった時に、スコアを加算する処理だよ。

abdx1912-l09.JPG

abdx1912-p04.JPG
▲ 追加した後のAtariJikiTamaToTekiサブプロシージャ
(赤枠が追加した部分)

n88_reon.gif
そして最後に、スコアを表示する処理を作ろう!
処理はサブプロシージャにして、タイトル画面、実際のゲーム中、そしてゲームオーバーのどこからでも見れるようにするよ。

abdx1912-l09b.JPG

n88_reon.gif
そして、このサブプロシージャを呼び出すための次のコードを、Title、GameMain、GameOverの各プロシージャに追加するよ。

abdx1912-l10.JPG

abdx1912-p05.JPG
▲ 追加した後のTitleサブプロシージャ
(赤枠が追加した部分)

abdx1912-p06.JPG
▲ 追加した後のGameMainサブプロシージャ
(赤枠が追加した部分)

abdx1912-p07.JPG
▲追加した後のGameOverサブプロシージャ
(赤枠が追加した部分)

n88_reon.gif
これで出来上がりだよ!

n88_kaede.gif
おー! スコアが表示されてます!

~BGMと効果音を入れよう!

n88_reon.gif
さて。次はBGMと効果音だけど……素材の著作権の問題で、素材のファイルは掲載しません。適当なBGMや効果音を、インターネットからダウンロードしてきて用意してね。
ここでは、BGMのファイル名を、「bgm.mp3」「shot.mp3」「bomb.mp3」として進めていくよ。それぞれ、BGM、ショットの発射音、そして敵の爆発音の素材だよ。

n88_kaede.gif
はーい

n88_reon.gif
まず、DXライブラリでは、画像と同じように、ロードして、そのハンドルを使って再生したりします。
ということで、まず音声ファイルのハンドルを入れる変数の定義からね。
''※このほかにも必要な変数があればこの下に追加してください
の行と、
''メイン関数
の行との間に、次のコードを書いてね。

abdx1912-l11.JPG

n88_reon.gif
次に読み込む処理。MaterialLoadサブプロシージャに追加してね。
音声ファイルを読み込むには、dxLoadSoundMem関数を使うんだよ。

abdx1912-l12.JPG

abdx1912-p08.JPG
▲ 追加した後のMaterialLoadサブプロシージャ
(赤枠が追加した部分)

n88_reon.gif
続いて、BGMを演奏するサブプロシージャ、BGMの演奏を終了するサブプロシージャ、そして効果音を鳴らすサブプロシージャを作ろう。サブプロシージャを呼び出すようにすれば、プログラムがすっきりするからね。

abdx1912-l13.JPG
▲ BGMを演奏するBGMPlayサブプロシージャ、BGMの演奏を終了するBGMStopサブプロシージャ、効果音を鳴らすSEPlayサブプロシージャ

n88_reon.gif
さて、ここで新しくdxPlaySoundMem関数と、dxStopSoundMem関数が出てきたね。これについても説明しちゃおうか。
dxPlaySoundMemは、指定したハンドルの音声ファイルを再生する関数、dxStopSoundMemは、指定したハンドルの音声ファイルの再生を止める関数だよ。それぞれ、このように書くんだ。

dxPlaySoundMem(ハンドルの変数, 再生モード)
dxStopSoundMem(ハンドルの変数)

n88_kaede.gif
この再生モードには、何を入れたらいいんですか?

n88_reon.gif
うん。ここに入れるのは、DX_PLAYTYPE_BACKとDX_PLAYTYPE_LOOPの二つ。もうひとつ、DX_PLAYTYPE_NORMALというのもあるけど、これを使うと再生するたびに処理が止まっちゃうから、あまり使うことはないかな。

n88_reon.gif
さて。前者を入れると、普通に一回だけ再生、後者を入れると、何度でもループ再生するよ。その場合、止めるのはdxStopSoundMem関数を使うの。

n88_kaede.gif
なるほどー。

n88_reon.gif
さて、話を戻すね。サブプロシージャができたら、PlayInitサブプロシージャ、GameOverサブプロシージャ、JikiMoveサブプロシージャ、そしてAtariJikiTamaToTekiを、次のように変更してね。

abdx1912-p09.JPG
▲ 変更後のPlayInitサブプロシージャ。(赤枠が追加した部分)

abdx1912-p10.JPG
▲ 変更後のGameOverサブプロシージャ。(赤枠が追加した部分)

abdx1912-p11.JPG
▲ 変更後のJikiMoveサブプロシージャ。(赤枠が追加した部分)

abdx1912-p12.JPG
▲ 変更後のAtariJikiTamaToTekiサブプロシージャ。(赤枠が追加した部分)

n88_reon.gif
これで出来上がり。実行すると、BGMや効果音付きでゲームが楽しめるよ。

n88_kaede.gif
わー、ほんとだー!


n88_reon.gif
これでも、まだまだ課題は多いよ。今はゲームオーバーの時にスペースキーを押しっぱなしにするとすぐにゲームが始まっちゃうからそれを解消するとか、爆発を表示するとか、ボスキャラを入れるとか色々。そこは自分で、いろいろ工夫してやってみてね。

n88_kaede.gif
はーい。

n88_reon.gif
それでは、この講座はこれでおしまいです!
皆さん、ActiveBasicとDXライブラリで、一杯ゲームプログラミングを楽しんでくださいね!



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