2018年12月24日

みくみく音楽館:クリスマスソングメドレー(麻太郎P / AsataroP 氏)

どうも! 今日はクリスマスイブですね!

そこで、今回のみくみく音楽館は、クリスマスにまつわる曲、ということで、色々なクリスマスソングを初音ミクが歌ってくれる動画をご紹介します!
歌ってくれる曲は次の三極。

・クリスマスおめでとう / We Wish You a Merry Christmas
・ジングルベル/Jingle Bells
・きよしこの夜/Stille Nacht

では、どうぞお聞きください!



~感想
どうでしたでしょうか? ミクならではの透き通った声が、まさにクリスマスにぴったりですよね。
クリスマス当日は、これを聞いて、幸せに浸るのもいいのではないでしょうか?

それでは、また次回!

=-=-=-=-=-=-=-=-=-=-

※次の更新は、1月7日。特集『EPTree for VBを使ってみました!』の予定です。お楽しみに!
posted by 裏編 at 13:33| PCメディア情報 | 更新情報をチェックする

2018年12月20日

URAURA! Game Review :北斗の拳 【バンダイ・PS1】

【 甘いわ、たわけぇ!! 】
さて、今日紹介するのは、『北斗の拳』である。
え? それなら、あちらこちらのゲーム紹介のサイトでたくさんレビューされてるだろ、って?

あまーーい

『北斗の拳』のゲームで一番有名なのは、東映動画のファミコン版。そしてセガマーク3版であるが、今回紹介するのは、プレイステーション版である。

【 どんなゲームか、だと? その身をもって味わうがいい! 】
さて、このPS版北斗の拳であるが、基本的にはファミコン版やセガマーク3版のような、格闘系のゲームである。
主人公はケンシロウやレイなど、おなじみの拳法家たちを操作して、迫り来る暴漢どもをひでぶ!させながらゲームを進めていくのである。

だが、このPS版北斗の拳が、他のと一線を画すところは、ゲームの進行が、かなり原作を模している、ということである。ゲームの進行は、3Dキャラによるムービーの後に、暴漢どもをひでぶ!させる格闘シーンへと移行する、というものだ。
しかも、この3Dキャラのムービーは、声優さんはアニメ版の声優さんをそのまま使っているという豪華ぶり。
力の入れようがわかろう、というものだ。

そしてもうひとつ、プレイしていて面白いと思ったのは、特定のザコを攻撃したときに発動する、『リアルタイムあべし!システム』だ。
これは、発動したときに、コマンドが表示され、そのコマンドどおりにキーを操作する、というものだ。
これに成功すると、そのザコだけではなく、周囲のザコも一緒に吹き飛ばすことができる。
北斗の醍醐味である、みんなまとめて『あべし!!』の爽快感を味わえる、面白いシステムといえるだろう。
さらに、成功したときの、ザコの断末魔も面白い、必聴。

