2012-01-10 5 views
0

私はOpenGL(GLUT)とC++のBattleshipをプログラミングしています。OpenGL(GLUT)とC++でゲームロジックを行う方法は?

私は、 (フィールドと事前に定義された船を表示するように)グラフィックスのものに行う方法を知っているが、私は次のように私のゲームのコードを置くべき場所:キー左を選択押され

  • 場合は、1つのフィールドには、左とそれを表示します
  • 船が、私は、ディスプレイ()関数内で行うことはできませんが、船が配置されている場合、それはでなければならない場所のよう

物事船(フィールドの切り替え)船を表示し、その後に配置されている場合display()関数によって描画されます。

私はゲームロジックをどこに置くべきかわかりません。

答えて

2

を見てみると、基本的な、古典的なgame loopです。効果的に、ゲームは1つの巨大なループで実行されます。このループでは、ユーザーの入力を処理し、ユーザー入力に反応し、AIを実行し、それに応答してビデオ/オーディオを更新します。これはもちろん、非常に単純化されていますが、戦艦であれば十分です。概念的に

、多かれ少なかれ:

while(Game.IsRunning) 
{ 
    Input = GetInput(); 
    Game.Update(Input); 
    Display(Game); 
} 

イベント駆動型とは対照的に、あなたが実際にリアルタイムをやっている場合は、あなたの更新を行う必要があるのアカウントに時間が経過し、最後以来のを取ります更新、およびプレーヤーの入力が含まれます。私はこれを短くしておきたいと思います。

1

GLUTは、あなたのプログラムのカスタム動作を取得するには、それらの機能を再実装する

void keyboardDown(unsigned char key, int x, int y); 
void mouseClick(int button, int state, int x, int y); 
void mouseMotion(int x, int y); 

のように、マウスキーボードイベントをインターセプトする機能を提供します。

たとえば、ユーザが "s"を押した後に船を描きたい場合は、keyboardDown関数でグローバルフラグを1に設定します。次に、表示機能でそのフラグをチェックします。それが1なら、あなたはあなたの船を描くでしょう。詳細な情報はもちろん

それはあなたの船を移動/配置する方法はあなた次第です:)

、あなたが探しているものをdocumentation

関連する問題