我正在嘗試創建一個遊戲。有兩個球員由兩個矩形表示。兩個矩形不斷移動,並可使用WASD和上,下,左,右鍵重定向。無論走到哪裏,每個矩形都會留下自己的顏色。遊戲的目標是在一定的時間內爲你的顏色的大部分面板着色。我有一個想法,除了我製作遊戲的部分告訴我哪一部分是最常出現的顏色之外,應該怎麼做。它似乎並不存在這樣做,所以有辦法解決這個問題?如何在JPanel上找到主色?
回答
當比賽結束,您可以創建代碼類似面板的BufferedImage
:
Dimension size = panel.getSize()
BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
panel.paint(g2d);
然後你可以使用getRGB(...)
方法通過在BufferedImage
所有像素進行迭代。然後你跟蹤每個玩家的像素。
編輯:
前面板畫上一個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.
既然你知道你剛塗上你應該知道你的算法的預期輸出的矩形的大小。一旦它與硬編碼數據協同工作,您就可以隨意使用隨機圖紙對其進行測試,確信它可以正常工作。
我是這樣試過的。結果混淆了我,因爲它缺乏definiteness.'for的(INT I = 0; I <1000;我++){ \t \t \t \t對(INT J = 0;Ĵ<700; J ++){ \t \t \t \t \t int pixel = image.getRGB(i,j); \t \t \t \t \t如果(像素==新的色彩(255,0,0).getRGB()) \t \t \t \t \t \t P1 ++; \t \t \t \t \t如果(像素==新的色彩(0,255,0).getRGB()) \t \t \t \t \t \t P2 ++; \t \t \t \t \t} \t \t \t}'對不起,這是新的給我,所以我不知道這是否是正確的。 – ArcIX
@ArcIX 1)不要繼續創建新的Color對象。在循環外部創建紅色和綠色的Color對象,並在循環外部獲取其int值。然後在循環內部進行比較。 2)「我不確定是否正確。」 - 這就是你測試的原因。從一個小區域開始,可能是一個顏色的5x5矩形,看看結果是什麼。然後添加兩個區域。請參閱編輯。 – camickr
- 1. 如何在Mac上找到主密碼?
- 2. 找到主題的深色/淺色
- 3. 如何在運動圖像中找到JPanel內給定點的像素顏色?
- 4. 如何在JPanel上用Java繪製彩色圓圈?
- 5. 如何在JPanel上的JLabel上「繪製」?
- 6. 如何在JPanel(在JPanel)paint方法上添加圖像?
- 7. 如何在JPanel
- 8. 如何找到圖像中的主色調?
- 9. 如何找到在Linux上
- 10. 上找不到主機
- 11. 如何在給定的圖片上找到黃色物體?
- 12. 如何在另一個JPanel內的JPanel上繪製Graphics2D?
- 13. 如何將JPanel放在另一個JPanel上?
- 14. 如何在另一個JPanel內的JPanel上繪製形狀?
- 15. 如何找到在OSX上偵聽本地主機的進程?
- 16. 如何找到主鍵的對象是在軌道上
- 17. 如何在JPanel上畫圓? Java 2D
- 18. 如何在畫布上繪製JPanel?
- 19. 如何在JPanel上播放mp4視頻?
- 20. 如何在jpanel上繪製橢圓
- 21. 如何在JFrame上設置JPanel?
- 22. 如何使用JOgl在jPanel上繪圖
- 23. 如何在JPanel上添加選項卡
- 24. 如何在JPanel上使用滾動? (Swing)
- 25. 如何在JPanel上移動形狀?
- 26. 如何在JPanel上放置圖形?
- 27. 如何將圖像放在JPanel netbeans上?
- 28. 如何將JPanel從其他類包含到主
- 29. JPanel裏面的着色JPanel元素
- 30. 從陣列到JPanel的着色點
我不認爲你應該通過查看GUI來確定哪個玩家獲勝。 GUI應該只負責繪製結果。你應該有不同的方式跟蹤每個玩家繪製的區域,並用它來確定要繪製的內容。 – byxor