2017-01-14 4 views
-1

私はJavaゲームをプログラミングしています。ほとんど完了していますが、それは私にエラーを与えています(なぜそれが起こるのか分かりませんが、コードは大丈夫です)。 エラー。Javaゲームエラー

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: projetofinal.ProjetoFinalv2.movimento 
    at projetofinal.ProjetoFinalv2.main(ProjetoFinalv2.java:26) 
C:\Users\Francisco\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 2 seconds) 

ここでは、コードです:

package projetofinal; 
import java.util.Scanner; 
import java.util.Random; 

public class ProjetoFinalv2 { 

    static char[][] tabuleiro; 
    static int x, y, jogadorX, jogadorY, pontos; 
    static char direction; 
    static boolean inGame = true; 

    public static void main(String[] args) { 

     x = 5; 
     y = 5; 
     tabuleiro = new char[x][y]; 
     jogadorX = 0; 
     jogadorY = 4; 
     pontos = 7; 
     quadro(); 
     while(inGame == true) 
     { 
     customcreator(); 
     Scanner scan = new Scanner(System.in); 
     String resposta = scan.nextLine(); 
     movimento(resposta.charAt(0)); 
     } 
    } 

     public static void placePot() 
    { 
     boolean notDone = true; 
     while(notDone) 
     { 
     int tabX = random(0, 4); 
     int tabY = random(0, 4); 
     if(tabuleiro[tabX][tabY] == '.') 
     { 
      tabuleiro[tabX][tabY] = 'P'; 
      notDone = false; 
     } 
     } 
    } 

    public static boolean bomba(int x, int y) 
    { 
     if(tabuleiro[x][y] == 'B') 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public static boolean win() 
    { 
     if(tabuleiro[jogadorX][jogadorY] == 'F') 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public static boolean gameover() 
    { 
     if(pontos > 0) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 

    public static int potepoints(int x, int y) 
    { 
     if(tabuleiro[x][y] == 'P') 
     { 
      return random(3,5); 
     } 
     else 
     { 
      return -1; 
     } 
    } 

     public static void quadro() 
    { 
     for(int linha = 0; linha < x; linha++) 
     { 
      for(int vertical = 0; vertical < y; vertical++) 
     { 
      tabuleiro[linha][vertical] = '.'; 
     } 
     } 

     //Por as bombas na posição correta 

     for(int i = quantos(); i>0; i--) 
     { 
      boolean tab = true; 
      while(tab) 
      { 
      int tabX = random(1, 3); 
      int tabY = random(1, 2); 
      if(tabuleiro[tabX][tabY] != 'B') 
      { 
       tabuleiro[tabX][tabY] = 'B'; 
       tab = false; 
      } 
      } 
     } 
     //Mete o pote que da pontos 
     placePot(); 
    } 
    public static void tabuleirocreator() 
    { 
     playercreator(); 
     for(int linha = 0; linha < y; linha++) 
     { 
      for(int vertical = 0; vertical < x; vertical++) 
     { 
      System.out.print(tabuleiro[vertical][linha]); 
     } 
      System.out.print("\n"); 
     } 
    } 

    public static void playercreator() 
    { 

     tabuleiro[jogadorX][jogadorY] = 'J'; 

    } 

    public static void customcreator() 
    { 
    tabuleiro[0][4] = 'I'; 
    tabuleiro[4][0] = 'F'; 
    tabuleirocreator(); 
    } 

    public static int random(int min, int max) 
    { 
    Random generator = new Random(); 
    int Num = generator.nextInt((max - min) + 1) + min; 
    return Num; 
    } 

    public static int quantos() 
    { 
     return random(2, 3); 
    } 
} 


    //Ciclo do jogo 
    public static void movimento(char newDirection) 
    { 
     if(newDirection == 'w' || newDirection == 'W') 
     { 
      if(jogadorY > 0) 
      { 
       tabuleiro[jogadorX][jogadorY] = '.'; 
      jogadorY -= 1; 
      pontos--; 
      } 
     } 
     else 
     { 
      if(newDirection == 'a' || newDirection == 'A') 
      { 
       if(jogadorX > 0) 
       { 
       tabuleiro[jogadorX][jogadorY] = '.'; 
       jogadorX -= 1; 
       pontos--; 
       } 
      } 
      else 
      { 
       if(newDirection == 's' || newDirection == 'S') 
       { 
        if(jogadorY < 4) 
        { 
         tabuleiro[jogadorX][jogadorY] = '.'; 
        jogadorY += 1; 
        pontos--; 
        } 
       } 
       else 
       { 
        if(newDirection == 'd' || newDirection == 'D') 
        { 
         if(jogadorX < 4) 
         { 
         tabuleiro[jogadorX][jogadorY] = '.'; 
         jogadorX += 1; 
         pontos--; 
         } 
        } 
        else 
        { 
         System.out.println("Wrong direction!"); 
        } 
       } 
      } 
     } 

     if(bomba(jogadorX, jogadorY)) 
     { 
      pontos = 0; 
     } 
     int tab = potepoints(jogadorX, jogadorY); 
     if(tab != -1) 
     { 
      pontos += tab; 

     } 
     if(win()) 
     { 
      System.out.println("You won"); 
      inGame = false; 
     } 
     if(gameover()) 
     { 
      System.out.println("Game Over"); 
      inGame = false; 
     } 


    } 







    ////////////////////////////////////////////////////////////// 

は、私は質問が悪い場合、私は申し訳ありませんが、Javaでかなりnoobのだ(私は最近学び始めた)そう。

+0

エラーでコンパイルされたクラスを使用しようとしています。コンパイル中にメッセージを分析する –

+1

whileループの各反復で**新しい**スキャナを作成しています - なぜですか?それは不要で、潜在的に危険なものでもありません。そして、ええ、コンパイルされないコードを実行しようとしないでください。コンパイラのエラーメッセージを読み、それを最初に修正してください。メッセージは通常理解できます。 –

+1

@LewBloch:はい、それは**違いがあります**。通常、コンパイラのエラーメッセージは、JVMのものよりも理解しやすい**ロット**です。はい、我々は彼に上記の問題の解決策を与えることができますが、コンパイラのメッセージを最初に眺める習慣を身に付けることができれば、この問題だけでなく将来の問題も解決します。彼は少なくともコンパイラのエラーメッセージに質問を投稿してください。そうすれば、彼はもっと良く理解できるようになるでしょう。 –

答えて

-1

コンパイラがprojetofinal.ProjetoFinalv2.movimentoの定義、26行目のシンボル:movimento(resposta.charAt(0));を見つけられないことを示すメッセージが表示されます。しかし、movimentoは、の中にと定義されていません。クラス定義は、末尾の中括弧(})で終了し、孤立したメソッド定義の直前には、movimentoがあります。メソッド定義を呼び出し元にアクセスできなくなるだけでなく、クラス外でメソッドや変数を定義することはまったく違法です。

+1

downvoteの場合、役に立つコメントを残してください。 –

+0

正しい方法は何ですか?どのように私はそれを修正する? – FRP72

+1

メソッド 'quantos'と' movimento'の間にファイルの終わりまで表示される右中括弧 '}'を移動してください。このように、 'movimento()'はクラス内にあるように見えますが、 –

関連する問題