2018年09月24日

URAURA! Game Review :独眼竜政宗【ナムコ・FC】

※本記事では、ゲームの紹介のために、ゲームの画像を引用させていただいております。
 ここに掲載されている画像は、問題があれば削除いたします。
 また、ここに掲載されている画像の二次使用を禁じます。

 ナムコ(現・バンダイナムコゲームス)といえば、ゼビウスやマッピーなど、シューティングやアクションがメインのメーカーだと思ってる人も多いのではないだろうか。だが! 実はナムコはそれだけのメーカーではないのだ!
 それを証明するゲームが、この『独眼竜政宗』である。

~コメディチックだぞ!~
 この独眼竜政宗がどのようなゲームかというと、前年に放送された大河ドラマ・『独眼竜政宗』にあやかって、政宗率いる伊達家をプレイヤー勢力として、東北の諸大名と戦いを繰り広げるという、信長の野望タイプのシミュレーションゲームである。

ur-1809-01.JPG
▲ ゲームは信長の野望タイプだ!

 だが、さすがはナムコ。ただの信長の野望のコピペにとどまらず、差別化をちゃんとはかっているのだ。
 その差別化の一つは、コメディチックであり、バラエティ豊かだということ。上のスクリーンショットを見てもわかる通り、登場するキャラは、かわいくデフォルメされているので、とてもなじみやすいのだ。
 また、そのキャラのグラフィックも、イベントなどによって笑顔になったり、しょぼんとしたりするところがまた面白い。
 また、イベントにも、保春院(政宗の母)が、現実のおばあちゃんよろしく、城におしゃべりにきて1ターンをまるまるつぶしたり、祈祷師に頼むと、金山のミニゲームがはじまったりと、なかなかコメディチックで面白いものが用意されているんだ。

ur-1809-02.JPG
▲ 祈祷師登場!

~簡単だ!~
 一律に、信長の野望タイプのシミュレーションは、コマンドが多くて、ちょっと難しいという印象があるだろうが、この独眼竜政宗では、コマンドをアイコンにしたり、コマンドのヘルプを呼び足せるようにしたりして、簡単にプレイできるようになっている。また、先のコメディチックなところも、とっつきやすくするための作戦の一つと言えるかもしれぬ。

 また、ミニゲームなどの、ゲームを楽しくさせるギミックも用意されていたり、合戦もユニットを移動させるだけのシンプルなものになっていたりと、とてもとっつきやすくなっている。

読者のみなさんも、プレイしたときには、むずかしさなどあまり感じないのではないだろうか?

ur-1809-03.JPG
▲ 合戦もとてもシンプルだ!

~それだけではないぞ!~
 だが、これだけを聞いて、独眼竜政宗が初心者用シミュレーションと思っているのは、まだまだ甘い。
 初級者モードでも、しっかりと富国強兵をして、そこそこ戦略を考えないと、勝ち抜くことは難しい。また上級者モードでは、敵は本国以外も狙ってくるので、さらに気が抜けなくなっており、歯ごたえのあるゲームになっているのだ。
 ファミコンを持っている方は、ぜひプレイしてみてはどうだろうか? 気軽に楽しむのにも、本腰入れて挑むのにも、どちらでも楽しめる一本である。



※次の更新は、9月27日、『みくみく音楽館』の予定です。お楽しみに!
posted by 裏編 at 09:08| Comment(0) | その他のゲーム情報 | このブログの読者になる | 更新情報をチェックする

2018年09月20日

VB.NETでDirectX~第4回・キー入力でキャラを動かそう!

助手:あ、博士、また寝てる。しょうがないなぁ。博士、起きてください。講義の時間ですよ。

博士:すやすや……。

助手:起きないなぁ……あ、そうだ。おーちゃーん。博士寝てるから変わりに……

博士:(がばっ)ま、待ってくれいっ。それはわしが困る。

助手:やっと起きた。おーちゃんに仕事取られたくなかったら、ちゃんと起きて仕事してください博士。

博士:わ、わかっておるわい……。それでは今月は、ジョイパッドやキーボードなどで、キャラクターを動かす方法について説明していくことにするぞい。



[これがプログラムだ!]

博士:ではまずは、第1回と同じように、プロジェクトを作るのじゃ。プロジェクトの種類は、『コンソールアプリ(.Net Framework)』でな。

助手:はい、できました。『参照の追加』の設定や、DLLのコピーもやっておきましたよ。

博士:うむ。わからない読者は、第1回を読み直しておくようにな。さて、ではまず、Module Module1とSub Main()の間に、次のコードを書くのじゃ。

