前段 個人的に、Excel VBAを仕事で組む機会がある。 自由に組んでいるので、いろいろと設計方法、実装方法を考える。 VBAのインターフェース VBAにはJavaでいうextendsのような継承はない。 Interfaceがあるので、ポリモーフィズムを実現するときは、これを使うのが一つの方法論だ。 ただ、インターフェースは、というか、VBAはクラスのキャストができない。 インターフェイス自体が、そうする性質のものではないのだが、つい欲しくなるときがある。 Object型 さて、話は変わるが、VBAには、Object型というものがある。 平たく言うと、あらゆるクラスに適する型である。あらゆるクラスのスーパークラスと思うと話が早い。 そして、Objcet型からは元のクラスで実装したプロシージャを呼ぶことができる。ObjectによるポリモーフィズムもVBAでは可能、といえる。 なので、ダウンキャストを実現するために、インターフェイスでインスタンスが自己をObjectで出力するためのメソッドを定義してあげることで、スーパークラスからサブクラスへのキャストを実現する。 実装例 Class InterfaceClass '' プロパティ Public porp as String '' イミディエイトウィンドウに出力する Public Sub printOut() As String End Sub '' 自己をObject型で出力する Public Function Object() As Object End Function Class ImplementClass '' InterfaceClassを実装する Implements InterfaceClass '' スーパークラスのGet,Letのため、 '' 値を保持しておくためのプロパティ Private prop As String '' Getter Public Property Get InterfaceClass_prop() As String InterfaceClass_prop = prop End Property ...
注意 ただの感想の垂れ流しです 全世界が驚愕した待望したゲーム性 SUPER HOT は、今までで3作でている。 SUPER HOT (以下SUPERHOT) SUPER HOT VR(以下VR) SUPER HOT : MIND CONTROL DELETE(以下DELETE) SUPERHOTは2013年にKickStarterでクラウンドファンディングされて、見事成立させできたゲームだ。 このゲーム性は、シンプルかつ非常に魅力的なものだった。 「自分が動いている間だけ時間が進む。自分が動かなければ(ほとんど)すべてが止まる」 映画MATRIXの有名な場面のように 弾丸が止まって見える を体現したゲームだったのだ。 死角から弾丸が発射されても、軌道を見てから紙一重で避けて、反撃する。そんな映画みたいな演出を実体験できる。 ブラウザでできるプロトタイプからそれが実現できていた。 プロトタイプを再生する-SUPERHOT クラウンドファンディングが成功して当然のゲームなのだ。 質実剛健なグラフィック SUPERHOTが発売されたものは、グラフィック自体は特に凝っているわけではなかった。すべて3Dグラフィックだが、ポリゴンチックで2013年当時でもきめ細かいグラフィックとは言えない。 ただ、その表現が非常にゲームとしてシンプルかつ機能美を追求したものだった。 敵は赤色 武器は黒色 ステージなどその他は白色 直感的でゲームを理解できる。そして、敵キャラクターはほとんど同じ造形のポリゴン。ただの記号だ。 ゲームはゲーム。下手な感情移入など不要。そう言わんばかりの作りだ。 先の「映画的な楽しみ方」を100%没頭させるゲームなのだ。 シンプルなゲーム性に高い戦略性 しかし、一言でいうとこのゲーム「死にゲー」である。 ルールハシンプルだが、かなりの高い戦略性を求められる。 1対1で射撃戦を講じるなら余裕だろう。しかし、このゲーム敵がわんさか出て、1対多を必然的に求められる。 360度どこから弾丸が飛んでくるか分からない。故に、全体を見渡しての状況把握が必要となる。 そうやって視点を動かしている間に背後を取られる、などというのもしばしば起こる。 そして、「ゲームオーバー」 さながら、ワンマンアーミーの過酷さ...
コメント
コメントを投稿