游戏菜单的显示,以及游戏菜单的按键的控制
游戏被分成若干个游戏状态:
游戏菜单,游戏帮助,游戏关于,游戏中,游戏结束
在不同的状态下,绘制不同的内容,按键有不同的处理方式。
在Constant中定义游戏菜单的状态。
public static final String[] MENUS={
"开始游戏",
"继续游戏",
"游戏帮助",
"游戏关于",
"退出游戏"
};
public static final Font GAME_FONT =new Font ("宋体", Font.BOLD,24);
用画笔绘制游戏菜单。
package game;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import static util.Constant.*;
public class GameFrame extends Frame {
public static int gameState;
public GameFrame() {
initFrame();
initEventListener();
initGame();
}
private void initGame(){
gameState=STATE_MENU;
}
private void initFrame(){
setTitle(GAME_TITLE);
setBounds(FRAME_X,FRAME_Y,FRAME_WIDTH, FRAME_HEIGHT);
setVisible(true);
setResizable(false);
repaint();
}
private void initEventListener(){
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void update(Graphics g)
{
switch (gameState)
{
case STATE_MENU:
drawMenu(g);
break;
case STATE_ABOUT:
drawAbout(g);
break;
case STATE_HELP:
drawHelp(g);
break;
case STATE_RUN:
drawRun(g);
break;
case STATE_OVER:
drawOver(g);
break;
}
}
private void drawMenu(Graphics g)
{
g.setFont(GAME_FONT);
//绘制黑色的背景
g.setColor(Color.black);
g.fillRect(0,0,FRAME_WIDTH,FRAME_HEIGHT );
final int STR_WIDTH=76;
int x=FRAME_WIDTH-STR_WIDTH>>1;
int y=FRAME_HEIGHT/3;
//行间距
final int DIS=50;
//绘制白字
g.setColor(Color.white);
for (int i=0;i<MENUS.length;i++)
{
g.drawString(MENUS[i],x,y+DIS*i);
}
}
private void drawAbout(Graphics g) {
}
private void drawRun(Graphics g) {
}
private void drawOver(Graphics g) {
}
private void drawHelp(Graphics g) {
}
}