----------
Dim hChara As Integer
Dim x As Integer
Dim y As Integer
----------

博士:そして次は、Sub Main()とEnd Subの間に、次のコードを書くのじゃ。

----------
Dim pad As Integer

''ウィンドウモードの設定
ChangeWindowMode(1)
''ウィンドウタイトルの設定
SetWindowText("キャラクターをジョイパッドで動かすプログラム")

''DXライブラリの初期化
If DxLib_Init() = -1 Then
Exit Sub
End If

''ダブルバッファリング
SetDrawScreen(DX_SCREEN_BACK)

hChara = LoadGraph("chara.bmp")

x = 100
y = 100

''メインループ
Do
''画面クリア
ClearDrawScreen()

pad = GetJoypadInputState(DX_INPUT_KEY_PAD1)

If (pad And PAD_INPUT_UP) <> 0 Then
y = y - 2
End If

If (pad And PAD_INPUT_DOWN) <> 0 Then
y = y + 2
End If

If (pad And PAD_INPUT_LEFT) <> 0 Then
x = x - 2
End If

If (pad And PAD_INPUT_RIGHT) <> 0 Then
x = x + 2
End If

DrawGraph(x, y, hChara, 1)

''フリップ
ScreenFlip()

If (ProcessMessage() = -1) Then
Exit Do
End If

If (CheckHitKey(KEY_INPUT_ESCAPE) = 1) Then
Exit Do
End If
Loop
----------

博士:そうそう。適当なキャラクターの画像(BMP形式)を、『chara.bmp』の名前でプロジェクトのDebugフォルダに保存しておくようにな。

博士:できたら、実行してみるのじゃ。どうじゃ?

助手:あっ! ジョイパッドやカーソルキーで、キャラを動かせますよ!

博士:うむうむ。それでは、これから、このプログラムのキモについて説明していくぞよ。



[GetJoypadInputState]

博士:このプログラムのキモは、ClearDrawScreen関数の次にある、この文じゃ。

----------
pad = GetJoypadInputState(DX_INPUT_KEY_PAD1)
----------

博士:この関数を使うと、人間が押したジョイパッドやキーボードの情報を返してくれる、というものじゃ。

助手:ふむふむ。この( )の中の引数は?

博士:うむ、これは、これは……。

助手:おや、博士、もしかして?

