Arcade Cabinet

自作したゲームコントローラを紹介します


テーマ:

ドットイートゲームのサンプルプログラムを作って、ブログで公開しようと思っていたのですが、なかなかオリジナルのゲームは作れません。大好きなパックマンをまず研究し、メガドライブに移植してみることにしました。電波新聞社の「ALL ABOUT NAMCO」とRootさんが発行されている流線堂の「DOTEAT」が大変役に立ちました。

 

<プログラミングのメイン部分>

プログラムのメイン部分です。

Hard_int()関数を実行後、whileの中を永遠にループするのですが、ループの最後ででVDP_waitVSync()を実行することで、60分の1秒が1サイクルになります。変数game.stateの内容で、ゲームの各シーンに対応した関数が実行されます。

処理は60分の1秒以内に行う必要があり、それを少しでもオーバーすると1サイクル遅れ処理落ちが発生します。

 

わかりやすいように、列挙型で、ゲームのシーン(GAME_SCENE)を定義しています。

 

<各シーンの関数一覧>

プログラムの内容は、シーン別に用意した関数に書き込んでいきます。

このmain関数と各シーンの関数が、プログラムの基本構造になっています。

まだC言語の勉強を初めて2年弱ですが、自分のプログラミングの方針は、まず全体の基本的な構造を設計し、それから細部の設計を行うようにしています。

それは筐体製作と同じで、先にコントロールパネルをなどの細部を製作してしまうと、後から基本構造である筐体を作ったときに、強度に問題が生じたり、全体のバランスが悪くなったりします。まず全体の大枠(筐体)を作ってから、コントロールパネルなどの細部を設計した方がより良いものができると思っています。

 

<関数一覧>

SGDKはC++ではなく、C言語なので、クラスは使用できません。しかし、クラスのような構造を想定して、関数をHard, Game, Round, Player, Enemy, Fruit, Panel, Sprite, Collisionに分けました。

 
<Hard_関数, Game_関数一覧>

ゲーム全体を管理している関数です。

 

<Round_関数一覧>

ラウンド(面)を管理している関数です。

 

<Player_関数一覧>

プレーヤー(パックマン)の操作や動き、ドットを食べる処理などを行ってる関数です。

 

<Enemy_関数一覧>

モンスターの処理を行っている関数です。

 

<Fruit_関数一覧>

フルーツを管理している関数です。
 
<Panel_関数一覧>
スコアパネル(画面右側)にスコア表示や残機表示などを行っています。
 
<Sprite_関数一覧>
スプライトの表示, 優先順位の設定などを行っております。
 
<Colli_関数一覧>
当たり判定を行っている関数です。
 
<変数>

変数は上記の構造体7つです。

構造上、どの関数からもアクセスできますが、基本的にplayerはPlayer_関数からのみ、enemyはEnemy_関数から値を操作するようにしています。

 
こんな感じで構造設計しています。

 

 

パックマンばかり研究していると、先日仕事で読まなければいけない書類にこんなイラストが・・・

どう見てもパックマンです!!

 

 

 

AD
いいね!した人  |  コメント(0)  |  リブログ(0)

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。