嗨我有一個子彈對象數組。我有子彈對象isAlive var設置爲false。 如果我不點擊空格按鈕(會觸發項目符號)而運行代碼,並打印出數組對象isAlive var,並將它們全部打印爲假(應該如此)。未正確設置數組元素
如果我點擊空格按鈕一旦子彈出現在屏幕上並正確移動,但是當我打印出顯示isAlive var的子彈數組時,它們都被設置爲true,並且具有相同的x/y位置。如果單擊空格按鈕兩次2個子彈出現並正常行進,但是當我打印數組時,它顯示前十個元素爲活着的,具有相同的x/y位置(屏幕上的第一個子彈),接下來的十個元素也活着,具有相同的x/y位置(屏幕上的第二顆子彈)
再次按下空格鍵不會添加新的子彈。 這裏;公司爲fireButton()的代碼
public void fireBullet(){
if(currentBullet > BULLETS -1){
currentBullet = 0;
}
if(bullet[currentBullet].isAlive()==false){
bullet[currentBullet].setAlive(true);
bullet[currentBullet].setxPos(ship.getxPos());
bullet[currentBullet].setyPos(ship.getyPos());
}
currentBullet ++;
}
,並在這裏的是其在KeyPressedMethod稱爲
case KeyEvent.VK_SPACE:
fireBullet();
break;
任何人都可以看到我要去哪裏錯是與代碼搞亂?一段時間了,它在我的腦海裏:)
編輯:我會回答所有的問題,如果我可以在這裏:) 1)currentBullet是一個私人類成員,並初始化爲0,然後在每個b的fireBullet()方法中增加比奇山友燒製到20,然後復位爲0。
2)當我iniatilise子彈陣列I分配一個新子彈()到每個element.Each子彈構造函數設置的IsAlive到假
3)子彈VAR的IsAlive被設置爲false,當它離開屏幕 4)這裏的的keyPressed方法完全
public void keyPressed(KeyEvent k) {
int keyCode = k.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_A:
//move ship left
if(ship.getxPos()<20){
ship.setxPos(20);
}else
ship.setxPos(ship.getxPos()-1);
break;
case KeyEvent.VK_D:
if(ship.getxPos()>1260){
ship.setxPos(1260);
}else
ship.setxPos(ship.getxPos()+1);
break;
case KeyEvent.VK_SPACE:
fireBullet();
break;
}
}//end keypressed event
我認爲渲染是好的,因爲它是繪製子彈,但在上面畫他們的10,二彼此,所以當代碼運行時,你只能看到兩顆子彈在屏幕上移動,
問題是,每個空格鍵按下時應該只有一個活着的子彈,但是一旦所有20個子彈都被設置爲活動,就按下它。
第二次編輯:我在遊戲循環結束時打印出當前項目符號,它似乎正確遞增,表明fireBullet()方法正在每個空格鍵上被調用,似乎正在填充活動項目符號的數組每次按
你能向我們展示你的'keyPressed'方法嗎? – NPE 2013-03-01 15:26:11
另外,嘗試在'fireBullet()'開始時打印出一條消息,並且每次按空格鍵時看看該方法是否只被調用一次。 – NPE 2013-03-01 15:26:58
和你如何設置currentBullet? – 2013-03-01 15:27:30