2017-12-08 3 views
1

스위치를 통해 for 루프의 첫 번째 반복에 대해서만 특정 이미지를 설정하려고합니다. case 'f'에 대해 첫 번째 반복에서 다른 이미지를 추가하고 싶습니다.Switch Java 첫 번째 문장에 대한 If 문 만들기

어떻게하면됩니까? 스위치 내에서 추적 할 수 있습니까?

for (char c : symbols) { 
      switch (c) { 
      case 'X': 
       g2.setColor(Color.BLACK); 
       g2.drawImage(wallImg, x, y, width, height, null); 
       break; 
      case 's': 
       g2.setColor(Color.GREEN); 
       g2.drawImage(snakeImg, x, y, width, height, null); 
       break; 
      case 'f': 
       g2.setColor(Color.ORANGE); 
       g2.drawImage(burgerImg, x, y, width, height, null); 
       break; 
      case '.': 
       g2.setColor(Color.WHITE); 
       g2.fillRect(x, y, width, height); 
       break; 
      case '\n': 
       y += height; 
      } 
+0

스위치 전에 부울 플래그를 추가 그런 다음 if (boolean flag)를 true/false인지 확인한 다음, true 일 경우 else로 이동하여 다른 이미지를로드 할 수 있습니다. – Artemis

+0

반복 횟수는 페인팅 프로세스의 일부가 아니어야합니다. 페인팅이 언제, 어떻게 발생하는지 제어 할 수 없기 때문입니다. 오브젝트 상태의 변경은 게임 루프에 있어야합니다 (스윙 타이머). 페인팅 메서드는 모델의 상태를 반영해야하지만 변경할 수는 없습니다. –

+0

이것은 해결책으로 표시하지 않은 @ user5402 문제를 해결 했습니까? 어떤 문제가 발생 했습니까? – Artemis

답변

1

아직 여부를 반복했는지 확인하기 위해 플래그를 추가,이처럼 설명하기 위해 스위치의 경우에 if 문을 채택 :

 boolean flag = false;  

     for (char c : symbols) { 
      switch (c) { 
      case 'X': 
       g2.setColor(Color.BLACK); 
       g2.drawImage(wallImg, x, y, width, height, null); 
       break; 
      case 's': 
       g2.setColor(Color.GREEN); 
       g2.drawImage(snakeImg, x, y, width, height, null); 
       break; 
      case 'f': 
       //check to see if your flag is true/false 
       if(flag){ 
        g2.setColor(Color.ORANGE); 
        g2.drawImage(burgerImg, x, y, width, height, null); 
       }else{ 
        //set first image 
        flag = true; 
       } 
       break; 
      case '.': 
       g2.setColor(Color.WHITE); 
       g2.fillRect(x, y, width, height); 
       break; 
      case '\n': 
       y += height; 
       break; 
     } 
+0

@Artemis를 통해 플래그가 항상 false가 아니겠습니까? – user5402

+0

@ user5402 else 문에서'flag = true'를 설정하고 다시 false로 설정하지 않았기 때문에 no입니다. – Artemis

+0

'boolean flag' 대신'Boolean flag' (대문자 ** B **)를 사용하는 이유는 무엇입니까? b **)? –