大学の課題のために、ネットワーク対応バージョンの pacman を作成する必要があります。最初に pacman のローカル コピーを作成してから、この機能をネットワーク プレイ用に拡張することで、この問題に対処するのが最善だと考えました。
私は Java GUI 開発に比較的慣れておらず、Java 内でそのような機能を利用していると言わざるを得ません。
Java 内でのゲーム開発と pacman ゲームの例に関して、上記のリンクをたどり始めました。
私は迷路を int 配列として表現することにしました。異なる値は異なる意味を持ちます。ただし、メイン ゲーム ループ内のペイント メソッドが実行されると、このメソッドで迷路全体を再描画しています。
for (int i : theGame.getMaze())
{
if (i == 4)
{
g.setColor(mazeWallColour);
g.fillRect(curX, curY, cellSize, cellSize);
curX += 25;
}
else
{
curX += cellSize;
}
index++;
// Move to new row
if (index == 25)
{
index = 0;
curX = 10;
curY += cellSize;
}
}
ただし、これは1fps未満を提供しています。上記のリンクの例では、paint メソッドが呼び出されるたびに同様の再描画方法を使用していることに気付きましたが、表示できない画像でこれを行うと思います (ダブルバッファリングのようなものです [最初のリンクのように BufferStrategy を使用しました説明します]) 迷路を再描画するより良い方法は何ですか?
これに関するポインタ/アドバイスは役に立ちます。
お時間をいただきありがとうございます。
http://pastebin.com/m25052d5a - メイン ゲーム クラス用。
編集:どのコードが実行に非常に時間がかかっているかを確認しようとした後、非常に奇妙なことが起こっていることに気付きました.
paintClear(Graphics g) メソッドに追加しました
ocean = sprites.getSprite("oceano.gif");
g.setPaint(new TexturePaint(ocean, new Rectangle(0,t,ocean.getWidth(),ocean.getHeight())));
g.fillRect(10, 10,getWidth() - 20,getHeight() - 110);
これにより、すべてがスムーズに実行されました-しかし、これらの行を削除すると、すべてが遅くなりましたか? 何が原因でしょうか?