坦克大战-day 2

游戏菜单的显示,以及游戏菜单的按键的控制

游戏被分成若干个游戏状态:

游戏菜单,游戏帮助,游戏关于,游戏中,游戏结束

在不同的状态下,绘制不同的内容,按键有不同的处理方式。

 

在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) {
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值