博士:うっ!!(ばた

助手:あー、やっぱり。おーちゃん、続きを頼みます。

おーちゃん:うむ、おーちゃんじゃ、おーちゃんじゃ。さて、この引数には、どのジョイパッドからの入力を調べるかが入るのじゃ。このDX_INPUT_KEY_PAD1を入れた場合は、キーボードと1番のジョイパッドについての入力の情報が返されるのじゃ。

助手:なるほど。

おーちゃん:ちなみに、DX_INPUT_PAD2を入れると、2番のジョイパッドについての情報から得られるし、DX_INPUT_PAD3とすると、3番のものが得られる。DX_INPUT_KEYだと、キーボードの情報が得られるぞい。

助手:わかりました。それで、この関数の戻り値から、どうやってどのキーが押されたかを調べればいいんでしょう?

おーちゃん:うむ。それは、Andを使えば可能じゃ。この行に注目するのじゃ、するのじゃ。

----------
If (pad And PAD_INPUT_UP) <> 0 Then
----------

おーちゃん:PAD_INPUT_UPとは、上方向を表す定数じゃ。関数の戻り値と、この定数とでAndを取り、その結果が0でなければ押されていることになるのじゃ。

助手:なるほど。そして、下方向をチェックするなら、PAD_INPUT_DOWNと、右方向をチェックするなら、PAD_INPUT_RIGHT、左方向ならPAD_INPUT_LEFTとAndを取ればいいわけですね。十字キー以外のボタンをチェックしたいならどうすればいいのですか?

おーちゃん:うむ。もちろん、それ用の定数もあるぞ。1ボタン(Zキー)ならPAD_INPUT_1、2ボタン(Xキー)ならPAD_INPUT_2を使えばいいのじゃ、いいのじゃ。その他のボタンについては、PAD_INPUT_〇を使えばよいぞ。(〇にはボタンの数字が入る)例えば、ボタン4を調べたければ、PAD_INPUT_4を使えばいいのじゃ。

助手:わかりました……あれ?

おーちゃん:どうしたのじゃ?

助手:移動させ続けると、画面の端を超えて移動して見えなくなるんですよ。画面の端にいくとそこで止まるようにできないんですか?

おーちゃん:うむ。そこは、DXライブラリの話ではなく、普通のプログラミングの話になるのじゃが……例えば、画面の右端、左端で止まるようにすれば、次のようにすればよいのじゃ、よいのじゃ。

----------
If x < 0 Then
x = 0
End If

If x + 64 > 640 Then
x = 640 - 64
End If
----------

おーちゃん:最初のIf文は簡単じゃな。画面左端のX座標は0なので、キャラクターの左端が0(画面の左端)より小さくなったら、強制的にキャラクターの左端を表す変数Xを0にしているのじゃ。

助手:なるほど。それで、次のIfは?

おーちゃん:うむ。この画像のサイズは64(ピクセル)x64(ピクセル)じゃ。なので、キャラクターの右端はx+64となるのじゃ。それが、画面の右端(640)より大きくなったら、その画面の右端である640から、キャラクターの幅である64を引いた位置に、設定しているというわけじゃ。DrawGraphで指定するのは、画面の左上の座標じゃからな。上下の場合も、これを応用すればよい。

助手:わかりました。でも、これだと色々なサイズのキャラがあるとき困りますよね。それに、シューティングのように、640ピクセルx480ピクセルではない画面サイズの場合もありますよね。そうした時はどうすれば?

おーちゃん:ふむ。じゃが、それについてはちょっと宿題にしておこう、しておこう。宿題のヒントとして、この関数を教えておくぞ、教えておくぞ。

----------
GetGraphSize([ハンドル], [幅を格納する変数], [高さを格納する変数])
----------

おーちゃん:これを実行すると、指定したハンドルのサイズを、これまた指定した変数に格納してくれるのじゃ、くれるのじゃ。例えば

----------
GetGraphSize(hnd, w, h)
----------

おーちゃん:とやると、変数hndに格納されたハンドルの画像の幅が変数w、高さが変数hに格納されるのじゃ。

助手:ふむふむ。

おーちゃん:これをさっきの話の内容と組み合わせて考えてみるのじゃ、みるのじゃ。

助手:わかりました、考えてみます。

おーちゃん:うむ。次回は……

博士:うわー、待ったおーちゃんっ。それ以上わしの仕事取らないでくれいっ。
こほん、次回はいよいよ最終回。この問題の答え合わせと、音声を流す方法、そして、文字列を表示させる方法を説明していくぞ。さらばじゃ!



※次の更新は、9月24日。『URAURA Game Reivew』の予定です。お楽しみに!
posted by 裏編 at 14:21| Comment(0) | VB.NETでDirectX | このブログの読者になる | 更新情報をチェックする

2018年09月17日

師匠TのチャレンジARSゲーム!~第九回:『サラダの国のトマト姫』(その4) 【1984年・ハドソン】

うむ、師匠Tである!
今回の、『サラダの国のトマト姫』攻略もいよいよラスト! きゅうり戦士の冒険も佳境じゃ!
さて、カボチャ大王を助け出し、トマト姫を助け出すことはできるのか。注目じゃ!

ではいくぞ!

※本記事では、ゲームの紹介のために、ゲームの画像を引用させていただいております。
 ここに掲載されている画像は、問題があれば削除いたします。
 また、ここに掲載されている画像の二次使用を禁じます。

~本編(続き)

ARS1809-01.JPG
さぁ、やってきたぞ! ここが、あのにっくきカボチャ大王が待ち構える城じゃ!

ARS1809-02.JPG
さて、城門の前までやってきたが、やはりというべきか、門番がしっかり守っておる。いかがするべきか……。

ARS1809-03.JPG
ちょっと回り道して、山道にやってきたぞ。『引き返せ!』というような警告があるが、我らに後退などありえぬ!

ARS1809-04.JPG
城を眼下に臨む崖の上じゃ。ここから飛び降りれば、城の中に潜入できそうじゃが、そのために必要なものは持っておるか?

ARS1809-05.JPG
よし、やったぞ! 無事、潜入に成功じゃ!!

ARS1809-06.JPG
むむ、いきなり見つけたぞ、トマト姫じゃ! じゃが、ご注意ご注意。急いては事を仕損じる、ともいうぞ。

ARS1809-07.JPG
畑にやってきたぞ。何もなさそうに見える『が』……。

ARS1809-08.JPG
城内に忍び込んだぞ。本格的な探索に挑む前に、身を清めるとしようぞ。
シャワーにするか、お風呂にするか、悩みどころじゃな。

ARS1809-09.JPG
むむ、兵士の気配が! このまま進めば見つかってしまうな。どうするべきか……。
そういえば、オロチとの戦いで手に入れた『アレ』を使えば、兵士をつるんっと転ばせることができるかもしれぬな。

ARS1809-10.JPG
牢屋の前にやってきたぞ! 兵士から手に入れたアレで開けてみるとしようぞ。

ARS1809-11.JPG
ARS1809-12.JPG
やはり、牢屋の中には、大王に抵抗して捕まった者たちが囚われておった。彼らからも話しを聞いてみるとしよう。
特に、このハクサイからはある重要なアイテムを手に入れることができるぞ!

ARS1809-13.JPG
カボチャ大王のところまでもうすぐだというのに、兵士が見張りについておる!
強行突破はあまりに無謀というもの。ここは……。

ARS1809-14.JPG
ついに発見! トマト姫じゃ!
すぐに助けたくなるところだが、ちょっと待て。『急いてはことを(以下略

ARS1809-15.JPG
奥に進むと……いた! こいつがにっくきカボチャ大王じゃ!
どうすればこやつをやっつけられるかは……


ここから先は、キミの目で確かめるのぢゃっ!!
健闘を祈っておるゾ!!


※このゲームの著作権は、ハドソンソフトにあります。
 この記事に使われている画像の二次使用を禁じます。
----------
※次の更新は、9月20日、『VB.NETでDirectX』の予定です。お楽しみに!
posted by 裏編 at 18:19| Comment(0) | チャレンジARS | このブログの読者になる | 更新情報をチェックする

2018年09月14日

師匠のJava道場~第13回・インターフェースについて学ぶのじゃっ!!

師匠T:さぁ、いよいよこの講座も最終回じゃ! 覚悟はよいか?

弟子D:はい! とても長い道のりでしたね。

師匠T:うむ。今回はいよいよその総決算。それによって、おぬしの運命も決まる。心するがよい!

弟子D:わかりました! それで今回は?

師匠T:うむ。今回はインターフェースなるものについて説明する。ではいくぞ!

▽ 師匠、インターフェースとはなんぞや? ▽

弟子D:師匠、さっそくですが、インターフェースとはなんぞや?

師匠T:うむ。これは、簡単に言ってしまえば、メインとなるクラスに実装されて、ある機能を付加するもののことじゃ。

弟子D:ふむふむ。

師匠T:このインターフェースは、次の三つに大別されるぞ。

・〇〇〇able系……『~することが可能であること』を表すインターフェース。ただし、Throwableは例外。
・〇〇〇Listener……あるイベントの発生を通知するためのインターフェース
・名詞系……抽象化クラスのようなインターフェース

師匠T:〇〇〇able系は、それを実装することにより、ある機能を使うことが可能になるものじゃ。例えば、runnableであれば、マルチスレッドが『可能』になる、というような感じじゃな。

弟子D:なるほど。次の『〇〇〇Listener』系は?

師匠T:うむ。例えばVBでは、ボタンを押したり、テキストボックスの内容を変更したりすると、イベントが発生するじゃろ? 前者ならClickイベント、後者ならTextChangedイベント、という具合にな。

弟子D:はい。

師匠T:これを実装すると、そのようなイベントがJavaプログラム実行時に発生した場合、それを受け取ることができるのじゃ。もちろん、そのときに実行するコードを書くこともできるぞ。

弟子D:なるほどっ。

師匠T:最後の名詞系については、ここでは省略しておく。知りたくば、Java関係の書籍やサイトを見るがよい。

弟子D:さては、説明するのがめんどく……

師匠T:はぁっ!!(飛び蹴り

▽ 実装する方法と作成する方法なのじゃ! ▽

師匠T:続いては実装する方法じゃが、これは簡単。クラス宣言の最後に、予約語implementsを使って、こう付け加えればいいだけじゃ。

--------------------
class 〇〇〇 implements △△△
--------------------

師匠T:例えば、Sisyoクラスにrunnableインターフェースを実装したければ、このように書く。

--------------------
class Sisyo implements runnable
--------------------

師匠T:そして、作成する方法じゃが、こちらも難しいことはない。classの代わりにinterfaceで宣言すればいいだけじゃ。例えば、DeshiAというインターフェースを作りたければ、こう書けばいいわけだな。

--------------------
interface DeshiA
--------------------

師匠T:このとき、インターフェースが持つメソッドは、抽象クラスの抽象メソッドのように、宣言部だけを書くこと。中身は書くでないぞ。

弟子D:あの師匠。インターフェースを継承することはできないのでしょうか?

師匠T:もちろんできるぞ。その場合は、クラスと同じように、extendsを使えばよい。

弟子D:なるほどっ。

師匠T:さて。実装のついて一つ注意じゃ。インターフェースを実装すると、それに付随するメソッドも自動的に追加されるが、その追加されたメソッドを一つも実装しなかった場合は、そのクラスは抽象クラスにしなければならないので気を付けることじゃ。

弟子D:はいっ。……ところで、抽象クラスってなんでしたっけ?

師匠T:……はぁっ!!(飛び蹴り

弟子D:うわあっ。

師匠T:おぬしの頭は、容量が1KBしかないのか。第10回の講座を読み返してこいっ!

弟子D:うぅ、すいません、師匠……。

▽ インターフェースと抽象クラスの、似ている点、違う点じゃ! ▽

師匠T:さて、このインターフェースと抽象クラスはいくつか、似ている点と違う点がある。ここではそれを説明していくぞ。

弟子D:はい、師匠!

師匠T:まず、インターフェースも抽象クラスも、newでインスタンスを作ることはできない。じゃが、参照型変数を作ることはできる。あらかじめ言っておくが、もし参照型変数のことがわからなければ、過去の記事を読むように。

弟子D:は、はい。して、そのほかには?

師匠T:うむ。インターフェースのメソッドも抽象クラスの抽象メソッドも、作るときはメソッド名だけを決める。つまり、そのメソッド内の処理は書かない、ということじゃな。

弟子D:なるほど。

師匠T:続いて違う点じゃが、一つ目。当然のことじゃが、抽象クラスはクラスじゃが、インターフェースはクラスではない。

弟子D:そういえば、抽象クラスはclassで宣言しますが、インターフェースはinterfaceですものね。

師匠T:うむ。そして二つ目。抽象クラスは、抽象メソッドではないメソッドも持つことはできるが、インターフェースは中身のないメソッドしか持つことはできないのじゃ。

弟子D:ふむふむ。

師匠T:そして最後。抽象クラスは、中身を変更できるフィールド(他の言語で言う変数)を持つことができるが、インターフェースはpublic static finalで宣言されるもの……つまり定数しか持つことはできぬのじゃ。

弟子D:なるほど。

▽ 師匠、インターフェースの利点とはなんぞや ▽

師匠T:では最後じゃ。ここでは、インターフェースの利点について語るとしようぞ。まず一つ目じゃが、インターフェース型の参照型変数では、それに対して、toStringメソッドやequalメソッドなどのObjectクラスで宣言されているメソッドを呼び出すことができる。

弟子D:ふむふむ。

師匠T:そして二つ目。以前言った通り、Javaでは多重継承をすることはできぬが、インターフェースをいくつも実装することはできる。これによって、疑似的に多重継承をすることができるのじゃ。

弟子D:なるほど、それは重要なポイントですね。それで次は?

師匠T:うむ。インターフェースを使って、多態性を実現することができる。共通のメソッドを持つインターフェースを、それぞれのクラスに実装する、という方法じゃな。

java1809-01.jpg

師匠T:この場合、継承関係を気にせずに実装でき、また、遠く離れたクラス同士で多態性を実現することが可能じゃ。

弟子D:なるほど、よくわかりました!

師匠T:うむ。弟子よ、ここまで13回、よく頑張ったのう。これはそのほうびじゃ。受け取るがよい。

弟子D:はいっ! あぁ、ついに俺も弟子を卒業……あれ?

『弟子D殿。貴殿を弟子10級から弟子9級に昇格する』

師匠T:ふっふっふっ。

師匠T:さて、ここまでJavaについてレクチャーしてきたが、Javaをマスターする道は長く、また一つではない。精進が必要じゃぞ。ではさらばぢゃ!



※次の更新は、9月17日・『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!
posted by 裏編 at 08:08| Comment(0) | 師匠のJava道場 | このブログの読者になる | 更新情報をチェックする

2018年09月08日

機動電脳伝Gパソレク!第5話

文 裏編/絵 カゼカオル 氏

※北海道の地震の影響で更新が遅れたことをお詫びいたします(平伏

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

paso1809-1.gif

paso1809-2.gif

paso1809-3.gif

paso1809-4.gif

paso1809-5.gif

paso1809-6.gif

paso1809-7.gif

※次の更新は、9月13日、『師匠のJava道場』の予定です。お楽しみに!
posted by 裏編 at 08:18| Comment(0) | Gパソレク | このブログの読者になる | 更新情報をチェックする