私はゲームプログラミングに少し慣れていないので、Javaで少し実験することにしました。私はSwing/AWT apiを使用して、JPanelを利用してゲームを実装しています。しかし、ゲームに「時間の経過」をどのように実装するかはわかりません。誰かがこれについて何か考えを持っていますか?
ありがとう!
あなたが探しているのはゲームループと呼ばれています。これに関して利用可能なドキュメントはたくさんあります。これが簡単なものです:
private boolean isRunning;
public void gameLoop()
{
while(isRunning) //the loop
{
doGameUpdates();
render();
Thread.sleep(1000); //the timing mechanism
}
}
whileループ内のコードは何度も実行され、実行の合間に1秒間スリープするという考え方です。これは「時間の経過」を実現する方法です。たとえば、X位置のオブジェクトがあり、whileループに配置object.X += 1
した場合、オブジェクトのX位置は、ループの反復ごとに1ずつ進みます。つまり、1秒あたり1です。
これは非常に基本的なゲームループであり、いくつかの問題がありますが、初心者の場合は問題ありません。もう少し経験を積んだら、可変および固定のタイムステップゲームループを調べます。
ただし、表示が実際に更新されるように、このコードを別のスレッドで実行する必要があります。
たぶん、Javaのスレッドを見る必要があります: http : //www.javaworld.com/jw-04-1996/jw-04-threads.htmlゲームループの再描画と処理専用の新しいスレッドを作成します(他の回答を参照) 。
編集:このチュートリアルは役立つかもしれません:http://zetcode.com/tutorials/javagamestutorial/