2019年06月24日

みくみく音楽館:夏待ちパラソル(りるば 氏)

こんにちは! 夏がやってきましたね!

古今東西の色々な初音ミクの歌をお届けするみくみく音楽館。
今回は夏にぴったりな曲をお届けします。

紹介するのは、りるば 氏作の『夏待ちパラソル』。すがすがしい曲と歌詞がさわやかな、夏にぴったりの曲です。

今回は、動画の中に歌詞が記されているので、歌詞はつけません(笑
それではいってみましょう!

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

どうでしたでしょうか?
筆者もこれを聞いて、夏が来たな、と感じ、とてもさわやかな気持ちになれました。
清々しい夏の朝、これを聞いて、さわやかに一日をスタートさせる、というのも悪くないかもしれませんね。

それでは、また次回!

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

※次回の更新は、特集『小学生でも使える!? フリーデータベースソフト『K-MEMO』』の予定です。お楽しみに!
posted by 裏編 at 09:07| PCメディア情報 | 更新情報をチェックする

2019年06月20日

レトロゲーレビュー:バンゲリング・ベイ【1984年・ブローダーバンド・FC、コモドール64、MSX他】

retro1906-00.JPG

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

特異なクソゲー?

さて、次に紹介するのは、この『バンゲリング・ベイ』である。
この『バンゲリング・ベイ』も、一部からクソゲーとの評価を受けているゲームではあるが、ただそれだけではない特異性を持つゲームであった。
その特異性のひとつは、元はコモドール64用に作られたものが、ファミコンに移植されたものである、ということであり、いまひとつはクソゲーとは思えぬゲーム性である。
まずは、そのゲーム性に説明していくとしよう。

クソゲー? いや斬新です

まず、ゲーム性のポイントのひとつは、その操作方法である。
たいていのゲームでは、マイキャラは十字キーやジョイスティックで入力した方向で動くが、この『バンゲリング・ベイ』では、左右で旋回、上下で加速・減速という操作システムになっていた。
これは、最初は使いにくいかもしれないが、慣れてくると、通常の操作方法以上に、自機を自分の手足のように使いこなせるようになり、あたかも本物のヘリを操縦しているような気分になれるのだ。

そうそう。二つ目のポイントに触れるついでに、このゲームの内容についても説明していこう。
といっても至極簡単。ヘリを操作して、敵の攻撃をかいくぐり、敵の工場を破壊していく、これだけである。
とはいえ、そう簡単に目的を達成できるわけではない。色々な妨害が立ちはだかってくるのだ。
まずは、敵砲台や戦車、戦闘機が襲来してくる。戦車はともかく、敵砲台の攻撃や戦闘機は強烈だ。それを防ぐには、敵砲台をやられる前に破壊したり、レーダーを破壊したりして、敵の出撃を遅らせなければならない。

retro1906-01.JPG
▲ 敵戦闘機や砲台の攻撃を切り抜けつつ、敵工場を破壊せよ!

もちろん、これだけではない。時間が進むと、敵はこちらの拠点である空母に、攻撃機隊を派遣してくる。
空母が撃沈されると、修理や補給ができなくなるので、本来の任務である工場爆破のほかに、空母も守らなければならない。

retro1906-02.JPG
▲ 空母が襲われている! ただちに敵攻撃機を撃破せよ!

さらにさらにまだある。ゲームがさらに進むと、敵は戦艦を建造し始める。この戦艦は、ゲームシステム上での最終兵器というもので、完成して出航してしまうと、耐久力、攻撃力ともにとても高いうえ、この戦艦が空母の近くまで行くと、空母は沈没してしまう。なので、建造開始の報告が入ったら、ただちに向かって撃破し、完成を阻止しなければならない。

このような戦略性が、このゲームの二つ目のポイントである。

まだまだこれだけではないっ

さらに、このゲームは、対戦プレイが可能である。この対戦が、また一味違う。このゲームでは、1Pがヘリ側、2Pが工場側となって、1Pは、敵工場の全破壊を、2Pは、それを阻止しつつ敵ヘリの撃破を狙うわけだ。
さらにこの対戦プレイ、面白い仕掛けがしてあり、2P側のマイクに音を入力することにより、戦闘機をスクランブルさせたり、攻撃機を出撃させたりといった緊急増援をおこなうことができる、という裏技があるのだ。
と、このようにこのゲームの対戦プレイは面白い趣向がしてあり、裏編も子供のころは、よく対戦プレイをしていたものだ。いや懐かしい。

ではなぜ?

ではなぜ、こんな面白いゲームが、一部からクソゲーと評価されていたのか?
Wikiによれば、その原因は、このゲームが高い戦略性を必要とするものだったことであると説明されている。
なるほど。確かに、このゲームの戦略性は、当時のユーザーの大半を占めていた小学生には難しかったかもしれない。あと、これが原因とはかかれていなかったが、操作の難しさも一因だったかもしれない。

つまり、今にして思えば、すべてが早すぎたゲームだったのではなかろうかと思う。

最後に

と、ここまで説明してきたが、このバンゲリング・ベイは今にこそぴったりくるゲームではないだろうかと思う。
リメイクしたら、とても人気が出そうに思えるのは、裏編だけではないはずだ。

早すぎた悲運の(?)ゲーム、バンゲリング・ベイ。
持っている人は、ぜひともプレイしてはどうだろうか? 今の時代だからこそ、面白さを感じられると思う。

※バンゲリング・ベイの著作権は、ブローダーバンド・ソフト、ハドソン(現セガハドソン)、任天堂様にあります。(追記:現在の著作権はコナミ様にあるそうです)
 この記事に使われている画像の二次使用を禁じます。
=-=-=-=-=-=-=-=-=-=-
※次の更新は、『みくみく音楽館』の予定です。お楽しみに!
posted by 裏編 at 09:17| その他のゲーム情報 | 更新情報をチェックする

2019年06月17日

プチコンゲームプログラミング講座~第八回「数値バトルゲームを作ろう」

文 プチ太郎 氏
=-=-=-=-=-=-=-=-=-=-
 今回のプログラム作成中にプチコン4が出ました。今回はまだ3号だけですが、もう少しお付き合い下さいw
 今回はコマンド入力ゲームです。メニューやメッセージは第三回でやったので、今回はRPGのキモである、素早さや力などの能力値を組み合わせた、戦闘部分を作りましょう。思い出したのが「週刊少年ジャンプ」の読者コーナーでやった「JBSクエスト」です。これは100の数値を早さ・力・身の守り・体力(HP)に分配したキャラを読者が投稿し、編集部が作ったプログラムで戦わせるもので、その方法を頂きました。実際の配分は人による操作と自動どちらでも可能にしました。
教材プログラム 8 「数値バトルゲーム」(ファイル名「KOZA08」)

koz08_s1.jpg

★ ゲームの内容と説明 ★
1.まず左の青いキャラクター(以下「左」)の名前を下画面で聞いてくるので、入力して「決定」を押して下さい。
2.次にキャラの能力値の決め方を聞いてきます。自分で決めるなら「はい」を押して下さい。自動で決める「いいえ」だと5番まで飛びます。
3.外見を聞いてくるので、十字ボタンの左右で選び、Aボタンで決定して下さい。
4.次に能力値の振り分けです。十字ボタンの上下で4つの能力値を選び(3で選んだキャラがカーソル替わり)、左右で数を±してAボタンで決定して下さい。残りがゼロでなく残っていても、Aボタンが作動します。
5.右の赤いキャラクター(以下「右」)も、2~4を繰り返します。
6.左右のキャラクターが現れ、一方が勝つまでオートバトルを続けます。

★ プログラムの事前説明 ★
 今回の様に二者が交互に攻めるゲームは、「ドラクエ1」「ポケモン」の他、オセロや野球もそうですね。初心者だとどうしても、自分側と敵側でそれぞれ処理を作ってしまいますが、それでは似た処理を二つ書くので無駄が増えます。今回は以下の方法でコンパクトにまとめました。
 まず名前や能力値を配列変数で定義し、左を添字[0]、右を[1]にします。攻撃する側(「攻撃側」と呼ぶ)の配列添字(今回もSを使っています)が例えば0だとすると、攻撃を受ける側(「防御側」と呼びます)あるいは次に攻撃側となる相手は、「S=1-S」とすれば、0と1が逆転します(実際に脳内で暗算してみて下さい)実はこれ「!S」と書けばいいのです!(「!」は数学的には否定の意味があります。AとBが同じでないは「A!=B」でしたね)これなら見えやすいので、相手のS番号をいちいち別の変数に代入しなくても、そのまま[!S]と書いて平気ですね。
 キャラの姿は第三回でも使った、30種類のRPG調スプライトです。配置方法は、簡単なゲームだとGAME2みたいに正面姿だけですが、折角RPGも作りやすいぐらいポーズの多い3号なので、「FF」等でおなじみ左右お見合いにしました。

★ 初期設定 ★
 1行のCHR$(10)は制御文字と言って、文字を出すのでなく、文字以外の他の操作をする文字コードで(例えば画面クリアはプチコンではCLSですが、昔のマイコンはCHR$(12)を使っていました)、19行で使います。2行では左右に使う配列を定義。
・S_NAME$[2]=名前
・S_CHR[2]=キャラの姿
・SK_ILL[2,5]=左右の能力値
・SK_ILL$[5]=能力値名
 能力値名の最後「のこり」は、厳密には能力値でなく、後述の振り分けに使いますが、一緒にした方が便利なのでこうしました。4行で左右のスプライト、5行でグラフィックとBG背景を定義しています。

@INIT ゲームのタイトル画面
 これまで大きな文字を表示する時は、BGかGPUTCHRを使いましたが、今回は汎用性のあるDEF GIを作りました(機能は後述)。11~12行のゲーム開始ボタン処理はこれまでと同じですが、上記の通りBG文字を使わないので、代わりにBG背景をフラッシュさせています。
 13~72行にFOR~NEXTという処理がありますが、これでS番号の0と1つまり左右を並べて処理しています。この記述は他の場所でも出てきます。

koz08_p1.jpg

★14~18行 名前の入力 ★
 入力は古い高級言語だとINPUT命令がありますが、規定に合わない入力(数を入力するのに文字を入れたなど)をするとレイアウトが乱れるなどの欠点があります。今回は時間がなかったのでDIALOGを使いました。DIALOGはVisualBASICのMsgBoxによく似た命令で、3DSの下画面(BIGではTV画面)に、プチコンの文字より綺麗な字とレイアウトでメッセージを出します。さらに命令でなく関数として使うと文字列入力が出来、字数制限も簡単です(今回はリストの通り8文字まで。なぜ8文字なのかは第五回参照)ところが文字を入力せず右の「戻る」を押すと、文字数ゼロで確定してしまうので、その時は17行で「ちゃんと入れろ!」とエラーを出して、18行のUNTILで再入力させています。
 またDIALOGはアルファベットと数字しか入力できないのが欠点で(DIALOGによる入力文字を、ファイル名に使う為だと思われます)、これが不満だと思う方は、INPUTで作り直してみて下さい。
 次に19行でまたDIALOGを使い、各種設定をプレイヤーが決めるか、CPUが自動で決めるかを選びます。「はい」を選ぶと、DIALOGが返す値は-1ではないので、29行にジャンプします。

koz08_s2.jpg

★20~27行 CPUによる使用キャラ&能力値決定 ★
 まずSK_ILL[S,I]の4項目全てにゼロが出ない様、1を入れておきます。残りの96は変数Aに入れておきます。先のSK_ILL[S,4]は、ここでは使っていません。
 能力値の割り振りは、4項目全部一つずつ乱数で入れると平均化しそうなので、23行のRND(10)+1で変数Bに1~10を代入し、Bを4項目のどれかに入れています。これを25行のUNTILによって「残った変数Aが10未満になるまで」続けますが、ここで数の大小が矛盾を起こさない様、23行では「UNTIL A>B」を入れています。
 27行は前述のスプライトキャラの先頭番号をS_CHR[S]に代入しています。演出によって姿を変える時は、このS_CHR[S]に一定の数を加えます。

★29~44行 プレイヤー操作による使用キャラ決定 ★
 ここからはプレイヤーが設定する処理です。29行のDEF COL8は、左右で青と赤それぞれの色を先に代入しておきます。
 34行で最初に496番の姿を出して、SPOFSで表示しています。37~42行は第三回のメニュー選択部分と似ていて、十字ボタンの左右を操作するたび、管理番号を±20ずらして次の姿を出し、番号がその範囲を超えたら、反対側の番号に戻しています。格ゲーなど最近のゲームでキャラを選ぶシステムと同じですね。Aボタンを押すと、42~43行でそのキャラの姿に決定しますが、WAIT 15をかけているので、パッと押しただけでは反応しないかも知れません。少し長めに押して下さい。

koz08_s3.jpg

★46~70行 プレイヤー操作による能力値決定 ★
 47~49行で操作表示を書いています。50行から、SK_ILL[S,4]だけ96を入れて残りは1から始まるのは、20行と同じです。54行の変数Yは、カーソルと能力の位置。カーソルは前述通りマイキャラを使うが、6倍では大きいのでSPSCALEで2倍にしています。
 55~68行が十字ボタンを使った割り振り。コンシューマーゲームでは「ウィザードリィ」のキャラ作成で有名ですね。57~60行が上下ボタンによるカーソル移動で、カーソルは動きの有無に関わらず68行で表示。57~60行が左右ボタンによる増減です。ANDの右は「それ以上そっちの方向に動かすと限界なので、もう動かせない様にするか」の判定です。66行では現在割り振った能力値を出しているが、@STATUSと同じレイアウトが使えないので、ここだけ違う配置で表示しています。これを68行でAボタンが押されるまで行います。ELSEIFは次回説明します。

★74~82行 バトル開始前準備 ★
 スプライトを、75行でS_CHR[S]を基準に左右それぞれ相手を向く方向にし、76行で4段階の足踏みをさせ、77行で画面の外から中に動かしています。78行のGIは上部の名前表示です。
 左右の表示を終えたら、80行のWAKUでメッセージ枠を出し、81行で左右の早さSK_ILL[S,0]で乱数を作り、高い値が出た方から82行で「先手を取った」と表示します。81行の「S=(A<B)」という処理は次回説明します。

★84~90行 攻撃開始して当たったか外れたか ★
 左右の能力値を掛け合わせて、攻撃が成功か失敗か出すわけですが、掛け合わせ方にも何種類かあります。「能力値でサイコロを振る計算をする(能力値が16ならRND(8)x2回とか」は処理が複雑なので使わず、今回は攻撃側の攻撃力だけ「能力値をそのまま使う」、他は「能力値で乱数を作る」としました。
 SPANIM命令を使う時、S番号に対して「S-.5」という計算が何か所かで出てきます(プログラム言語では少数点の左のゼロを略していいので、「.5」は「0.5」の意味)。この計算をすると左がS番号0なので「-0.5」、右が「+0.5」と、ゼロに対し左右対称な値となります。攻撃や防御の時、これと「SPANIM…"XY+"」(この記述は前回勉強しましたね)を使って、左右どちらも向かい合ったり遠ざかったりの動きに使っています。
 84~86行は攻撃判定の準備です。86行のSPANIMで攻撃側のスプライトが動きますが、その前に85行のDEF MESでWAIT 64がかかっているので(後述のDEF MES参照)、約1秒たってからスプライトが動きます。
 87~91行で命中判定です。攻撃側と防御側の早さ(SK_ILL[S,0])で乱数を作り、防御側が大きかったら、89~90行で「かわした動き」を行います。89行は前述の「S-.5」で、攻撃側が迫ると同時に防御側をバックさせています。

koz08_s4.jpg

★92~105行 命中したのでダメージが出たか ★
 攻撃側の力(SK_ILL[S,1])から、防御側の身の守り(SK_ILL[!S,1])で乱数を作ったものを引き、代入先の変数Aがダメージです。ゼロ以下だったら敵が硬くてノーダメージですが、これだと双方の力と身の守りが微妙な場合、いつまでも決着がつきません。そこでこの場合94行でA=RND(2)すなわち0か1にし、「ドラクエ」の様に時々ダメージ1を出しています。こうすると最悪でも相手の体力をジワジワ消耗する上、体力が一桁という微妙な状況で死闘も発生します。
 ダメージ1以上なら95~101行でダメージ有りの処理。95行で防御側の体力(SK_ILL[!S,3])からAを引きます。また体力表示がマイナスだとおかしいので、96行でSK_ILL[!S,3]がゼロ未満になったら、ゼロに変えています。GOSUB @STATUSで能力値を再表示し、SPANIMは前回も説明した「"C"で透明と#WHITEを交互表示」、つまり初期のドラクエのように防御側が点滅します。
 ダメージ1未満なら103~104行でダメージ無しの処理。防御側はSPANIMで軽く上にジャンプさせました。最後に107行で「S=!S」として、攻守を入れ替えています。もし攻撃側が二回攻められるルールがあるなら、この処理をしなければ、同じ側が繰り返し攻撃側となります。

koz08_p2.jpg

★109~115行 バトル終了 ★
 82行で変数WNに2を入れ、83行のREPEATからバトルを開始します。終了条件を入れる位置は「バトル中に防御側が負けた」か「最後のUNTIL」どちらかですが、今回は終了条件が前者しか無いので、101行で防御側の体力が1未満になったら、WNに攻撃側のS番号を入れ、108行のUNTILで「WNが0か1になった」らバトル終了と判断しています。
 109~113行が決着の演出です。109行のBGMPLAYは4と5番、110行のBEEPは88と89番で音の雰囲気が似ていたので、左右どちらが勝ったかで変数WNつまり0か1をプラスして、左右でサウンドを変えています。113行のSPCHRでも同じことをしていますが、これはS番号が!WNつまり負けた側です。S番号がWNが勝った側ですね。もう一度プレイするかの選択画面も、前述のDIALOGを使っています。

koz08_s5.jpg

★ 定義済み処理 ★
@STATUS 両者の能力値を表示
 S番号の変数がSでなくS2なのは、@STATUSを呼ぶ前にSを使っているので、ここで同じ変数Sを使うと、処理がおかしくなる論理バグを起こすからです。FORMAT$関数については第五回でも書きましたが、書式が複雑なのでここでは略します。
DEF WAKU LX1,LY1,LX2,LY2 枠線を描く
 第三回の流用ですが、バトル開始前の一回しか使っていません。第三回では青でしたが、左の色とまぎらわしいので紺色にしました。

@MCLS 枠線内の消去
 枠線内の4行を全部消し、新たな表示に備えます。この4行はファミコン時代のRPGなどを多数調べて決めました。

DEF MES L$,LB,LW 枠線内に文章を表示
 WAKUで描いた枠線に、L$のメッセージを出します。短い文章で右端にはみ出さない事が判ったので、長さチェックはせず、また表示文章の行数高さを扱う変数WYに+1して、次に表示する文章の位置処理の無駄を省きました。この処理と同時に、サウンドやウェイトを使う事が多いので、同時に処理できるようにしました。LBは0以上だとその音色のBEEPを出します。LWは1以上だとそのFPSのWAITで待ちます。

DEF COL8(LC) 代入された0~8に応じたRGB関数の値を返す
 第五回の流用。これで左のS番号0はCOL8(1)つまり青、右のS番号1はCOL8(2)つまり赤を出します。

DEF GI LX,LY,L$,LX2,LY2,LC1,LC2 GPUTCHRで最後に色が付いた文字を出す
 テキストとBG以外で大きな字を手っ取り早く出すにはGPUTCHRですが、座標が小さなグラフィック単位だったり、目立たせるために背後に色を付けておくのが面倒なので、これを作りました。
・LX,LY - 字を表示する座標の左上ですが、値はグラフィック単位でなくテキスト単位つまり横50x縦30です。後述の文字拡大を使っても、ここの座標は1倍角基準です。
・L$ - 表示する字
・LX2,LY2 - GPUTCHRで拡大する大きさ
・LC1 - 文字自体の色
・LC2 - 文字の背景色

@ALLCLS ゲームに必要な画面を一端クリア
 これも以前と同じだが、毎回ゲームの内容に応じて、リセットする要素や方法を変えています。
(第九回につづく 次回はまたまた「予習・復習3:条件判断とジャンプ命令」です)

★今回の教材プログラムは、サーバにアップしてありますので、サーバからダウンロードしてご覧下さい。
公開キー  :BP54Q33J(連載が進んで新しい教材プログラムが追加されると、公開キーも変わります。この公開キーでダウンロード出来ない場合は、連載の一番新しい回の公開キーをご利用下さい)
プロジェクト:KOZA
ファイル名 :上の教材プログラムの見出しをご覧下さい。
=-=-=-=-=-=-=-=-=-=-
※次の更新は、レトロゲーレビューの予定です。お楽しみに!

2019年06月15日

[Windows用(VB.NET)]むしゃむしゃ

【投稿者:びぃちゃ】

[はじめに]
プログラムポシェットという本に載っていた、同名のプログラム(作:GAME OVER 氏)を、Windowsに移植してみました。

[内容]
パックマンのようなドットイートタイプのゲームです。
パワーエサはありませんが、代わりに自分は、画面の端から反対側にワープすることができます。
これをうまく使い、敵から逃げながらドットを全て食べましょう!
ドットを全部食べると1面クリアで、敵の数が増えていきます。(最大三匹)4面からは、敵の追いかけが速くなります。
当然のごとく、敵に捕まるとゲームオーバーです。

[遊び方]
まずウィンドウが出るので、そこでフルスクリーンかウィンドウ表示かを選びます。それを選ぶと、今度はタイトル画面が出るので、そこでスペースキーを押せばゲームスタートです。
自分の移動はカーソルキーで行います。

[その他]
今回は、特に難しい部分はなかったです。

※使用素材
ユウラボ 様
魔王魂 様
(使われてる素材の二次使用を禁じます)

[画面写真]
toko1906-01-01.JPG
==========
※プログラムソース※
むしゃむしゃ のソースファイル

posted by 裏編 at 10:45| 投稿プログラムコーナー | 更新情報をチェックする

2019年06月13日

師匠TのチャレンジARSゲーム!~第拾四回:DEATH TRAP(後編)【1984年・SQUARE】

※ここに掲載された画像は、問題があれば削除いたします。

うむ、師匠Tである!
今回はいよいよ、ザ・デストラップの後編じゃ!
いよいよベンソンの冒険も佳境。 どうなるかが楽しみじゃの。
ではいくぞ。

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

【 これまでの話じゃ! 】

ars1906-b01.JPG

ars1906-b02.JPG

ars1906-b03.JPG

自国のジタン博士が、B国のゲリラに拉致された。
博士救出の指令を受けたベンソンは、ただちに現地に赴き、冒険を始めるのだった……。

【 本編じゃ! 】

ars1906-01.JPG
今回は砂漠からスタートじゃ。
それにしても暑くてのどがかわき、一歩も動けそうにない。どうすれば……。

ars1906-02.JPG
補給物資を発見。さっそく確保せねばならぬな。

ars1906-03.JPG
ジャングルに入ったところで、夜になってしもうた。
このままでは、獣に食べられてしまう。
どうにかして、襲われないようにしなければ……。

ars1906-04.JPG
やっと、アジトまできたのはいいが、見張りがいる。
なんとかして、気を反らなければ……。

ars1906-05.JPG
むむ、この小屋はもしや!?

ars1906-06.JPG
建物の前まできたぞ。
さて、気づかれないように入らなければ……。

ars1906-07.JPG
ジタン博士を発見! いよいよ脱出じゃ!
ここから先は……。

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

※『ザ・デストラップ』は、SQUARE(現・スクウェア・エニックス)の製品です。
この記事に使われている画像の二次使用を禁じます。
=-=-=-=-=-=-=-=-=-=-
※次の更新は、『プチコンゲームプログラミング講座』の予定です。お楽しみに!

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