Change the View
drawing and updating
1. The game will have 3 states: MENU, GAME, and END. These are repesented by final int variables that you must create in the GamePanel class. Their names are captialized since their values will not change:
final int MENU = 0;
final int GAME = 1;
final int END = 2;
2. The game will keep track of which state it is in, via an int variable called currentState. Declare and initialize this variable as follows:
int currentState = MENU;
3. Create 3 void methods for updating the game in each state:
updateMenuState() { }
updateGameState() { }
updateEndState() { }
4. Create 3 void methods for drawing the game in each state. Note: these methods need a Graphics parameter because they will draw objects onto the panel's Graphics (like the paintComponent method).
drawMenuState(Graphics g) { }
drawGameState(Graphics g) { }
drawEndState(Graphics g) { }
6. In the paintComponent() method, remove the code that draws a rectangle, and replace it with an if/else block that will check the currentState variable. Call the appropriate draw method inside the if/else block as shown.
if(currentState == MENU){
drawMenuState(g);
}else if(currentState == GAME){
drawGameState(g);
}else if(currentState == END){
drawEndState(g);
}
Note: pass the Graphics object to each draw method.
7. In the drawMenuState() method, fill the game window with a blue rectangle using the following code:
g.setColor(Color.BLUE); g.fillRect(0, 0, LeagueInvaders.WIDTH, LeagueInvaders.HEIGHT);
Similarly, fill the game window with black in the drawGameState() method and red in the drawEndState()method.
TESTING
8. Run the program. The game window should be filled by a blue rectangle.