안녕하세요. 총알 개체가 배열되어 있습니다. 글 머리 기호 개체 isAlive가 false로 설정되어 있습니다. 스페이스 버튼 (글 머리 기호 실행)을 클릭하지 않고 코드를 실행하고 배열 객체 인 isAlive var를 인쇄하면 모두 false로 인쇄됩니다.배열 요소가 올바르게 설정되지 않았습니다.
글 머리 기호가 화면에 나타나고 올바르게 이동하면 isAlive 변수를 나타내는 글 머리 기호 배열을 인쇄 할 때 모두 동일한 x/y 위치로 true로 설정됩니다.이 공간을 클릭하면 버튼을 두 번 두 번 탄환이 나타나고 정상적으로 움직이지만 배열을 인쇄하면 같은 x/y 위치 (화면의 첫 번째 글 머리 기호)와 함께 처음 10 개의 요소가 표시되고 다음 10 개는 동일한 x/y 위치 (화면의 두 번째 글 머리 기호)
더 이상 스페이스 바를 누르면 새 글 머리 기호가 추가되지 않습니다. 여기 가 여기에
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 ++;
}
과 fireButton()에 대한의 코드는 그것 KeyPressedMethod에 불렸다의
case KeyEvent.VK_SPACE:
fireBullet();
break;
내가 잘못거야 어디
사람이 볼 수있는 존재가 코드와 함께 장난? 그리고 지금 내 머리를하고있는 동안 :
편집 : 나는 여기에 할 수있는 모든 질문에 대답 할게 :) 1) currentBullet은 개인 클래스 멤버이며 처음에는 0으로 초기화되고 각 b에 대해 fireBullet() 메서드에서 증가됩니다. ullet 거짓
3)로 가능한지 20까지 소성 한 다음 세트 I 총알 배열 iniatilise 때마다 element.Each 탄환 생성자 새로운 총알()을 할당) 0
2 리셋 이 화면 4) 여기를 떠날 때 총알 var에으로 isAlive이 전체
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
에 keypressed를 방법을 false로 다시 설정 나는 그것이 총알을 그리기하지만 위에 그 중 10 스무을 받고있다으로 렌더링이 괜찮 생각 서로의 코드가 실행될 때 두 개의 글 머리가 화면 위쪽으로 움직이는 것을 볼 수 있습니다.
문제는 스페이스 바 프레스 당 하나의 살아있는 총알이 있어야하지만 20 개의 총알이 살아남 으면 눌러야한다는 것입니다.
두 번째 편집 : 현재 루프가 끝날 때 총알을 인쇄하고 올바르게 증가하는 것처럼 보입니다. 이는 모든 스페이스 바를 눌러 fireBullet() 메서드가 호출되고 있음을 나타냅니다. 모든 언론
'keyPressed' 메쏘드의 전체를 보여줄 수 있습니까? – NPE
또한,'fireBullet()'의 시작 부분에 메시지를 출력하고, 스페이스 바를 누를 때마다 메소드가 정확히 한번 호출되는지를보십시오. – NPE
및 currentBullet을 어떻게 설정합니까? –