2017-12-08 4 views
1

スイッチを介してforループの最初の反復に対してのみ特定のイメージを設定しようとしています。 case 'f'については、最初の繰り返しで別の画像を追加したいと思います。スイッチ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であるかどうかを確認します。そうであれば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でもフラグは常に偽ではありませんか? – user5402

+0

@ user5402 else文に 'flag = true'を設定して、それを偽に戻さないため、 – Artemis

+0

' boolean flag'ではなく 'Boolean flag'(大文字** B **)を使用していますb **)? –

関連する問題