2013-01-03 70 views
0

我編寫了一個簡單的Java遊戲,其中屏幕上有兩個矩形,其中一個矩形移動,另一個保持靜止,移動的Rectangle隨鍵盤箭頭輸入移動,並且可以向上,向下,向左或向右移動。我有被畫我的矩形屏幕上的問題,我有我的變量設置,如下所示:Java,如何在我的屏幕上繪製矩形變量

float buckyPositionX = 0; 
    float buckyPositionY = 0; 
    float shiftX = buckyPositionX + 320;//keeps user in the middle of the screem 
    float shiftY = buckyPositionY + 160;//the numbers are half of the screen size 
//my two rectangles are shown under here 
    Float rectOne = new Rectangle2D.Float(shiftX, shiftY,90,90); 
    Float rectTwo = new Rectangle2D.Float(500 + buckyPositionX, 330 + buckyPositionY, 210, 150); 

,並在我的渲染方法(它包含所有我想要畫的東西在屏幕上),我已經告訴Java來畫我的兩個矩形:

public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{ 
     //draws the two rectangles on the screen 
     g.fillRect(rectOne.getX(), rectOne.getY(), rectOne.getWidth(), rectOne.getHeight()); 
     g.fillRect(rectTwo.getX(), rectTwo.getY(), rectTwo.getWidth(), rectTwo.getHeight()); 

    } 

但我正在逐漸fillRect下以下錯誤:

This method fillRect(float,float,float,float) in the type graphics is 
    not applicable for the arguments (double,double,double,double) 

這是混淆了我從我的理解它是什麼說的信息在fillRect中提供的應該是一切都是浮動的,那爲什麼它一直給我這個錯誤?

回答

2

這接縫是雙重價值:

rectOne.getX(), rectOne.getY(), rectOne.getWidth(), rectOne.getHeight() 

The methods return doubles. See here API

因爲你設置了浮點值,只需使用:

g.fillRect((float)rectOne.getX(), (float)rectOne.getY(), (float)rectOne.getWidth(), (float)rectOne.getHeight()); 
    g.fillRect((float)rectTwo.getX(), (float)rectTwo.getY(), (float)rectTwo.getWidth(), (float)rectTwo.getHeight()); 
+0

謝謝你這麼多,矩形現在畫上屏幕。 –

+0

是的,當你有機會時,請[接受](http://meta.stackexchange.com/a/65088/155831)答案。 @ MrSmith42接受一個答案有利於我們所有人。如果有人在未來尋找這個問題的答案,通過看到大的「嘀嗒」來知道答案「奏效」是值得的。回答問題在搜索中也很明顯。 –