2016-12-04 5 views
-1

ゲームを作成しようとしています。 2つの長方形で表される2人のプレーヤーが存在します。 2つの長方形は連続的に移動し、WASDと上、下、左、右のキーを使用してリダイレクトできます。各矩形は、どこに行くにしても、独自の色の跡を残します。ゲームの目標は、時間制限の下であなたの色でパネルの大半を着色することです。私はゲームを作る部分以外のすべてのことをどのように行うのか考えています。どの色が最も出現しているか教えてください。それはこれを行う方法が存在するようには見えないので、これの周りに道がありますか?JPanelで支配的な色を見つけるには?

+0

GUIを見て、どのプレーヤーが勝っているかを判断する必要はありません。 GUIは、結果をペイントする責任しか負いません。各プレイヤーがペイントした領域をトラッキングする別の方法を用意し、ペイント対象を決定するために使用する必要があります。 – byxor

答えて

0

ゲームはあなたのようなコードの何かをパネルのBufferedImageを作成することができます終了:次に、あなたがgetRGB(...)メソッドを使用してBufferedImage内のすべてのピクセルを反復処理することができます

Dimension size = panel.getSize() 
BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB); 
Graphics2D g2d = image.createGraphics(); 
panel.paint(g2d); 

。次に、各プレーヤーのピクセルを追跡します。

編集:あなたはハードあなたのアルゴリズムが正しく動作しているかどうかを確認するために、いくつかの絵をコーディングすることができます

BufferedImageの上にパネルを塗装する前に。例えば

//panel.paint(g2d); 
g2d.setColor(Color.RED); 
g2d.fillRect(0, 0, 5, 5); 
g2d.setColor(Color.GREEN); 
g2d.fillRect(20, 20, 10, 10); 
// now test your algorithm. 

あなたはちょうどあなたがあなたのアルゴリズムの期待される出力を知っている必要があります塗装矩形のサイズを知っているので。ハードコードされたデータで動作したら、それが正常に動作していることをあなたのランダムな図面でテストします。

+0

このように試しました。以下のために{ \t \t \t \t結果が原因definiteness.'forの欠如(私は++;;私は1000年の ArcIX

+0

@ArcIX 1)新しいColorオブジェクトの作成を続けないでください。ループ外で赤と緑のColorオブジェクトを作成し、int値をループ外に取得します。ループ内で比較を行うだけです。 2)「それが正しいかどうか分からない」 - それがあなたがテストをしている理由です。 1つの色の5×5矩形の小さな領域から始め、結果が何かを確認します。次に、2つの領域を追加します。編集を参照してください。 – camickr

関連する問題