2014-01-17 5 views
0

У меня есть игра Simon, над которой я работаю, и некоторое время отлаживалась, прежде чем двигаться дальше. Только эта одна ошибка осталась до сих пор; Ошибка компилятора (NetBeans IDE); в частности «Не удается найти символ MenuPanel; Класс: BorderPanel». Я знаю, что это не входит в этот класс, но я не совсем уверен, как это сделать. Соответствующий код:Java- Невозможно найти символ (swing)

package simon; 

import java.util.*; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.Color.*; 


/** 
* Main Class 
* @author Chris Mailloux 
*/ 
public class Simon 
{ 
    // Variable declarations. 
    public static final String[] colors = {"Green", "Red", "Yellow", "Blue"}; 
    public static ArrayList<String> pattern = new ArrayList<String>(); 
    public static int currentScore = 0; 
    public static int iterator = 0; 
    public static boolean isPlayerTurn = false; 
    // PLACEHOLDER FOR HIGHSCORE RETRIEVAL FROM FILE 
    public static int highScore = 0; // TEMPORARY 

    public static void main (String[] args) 
    { 
     GameWindow window = new GameWindow(); 
     window.setVisible(true); 
     window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 

/** 
* Class for main game window. 
* @author Chris 
*/ 
class GameWindow extends JFrame 
{ 
    GameWindow() 
    { 
     // Set basic properties of frame. 
     setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); 
     setTitle("Simon"); 
     setResizable(true); 
     setLocation(DEFAULT_HORIZONTAL_LOCATION, DEFAULT_VERTICAL_LOCATION); 
     // PLACEHOLDER FOR IMAGE ICON 

     // Adding Menu Panel 
     MenuPanel menuPanel = new MenuPanel(); 
     add(menuPanel); 

     // Adding buttons panel. 
     ButtonsPanel buttonsPanel = new ButtonsPanel(); 
     add(buttonsPanel); 

     // Adding Border layout helper panel. 
     BorderPanel borderPanel = new BorderPanel(); 
     add(borderPanel); 

     // Setting grid layout (with spaces) 
     buttonsPanel.setLayout(new GridLayout(2, 2, 20, 20)); 

     // Setting background color of main panel to black. 
     buttonsPanel.setBackground(Color.black); 
    } 
    // Declaring window positioning constants. 
    public static final int DEFAULT_WIDTH = 800; 
    public static final int DEFAULT_HEIGHT = 800; 

    // TEMPORARY PLACEHOLDER FOR SCREENSIZE CALCULATIONS 
    public static final int DEFAULT_HORIZONTAL_LOCATION = 0; 
    public static final int DEFAULT_VERTICAL_LOCATION = 0; 
} 

/** 
* Class to hold the buttonsPanel 
* @author Chris 
*/ 
class ButtonsPanel extends JPanel 
{ 
    public static JButton greenButton = new JButton(); 
    public static JButton redButton = new JButton(); 
    public static JButton yellowButton = new JButton(); 
    public static JButton blueButton = new JButton(); 

    ButtonsPanel() 
    { 
     // Setting background color of buttons. 
     greenButton.setBackground(Color.GREEN); // NEED COLOR CONSTANTS 
     redButton.setBackground(Color.RED); 
     yellowButton.setBackground(Color.YELLOW);  
     blueButton.setBackground(Color.BLUE); 

     // Add buttons to panel. (In order) 
     add(greenButton); 
      add(redButton); 
     add(yellowButton); 
      add(blueButton); 

     // Creating ActionListeners for 4 main buttons. 
     ActionListener greenAction = new ActionListener() 
     { 
      public void actionPerformed(ActionEvent event) 
      { 
       greenClicked(); 
      } 
     }; 

     ActionListener redAction = new ActionListener() 
     { 
      public void actionPerformed(ActionEvent event) 
      { 
       redClicked(); 
      } 
     }; 

     ActionListener yellowAction = new ActionListener() 
     { 
      public void actionPerformed(ActionEvent event) 
      { 
       yellowClicked(); 
      } 
     }; 

     ActionListener blueAction = new ActionListener() 
     { 
      public void actionPerformed(ActionEvent event) 
      { 
       blueClicked(); 
      } 
     }; 

      // Associate actions with buttons. 
     greenButton.addActionListener(greenAction); 
     redButton.addActionListener(redAction); 
     yellowButton.addActionListener(yellowAction); 
     blueButton.addActionListener(blueAction); 
    } 

     // Handling button activations. 
     public static void greenClicked() 
     { 
      // TODO 
     } 

     public static void redClicked() 
     { 
      // TODO 
     } 

     public static void yellowClicked() 
     { 
      // TODO 
     } 