【 せめて、面白いおまけ要素で葬ろう!! 】
さらに、このPS1版北斗の拳は、おまけ要素も充実している。
まずは、「ザ・あべし!」
これは、先ほどの『リアルタイムあべし!システム』を使ったもので、次から次へと押し寄せる雑魚(しかも全て、『リアルタイムあべし!システム』が発動する)を、一定時間に規定数倒す、というものだ。
このモードでは、ケンシロウは死ぬことはないが、攻撃を受けるとタイムロスになるうえ、うまく多くの敵を引き寄せてあべし!に巻き込まないと、タイムリミットに間に合わないなど、なかなか燃えるモードだ。
そうそう、あべし!させるたびに、面白い断末魔を聞かされることになるので、下手すると笑いのツボに入って爆笑の渦に巻き込まれてしまうやもしれぬ。注意(笑

そしてもうひとつは、「世紀末シアター」。

これは、シーンとせりふを組み合わせて、オリジナルのシーンを作って、それを鑑賞して楽しむというモードだ。
組み合わせ次第では、面白い迷場面も作れてとても面白い。
げんに、こちらのサイトでは、このモードを使った、もう爆笑間違いなしの動画が公開されている。北斗で馬鹿笑いしたい人は必見である。

【 最後に】
このように、PS版北斗の拳はとても面白く、数ある北斗の拳のゲームの中でも、裏編の一番お気に入りなゲームなのだが、ちょっと不満な点もある。
それは、ムービーシーン。 今までのゲームの中でもかなりの再現度を誇っているのだが、それでも一部のシーンが端折られていたりするのだ。これがちょっと残念無念。
ぜひとも、完全に再現したバージョンをプレイしたいものである。

あと、OPムービーは見ものだ。3Dキャラで、あのOPを再現し、しかもOP曲として、クリスタルキングの『愛をとりもどせ』が使われている。ファンにはもう嬉しい限りではなかろうか。

本当にお勧めである。この『北斗の拳 ~世紀末救世主伝説』。
あなたもこれをプレイし、世紀末の世界にトリップしてみてはどうだろうか。

……あ、世紀末はもう過ぎ去ったな。(爆)

=-=-=-=-=-=-=-=-=-=-

※次の更新は、12月24日。『みくみく音楽館』の予定です。お楽しみに!
posted by 裏編 at 11:08| その他のゲーム情報 | 更新情報をチェックする

2018年12月17日

プチコンゲームプログラミング講座~第二回「ヘビゲームを作って、スプライトやBGも使ってみよう」

文 プチ太郎 氏
=-=-=-=-=-=-=-=-=-=-
 前回は書いた通り二本紹介予定でしたが、容量ミスで一本になってしまいました。今回はどうしようか、三回書いてこの内容であまり進んでいないのは気が引けたんですが、学習内容としても好みとしても外せないと考えて、二本目を載せます。ただ載せるだけでなく、当初はやはりテキストキャラのみでしたが、スプライトやBGなど多少考えた命令も入れて、自己解析してもらう事で、もう一段レベルの高い学習ができるようにしました。
教材プログラム 2 「ヘビゲーム」(ファイル名「KOZA02」)
KOZ02_S1.jpg

★ ゲームの概要 ★
 商業作品でも「バリケード」「トロン」などの類似作が出ていました。昔から初心者学習用ゲームの模範とされています。その理由は
1.動き続けるキャラがマイキャラしかいないので、プログラムが短く簡単。
2.高級言語の実行速度が遅かった時代にも、動かすキャラが少ないので、ゲームがじゅうぶん高速で楽しめた。
3.動いた後の体が障害物になるので、動いた距離に比例して難易度が高くなる。
4.エサや障害物も配置が単純なので、ゲームバランス調整や、改良してオリジナルゲームを作ることも簡単。
 ゲームの内容は…タイトル画面を見ればわかるので、パス!w

★ プログラムの説明 ★
 前回までは行番号順でしたが、プログラムの行数が長くなり、それだと文章の量も増えてしまうので、今回から処理内容ごとにも説明しています。また前回の説明と同じ部分のプログラム技術は略しています。

★ 初期設定 ★
@プログラムを起動した時、一度だけ設定に使う命令
 1行:GPRIOという命令が出ています。これは文字・グラフィック・スプライト・BGを使う時の、レイヤー(どの表示がどれから優先的に上から出てくるか)の命令で、プチコンの起動時のままでは、グラフィックが下に隠れてでなくなってしまうため、本来より上の位置である"0"に出しています。レイヤーについては後の連載でまた書きます。
 2行:3つの変数に数字を入れています。それぞれ「マイキャラの頭」「マイキャラの胴体としっぽ」「宝箱」のBG番号です。こうしたキャラを変える場合、キャラの番号に関する命令に、そのまま数字(例えば胴体なら「BGPUT…372」や「IF BGGET(…)==372」など)を入れておくと、後からキャラを変える時面倒なので、数字でなく変数にしてあります。
 順番がずれますがBGFILLは、指定した四角い範囲をBGで埋める(埋める=FILL。グラフィックのGFILLも同じ)命令です。パラメータは「BGFILL レイヤー番号,X座標1,Y座標1,X座標2,Y座標2,BG番号」です。これは背景が黒いのではつまらないので、目にやさしい緑の芝(103)で塗ってみましたが、一番下のスコア表示部も同じにすると見にくいので、BGのY座標で言う14行目を、茶色の床(573)で塗ってみました。
 SPSETはスプライトでは必ず最初に使う命令で、「スプライト管理番号の0番を使う。キャラクター番号はとりあえず0番にするよ」という意味。スプライトは必ず、SPSETを宣言しないと使えません。今回は頭に使っているだけで、当たり判定などを使うアクションゲームなどでの使い方は、後日解説しましょう。
@INIT1 ゲームを開始するたびに行う初期設定
 最初の変数はゲームスタート時のデータで、LVは1つまり1面から、BGMはBGM番号で0から始まります。
 今回からいきなりゲームが始まるのでなく、オープニングタイトルを入れてみました。ここではゲームの説明文を6行書いていますが、PRINTでは字が小さいので、ここでの表示専用のDEF SYMBOLを作りました。詳しくはDEF SYMBOLを見て下さい。
 また同時に使っている新命令として、READが登場しています。これは変数に入れたい中身を、DATAの後に書いておけば、「READ 変数」と書くことで、その中身が変数に入るという命令です。文章などのように、不規則なデータの並べ方をコンパクトに収めるのに便利です。読まれるDATAの位置は、プログラムの先頭から順番(この場合「FOR Y=0 TO 5」と繰り返しているので6回)に進みます。しかし一度読むと読み込みの位置は戻らず、READがあってもDATAが無いとエラーになるので、@INIT1を実行するたび、「RESTORE @INIT2」で、読み込み位置を@INIT2の先頭に戻しています。

KOZ02_P1.jpg

@INIT2 面クリアのたびに行う初期設定
・22行:DEF JIでスタートメッセージを出し、36行のDEF JIで消しています。36行で「" "*25」と言う書き方がありますが、これはその文字列をその回数という事で、ここではスペースを25字分、「"ABC"*3」なら「ABCABCABC」という文字列が使えます。
・23行:LV一回分につき5個ぶんの障害物をBG1番に置いていますが、同じBGだとつまらないので、プチコンに入っている、チェスの駒6種類を置いています。次の24行もよく似た記述ですが、こちらはLVと同じ数だけ、TKRつまり宝箱を置いています。それぞれの行で、何が同じで何が違うか、よく考えてみましょう。
・25行:同じ方法で頭を置いていますが、スタートしてすぐ障害物にぶつかると困るので、ちょっと変えています。まずRND関数による座標(変数はAXとAY)の配置を23・24行より小さくして、外周に絶対頭を置かない。次に置こうとする場所をBGGET関数で調べて、既に何か置かれている(BGコードがゼロでない)なら、UNTILでもどしてやり直す。この二点をクリアしたら、SPCOLORで色、SPCHRでスプライトのキャラ番号(ATM)、DEF ATAMAで座標AX,AYの位置に頭を出します。
・27~31行:@LOOPによく似ていますが、RND関数で0から3の乱数を出し、それに応じて、最初に進む方向(変数はVXとVY。Vはベクターつまり方向の意味)を決めています。
・33行:SPANIM命令で、頭のスプライトを規則的に変化させ、チカチカ点滅するようにしています。SPANIM命令はパラメーターがちょっと難しいので、後日また解説します。35行はボタンを押すまでゲームを開始せずに待っています。これはいきなり頭が動き始めると、プレイヤーが慌てている内に、ぶつかってゲームオーバーになるのをふせぐためです。最後に36行で、表示関係を準備中からゲーム中に変え、BGMを鳴らします。

★ メイン処理 ★
@LOOP 基本処理
・39~43行:おなじみ押ボタン処理です。44行では頭のある位置にBGで尻尾を描き、新たな移動先の座標NXとNYを求めて、45行で頭の表示と歩行音を出しています。
・46行:少し長いIF文は、NXとNYがフィールドの外に出たかを判定し、出たらもう@GAMEOVERに飛ばしています。普通ヘビゲームでは、周りに壁を描く事が多いのですが、BGでは25x15マスとヘビゲームにはやや小さく、しかも一番下はスコア表示に使います。このため壁を描かないようにして、少しでもフィールドを大きくしています。もちろん壁があったとしても、ヘビゲームでは大体ゲームオーバーにする事が多いですね。
・47~49行:変数Cに移動先のBGコードを入れ、それが変数TKRだったら@GETへ、ゼロでも32(どちらも、何も描かれていない空白表示で、BGで表示する空白は32を使っています。DEF JIも参照してください)でもなかったら、障害物なので@GAMEOVERへジャンプしています。そのどちらでもなかったら、移動先のNXとNYの座標を、頭の座標AXとAYに代入し、WAIT 16つまり4分の1秒ぐらい待って(ここを変えると、ゲームの速度が変わります)、@LOOPへ戻ります。

KOZ02_S2.jpg

@GET 宝箱の取得、および面クリアしたかの判定
 BEEPの7番は「マリオ」でコインを取ったような音がするので、金や価値のあるものを取った時は、この音色が定番でしょう。58行はレベルの10倍に応じて得点を加え、@SCOREを呼び出しています。32行で代入したLV2は、画面に残っている宝箱の数で、取るたびに1つ引いています。引いた後もまだ1以上あるなら、GOTO @GET_RETで@LOOPの中に戻ります。LV2がゼロなら一面クリア。DEF JIでクリアメッセージを出し、2秒間待って、LVとBGM番号をどちらも1つ足しています。なおBGM番号のうち4~6番はブリッジ(半永久演奏でなく、短く演奏すると終わる)なので、42番以上は存在しないのでエラーになってしまうため、それぞれIF命令で7番と0番に変えています。そして@INIT2にジャンプすれば、面クリア後に必要な処理は、全て@INIT2でやります。

KOZ02_S3.jpg

KOZ02_S4.jpg

@GAMEOVER ゲームオーバー
 前回のスクロールスキーゲームと基本的に同じです。文字表示はPRINTでなく、DEF JIで行っています。67行ではSPCHRで頭のしかめっ面にしています。次のFOR I=1 TO 60…WAITは、60分1秒待ちながらを60回繰り返す、つまり「1秒間に60回処理をする」という事で、その間にRGB関数とRND関数で色のRGBをランダムにしている、つまり顔の色がチカチカと変わって、やられた演出を表現しています。71行では変数SC(今回のスコア)と変数HS(ハイスコア)を比較し、SCの方が大きかったら、HSにSCの内容を代入し、@SCOREを呼び出してスコア表示部を書き換えています。

KOZ02_P3.jpg

★ 定義済み処理 ★
 定義済み処理とは、共通した処理をどこからでも呼び出せる便利な処理で、大別して二種類あります。「GOSUB~RETURN」は古い時代から存在し、プチコンでも初代はこれだけでした。呼び出し元から定義済み処理へジャンプ時、変数を渡したり返したりする機能がなく、個別に「変数=値」を書く必要があります。新しい時代から登場した「DEF~END」は、プチコンでは3号から採用。変数を渡す事ができます。返すにはRETURNとOUTの二種類があるが、今回は渡しだけ使っています。
@SCORE 「DEF JI」を使って、スコアやハイスコアを表示
 注意して欲しいのは、JIでの文字表示用引数は文字列しか使えないので、数値変数はSTR$関数で文字列に変えている事です。例えばA$=STR$(255)と書くと、A$に文字列"255"が入ります。
@CHR12 ゲームに必要な画面を一端クリア
 CLSで文字、GCLSでグラフィック、BGCLRで4つあるBGの1番と3番を消し、DEF ATAMAも実行しています。
DEF SYMBOL L$ GPUTCHRを使って文字列を表示
 オープニング画面で、ゲームの説明を出す時、JIではアルファベットしか出せず、PRINTでは小さいので、GPUTCHRという命令で、文字をグラフィックで出し、また縦横とも2倍の大きさにしています。またどの色でもイマイチ見えにくいので、#WHITEで書く前に、座標を少しずらして#BLACKで書いて、影をつけています。
DEF JI LX,LY,L$ BGを使って文字列を表示
 実はスプライトもBGも、定義番号の32~95番は、文字表示用のアスキーコードの32~95番と同じになっています。このためアルファベットや数字なら、BGで大きい字を出せます。BGレイヤー番号は、一番手前の3番に出しています。またLXに-1を入れておくと、自動的に位置が中央に来るという親切設計にしています。
DEF ATAMA LX,LY スプライトを使って頭を表示
 座標が、グラフィックとスプライトは文字の8倍で400x240、BGは2分の1で25x15です。ここではスプライトによる頭を表示する時、ゲームで使っているBGにあわせた座標を、ススプライト用にあわせるため、引数のLXとLYを16倍して、SPOFSでスプライトを表示しています。頭を隠す時はLXかLYどっちかの座標を、-1とか画面の外に指定すればいい訳です。

KOZ02_P4.jpg

★ 最後に ★
 一つ課題?を。実は何度もゲームをやっていると、宝箱を全部取ったのに、面クリアしないバグが時々あります。どうしてそうなるのか? 改良方法は? 私は気づきましたが、わざと改良しませんでした(直せなかったんぢゃないよ!)これを読んでいて、ある程度プログラミングに自信のある方は、そこを見つけて、改良してみましょう!
(第三回につづく 次回は反射神経を使わず頭脳だけを使う、コマンド入力ゲームの予定です)

★今回の教材プログラムがうまく打ち込めなかった方のために、同じ教材プログラムを、サーバにアップしてあります。必要な方はサーバからダウンロードして、どこが間違っているかなどを、見比べてみて下さい。
 ご多聞にもれず、どんどんリストが長くなっているので、リスト全体を載せる事は、今回が最後になると思います。次回からは別ジャンルのミニゲームを何回か載せていく予定ですが、公開キーで一発ダウンロードのみになると思います。
公開キー  :ED743WAE(連載が進んで新しい教材プログラムが追加されると、公開キーも変わります。この公開キーでダウンロード出来ない場合は、連載の一番新しい回の公開キーをご利用下さい)
プロジェクト:KOZA
ファイル名 :上の教材プログラムの見出しをご覧下さい。
=-=-=-=-=-=-=-=-=-=-
※次の更新は、12月20日。URAURA! GAME REVIEWの予定です。お楽しみに!

2018年12月13日

師匠TのチャレンジARSゲーム!~第拾弐回・暗黒星雲(その1)【1983年・T&E SOFT】

※ここで使われている画像は、問題があれば削除いたします。


ars1812-00.JPG


うむ、師匠Tである! さて、今回は以前紹介した『惑星メフィウス』の続編、『暗黒星雲』を紹介するぞ!

この暗黒星雲は、惑星メフィウスのシステムに、さまざまな要素をプラスしたさらに解き味のある作品じゃ!

今回はこれを3回にわたって攻略していこうと思う。


ではいくぞ!


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


【プロローグ】


銀河系の星々を次々と征服していく侵略者・ジャミル。

そのジャミルに対抗するため、伝説の剣・レイソードを求めて惑星メフィウスに降り立ったスターアーサーは、冒険の末ついにレイソードを発見する。

だが、彼には、レイソードの真の力を解放するため、まだするべきがあるのであった……!


【本編】


ars1812-01.JPG
レイソードのところにたどり着くと、怪しげなじじいが、レイソードの最大なパワーを得るために、まだすることがある、とのたまうぞ。
そう、スターアーサーの冒険はまだ終わりではない。ここからまた始まるのじゃ!!


ars1812-02.JPG
さて、惑星メフィウスを飛び立ってすぐ、ジャミルの戦闘機隊の攻撃を受けてしまう。
これが暗黒星雲で取り入れられた新機軸(?)システムの一つ、3Dシューティングぢゃ!!
うまく狙いをつけて、敵二機を撃破するのだ!


ars1812-03.JPG
敵を撃破すると、脱出ポッドを発見したぞ! 助けるべきか放っておくべきか……


ars1812-04.JPG
やっぱり助けておくべきじゃった! 中にいたのは、ジャミルの傭兵・ルナというべっぴんさんじゃった!
これはうれし……いやなんでもない。


ars1812-05.JPG
嬉しいことに……もとい、ちゃっかりと隣のシートに座ったルナ。
彼女からは色々なことを聞いておこうぞ。


ars1812-06.JPG
これがクリプトンⅡのコクピットじゃ。基本的にこのゲームは、あちこちの星域にワープすることで進むぞ。


ars1812-07.JPG
ある星域では、ワープ後に何も操作せずにじっとしていると、何かイベントが発生することがある。
こ、これは、かつて地球から打ち上げられたボイジャー1号ではないか!!


ars1812-08.JPG
また、ある星域では、大型の宇宙船と遭遇した。どうやら移民船らしいが……。


ars1812-09.JPG
移民船に乗り込むためにエアロックへ。
ここでは、持っていくものを4つ選ぶことができるぞ。
そうそう、宇宙服を着ずに出ていくなんて、無茶なことはしてはならぬぞ。
(つまり、宇宙服を含めて4つじゃ)


ars1812-10.JPG
移民船の中に入ったぞ。この中には何があるのか……。


ars1812-11.JPG
クリプトンⅡの外での行動には注意すること!
なにげなくしたことで、ゲームオーバーになることもあるので、慎重にな。


ars1812-12.JPG
冷凍睡眠カプセルと、中には骸骨が……。
ジャミルの攻撃の犠牲者じゃろうか。うぬぬ……ジャミルめ、許せぬ!!


ars1812-13.JPG
どうやら、エアロックのようじゃな。くれぐれも、カプセルの中に入るなんて馬鹿なことはせぬように。
宇宙の迷子になってしまうぞ! 何事も慎重に、じゃ。


ars1812-14.JPG
ある部屋では、ロボットが二体おった。どちらかでも直すことができれば、何か情報が聞けるかもしれぬな。


ars1812-15.JPG
ある部屋には、腕や足などの部品が散乱しておった。むむ、この腕や足は……!?


ars1812-16.JPG
さて、部屋の奥の扉は、ロックされておるのか開けることはできぬ。
どうしたらいいのか……って、このスクリーンショットの中でネタバレしておるな(苦笑


ars1812-17.JPG
ドアの奥はコクピットじゃった。やはり生存者はいないようじゃのう。
とはいえ、このまま去るのは愚策というもの。コンソールに何か落ちているのう。


ars1812-18.JPG
その他にも、船の中を見ると、色々なものが手に入るぞ。
じゃが、命に関わるものもあるので、何を手に入れるかはよく考えることじゃ。


ars1812-19.JPG
さて、部品などをつけて修理してやっても、ロボットは動く気配がない。
そういえば、機械が壊れたときにいい方法があったの。ポンポン……と。


果たしてこの先どうなるのか……

次回に続くのじゃっ!!

=-=-=-=-=-=-=-=-=-=-
次の更新は、12月17日、プチコンゲームプログラミング講座』の予定です。お楽しみに!

posted by 裏編 at 12:49| チャレンジARS | 更新情報をチェックする

2018年12月10日

ActiveBasicとDXライブラリでゲームプログラミング!~第2回・画像を表示、移動させてみよう!

n88_reon.gif
玲音:どうもこんにちは! 玲音です! 今日も、ActiveBasicとDXライブラリを使ったゲームプログラミングについて勉強しちゃいましょう!

n88_kaede.gif
楓:どうもこんにちは! 楓ですっ。玲音先輩っ。今回は何をするんですかっ?

n88_reon.gif
うん。今回は、背景やキャラクターを表示させて、さらにキャラクターを移動させちゃおうと思います。よろしくね!

n88_kaede.gif
おーっ。それは大切な部分ですよねっ。頑張りますっ。

~dxLoadGraph関数と、dxDrawGraph関数を使ってみよう~

n88_reon.gif
さて、背景やキャラなどの画像を表示させるためには、二種類の関数を使うよ。まず一つが、画像を読み込むdxLoadGraph関数。そしてもう一つが、その画像を表示させる、dxDrawGraph系の関数でーす。

n88_kaede.gif
dxLoadGraph関数と、dxDrawGraph系の関数ですかー。それって、どう使うんですかっ?

n88_reon.gif
それではさっそく、dxLoadGraph関数と、dxDrawGraph系の中でも基本であるdxDrawGraph関数を使ってみちゃおう!
まず、フォルダを作って、その中に次の画像をダウンロードしてね。

niko.bmp

n88_kaede.gif
はーい、できましたっ。

n88_reon.gif
そしたら続いて、ActiveBasicを起動して、次のプログラムを入力してみて。できたら、さっきのフォルダに保存しておくのを忘れずにね。

=-=-=-=-=-=-=-=-=-=-
#include "Dxlib.sbp"

Dim chara As Long

''初期処理
dxChangeWindowMode(1)
dxDxLib_Init()
dxSetDrawScreen(DX_SCREEN_BACK)

''ニコニコを読み込む
chara = dxLoadGraph("niko.bmp")

Do
  ''画面をクリア
  dxClearDrawScreen()

  ''何等かの処理
  dxDrawGraph(200, 150, chara, 1)

  ''画面に反映
  dxScreenFlip()
  ''メッセージ処理
  If dxProcessMessage() = -1 Then
    Exit Do
  End If
Loop

''後処理
dxDxLib_End()
End
=-=-=-=-=-=-=-=-=-=-

n88_kaede.gif
できましたよー。実行してみますねっ。

abdx1812-02.JPG

n88_kaede.gif
おーっ! ウィンドウの左上のほうに、ニコニコマークが表示されましたよっ。

~これが使い方!~

n88_reon.gif
それじゃ、dxLoadGraph関数と、dxDrawGraph関数の使い方について説明するよ。

n88_kaede.gif
はーい。よろしくお願いしまーす!

n88_reon.gif
まず、dxLoadGraph関数は、このように書くんだよ。

=-=-=-=-=-=-=-=-=-=-
dxLoadGraph(ファイル名)

例:dxLoadGraph("samp1.bmp")
=-=-=-=-=-=-=-=-=-=-

n88_kaede.gif
引数にファイル名を指定するだけでOKなんですね。

n88_reon.gif
うん。それで、このdxLoadGraph関数は、メモリに画像を読み込んで、表示できるようにする関数だよ。これを実行すると、dxLoadGraph関数は、ハンドルという値を返してくるの。

abdx1812-03.JPG

n88_kaede.gif
はんどる?

n88_reon.gif
ハンドルというのは、メモリに読み込んだ画像につけられる番号で、dxDrawGraph系の命令では、このハンドルを使って、どの画像を表示するかを指定するんだよ。

n88_kaede.gif
なるほどっ。だからハンドルを使うために、変数に入れているわけですねっ。

n88_reon.gif
うん。そして、dxDrawGraph関数はこう使うの。

=-=-=-=-=-=-=-=-=-=-
dxDrawGraph(X座標, Y座標, ハンドル, 背景を透過するかどうか)

例:dxDrawGraph(100, 50, gazou, 1)
=-=-=-=-=-=-=-=-=-=-

n88_reon.gif
まず一番目と二番目の数字は、表示する座標。DXライブラリは、指定した画像の左上隅が、ここで指定した座標になるように表示してくれるの。例えば、例の場合なら、画像の左上隅が、(100, 50)の座標に来るように表示されるわけだね。

abdx1812-04.JPG

n88_kaede.gif
三番目に入れるのは、表示させる画像のハンドルですよねっ。

n88_reon.gif
うん、その通り。例でいえば、変数gazouに格納された数字のハンドルを持つ画像を表示するわけ。

abdx1812-05.JPG

n88_kaede.gif
ふむふむ。先輩っ。最後の『背景を透過するかどうか』はなんですかっ?

n88_reon.gif
うん。それを1にすると、画像の黒の部分を透明にして、背景が透けるようになるんだよ。こんな風にね。

abdx1812-06.JPG

n88_kaede.gif
なるほどー。あ、そうそうっ、先輩。もし、複数のdxDrawGraph関数を実行した場合はどうなるんですかっ?

n88_reon.gif
その場合は、前にdxDrawGraphで表示された内容が、後に表示された内容で上書きされるの。これを利用すれば、背景とキャラを表示させることもできるよ。試しに、これを実行してみて。あ、そうそう。次の画像をダウンロードしておいてね。

haikei.bmp

=-=-=-=-=-=-=-=-=-=-
#include "Dxlib.sbp"

Dim chara As Long

''初期処理
dxChangeWindowMode(1)
dxDxLib_Init()
dxSetDrawScreen(DX_SCREEN_BACK)

''背景を読み込む
haikei = dxLoadGraph("haikei.bmp")
''ニコニコを読み込む
chara = dxLoadGraph("niko.bmp")

Do
  ''画面をクリア
  dxClearDrawScreen()

  ''何等かの処理
  dxDrawGraph(0, 0, haikei, 1)
  dxDrawGraph(100, 70, chara, 1)

  ''画面に反映
  dxScreenFlip()
  ''メッセージ処理
  If dxProcessMessage() = -1 Then
    Exit Do
  End If
Loop

''後処理
dxDxLib_End()
End
=-=-=-=-=-=-=-=-=-=-

abdx1812-08.JPG

n88_kaede.gif
ほんとだっ! 背景も表示されていますっ!

n88_reon.gif
二番目のdxDrawGraph関数の4番目の数字を0にすると、違いがわかると思うよ。試してみてね。

n88_kaede.gif
はーいっ。

~キャラクターを移動させてみよう!~

n88_reon.gif
さて。キャラクターを移動させる前に、ちょっとさっきのプログラムを改造してみようー。さっきのを、次のように改造してみて。

=-=-=-=-=-=-=-=-=-=-
#include "Dxlib.sbp"

Dim haikei As Long
Dim chara As Long
Dim x As Long
Dim y As Long

''初期処理
dxChangeWindowMode(1)
dxDxLib_Init()
dxSetDrawScreen(DX_SCREEN_BACK)

''背景を読み込む
haikei = dxLoadGraph("haikei.bmp")
''ニコニコを読み込む
chara = dxLoadGraph("niko.bmp")

x = 100
y = 70


Do
  ''画面をクリア
  dxClearDrawScreen()

  ''何等かの処理
  dxDrawGraph(0, 0, haikei, 1)
  dxDrawGraph(x, y, chara, 1)

  ''画面に反映
  dxScreenFlip()
  ''メッセージ処理
  If dxProcessMessage() = -1 Then
    Exit Do
  End If
Loop

''後処理
dxDxLib_End()
End
=-=-=-=-=-=-=-=-=-=-

n88_reon.gif
太字で書かれているのが、追加したり修正したりした部分だよ。できたら、実行してみてね。

n88_kaede.gif
はーい。それじゃ、実行してみますね。

abdx1812-09.JPG

n88_kaede.gif
さっきと同じように表示されましたよっ。

n88_reon.gif
そして、プログラムを見て、何か気づかないかな?

n88_kaede.gif
あっ! 二番目のdxDrawGraph関数、一つ目と二つ目のところが数でなく変数で指定されてるのに、ちゃんと動いてますっ。dxDrawGraph関数は、変数も使えるんですねっ。

n88_reon.gif
そのとおり。その場合、dxDrawGraph関数は、変数に入っている数に従って表示してくれるの。さて、ここで何か気づかない?

n88_kaede.gif
あっ! 変数の値を変えてやれば、キャラクターを表示させることができるんじゃないですかっ?

n88_reon.gif
せいかーい! ということでやってみよう! プログラムをさらに、次のように改造してみてね。

=-=-=-=-=-=-=-=-=-=-
#include "Dxlib.sbp"

Dim haikei As Long
Dim chara As Long
Dim x As Long
Dim y As Long

''初期処理
dxChangeWindowMode(1)
dxDxLib_Init()
dxSetDrawScreen(DX_SCREEN_BACK)

''背景を読み込む
haikei = dxLoadGraph("haikei.bmp")
''ニコニコを読み込む
chara = dxLoadGraph("niko.bmp")

x = 100
y = 70

Do
  ''画面をクリア
  dxClearDrawScreen()

  ''何等かの処理
  dxDrawGraph(0, 0, haikei, 1)
  dxDrawGraph(x, y, chara, 1)

x = x + 4

  ''画面に反映
  dxScreenFlip()
  ''メッセージ処理
  If dxProcessMessage() = -1 Then
    Exit Do
  End If
Loop

''後処理
dxDxLib_End()
End
=-=-=-=-=-=-=-=-=-=-

n88_kaede.gif
ニコニコが、右に移動していきました! でも、画面の右端についても止まらずに消えていっちゃいました。どうしたらいいんでしょう?

n88_reon.gif
そこは、次回の話にも少しかかわるから、宿題にしておくね。楓ちゃんも、読者のみんなも考えてみて。さて、次回はキー入力して、キャラクターを動かす方法について勉強していきます!

n88_kaede.gif
おー。それは楽しみです! 早く次回にならないかなぁ。

n88_reon.gif
くすくす。それでは、また次回!

=-=-=-=-=-=-=-=-=-=-

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