     public static void blueClicked() 
     { 
      // TODO 
     } 
} 
/** 
* Menu buttons panel. 
* @author Chris Mailloux 
*/ 
class MenuPanel extends JPanel 
{ 
    public MenuPanel() 
    { 
     setBackground(Color.BLACK); 

     // Menu panel buttons. 
     JButton startButton = new JButton("Start"); 
     JButton scoreDisplay = new JButton(String.valueOf(Simon.currentScore)); 
     JButton highScoreDisplay = new JButton(String.valueOf(Simon.highScore)); 
     add(startButton); 
     add(scoreDisplay); 
     add(highScoreDisplay); 
     scoreDisplay.setBackground(Color.BLACK); 
     highScoreDisplay.setBackground(Color.BLACK); 
     startButton.setBackground(Color.BLUE); 
     scoreDisplay.setEnabled(false); 
     scoreDisplay.setEnabled(false); 
     // ActionListeners for menu buttons. 
     ActionListener startButtonAction = new ActionListener() 
     { 
      public void actionPerformed(ActionEvent event) 
      { 
       Game.startGame(); 
      } 
     }; 
     startButton.addActionListener(startButtonAction); 
    } 
} 

/** 
* Border Panel support class. 
* @author Chris Mailloux 
*/ 
class BorderPanel extends JPanel 
{ 
    BorderPanel() 
    { 
     setLayout(new BorderLayout()); 
     add(menuPanel, BorderLayout.NORTH); 
    } 
} 
/** 
* Main game logic class. 
* @author Chris 
*/ 
class Game extends Simon // Extends to allow to inherit variables. 
{ 
// Resets variables for new game. 
public static void startGame() 
{ 
    isPlayerTurn = false; 
    pattern.clear(); 
    currentScore = 0; 
    iterator = 0; 
    gamePlay(); // Starts game 
} 

public static void gamePlay() 
{ 
    if (isPlayerTurn = false) 
    { 
     computerTurn(); 
    } 
    else 
    { 
     playerTurn(); 
    } 
} 

public static void computerTurn() 
{ 
    ButtonsPanel.greenButton.setEnabled(false); 
    ButtonsPanel.redButton.setEnabled(false); 
    ButtonsPanel.yellowButton.setEnabled(false); 
    ButtonsPanel.blueButton.setEnabled(false); 
    iterator = 0; // So CPU can use iterator to show pattern. 
    int randInt = (int) Math.random() * 4; 
    String randColor = colors[randInt]; 
    pattern.add(new String(randColor)); 
    showPattern(); 
} 

public static void playerTurn() 
{ 
    iterator = 0; 
    ButtonsPanel.greenButton.setEnabled(true); 
    ButtonsPanel.redButton.setEnabled(true); 
    ButtonsPanel.yellowButton.setEnabled(true); 
    ButtonsPanel.blueButton.setEnabled(true); 
} 

/** 
* Handles scoring and checks inputs for correctness. 
* @author Chris Mailloux 
*/ 
public static void check() 
{ 
    if(lastInput == pattern.get(iterator)) 
    { 
     iterator++; 
     if(iterator > currentScore) 
     { 
      currentScore++; 
      if(currentScore > highScore) 
      { 
       highScore++; 
       // PLACEHOLDER TO WRITE HIGHSCORE TO FILE. 
      } 
     } 
    } 
    else 
    { 
     gameOver(); 
    } 
} 

public static void showPattern() 
{ 
    int j = 0; 
    while (j < pattern.size()) 
    { 
     String showerHelper = pattern.get(j); // Helper variable. 
     switch (showerHelper) 
     { 
      case "Green" : ButtonsPanel.greenClicked(); 
      case "Red" : ButtonsPanel.redClicked(); 
      case "Yellow" : ButtonsPanel.yellowClicked(); 
      case "Blue" : ButtonsPanel.blueClicked(); 
      break; // Fallthrough handler. 
      default: System.out.println("Error: Invalid value for pattern" 
        + " ArrayList, or improper storage of variable in the" 
        + " showerHelper variable."); 
     } 
     j++; 
    } 
} 

    public static void gameOver() 
    { 
     // TODO 
    } 
} 
+1

За исключением большого количества недостающих импортов и, по крайней мере, одного отсутствующего ... что-то ('menuPanel' в' BorderPanel'). –

+0

Мой импорт находится вверху. Я отправлю остальную часть кода. Один сек ... – user3202949

+0

Код теперь обновляется. – user3202949

ответ

0

Если ваш опубликованный код завершен, вам, скорее всего, потребуется инструкция import для отсутствующего класса.

import <path-to-borderpanel>.BorderPanel; 

Похоже, из кода, который BorderPanel (наряду с другими) может быть в пакете по умолчанию (то есть - не package заявления в верхней части файла, в котором они определены). В этом случае вам нужно будет поместить их в пакет, чтобы они могли быть доступны другим, а не по умолчанию пакетам. Если вы разместите их в пакете simon, вам не нужно будет импортировать их вообще.

+0

Мне не нужно импортировать класс, созданный в программе. Ой, подождите, простите, забыли нижнюю половину кода. один час ха-ха-богу уже поздно. – user3202949

+0

Извините, что код, теперь все там, мои навыки copypasta нуждаются в работе. – user3202949

+0

@ user3202949 Так это все один большой файл? –

2

В вашем классе BorderPanel вы используете переменную menuPanel, которая ... не существует.

add(menuPanel, BorderLayout.NORTH); 

Именно поэтому это говорит вам, что это недостающий символ.

Возможно, вы хотели создать новый экземпляр MenuPanel?

add(new MenuPanel(), BorderLayout.NORTH); 
+0

Просто забыл добавить весь код, все должно быть. – user3202949

+0

Должно быть где? Это не так, и ошибка, которую вы получаете, является именно тем, что может вызвать. –

+0

Этот код в игреWindow Constructor должен создавать эту переменную, хотя, если это не так? MenuPanel menuPanel = new MenuPanel(); add (menuPanel); – user3202949

Смежные вопросы