第八周:战斗模块

战斗模块代码实现

首先用Battel继承与 JFrame类

         class Battel extends JFrame {

         public Battel(){

                          //这个类的方法

                  }

}

然后新建三个Jpanel类

JPanel panelplayer=new JPanel(); //玩家人物所占的界面

           JPanel monsterplayer= new JPanel();//怪物AI所占的界面

    JPanel choose=new JPanel();//玩家能够选择的按钮信息

然后将按钮建立出来

JButton attact = new JButton("攻击");

         JButton prop = new JButton("道具");

         JButton leave = new JButton("逃跑");

  JButton skill = new JButton("武功");//

将choose面板的Layout型设置为GridLayout(1,4)

将按钮加入到选择面板中

            choose.add(attact);

            choose.add(prop);

            choose.add(skill);

    choose.add(leave);

再建立一个drawState继承与Jpanel类 用于显示人物和怪物的基本信息

    class drawState extends JPanel{

     Player p;

     Monster m;

    public void drawState(JPanel panelplayer,JPanel monsterplayer,Player player,Monster monster){

       p=player;

       m=monster;

       panelplayer.setLayout(new GridLayout(9,1));

       ImageIcon iconplayer =new ImageIcon("主角.png");

       JLabel a=new JLabel("当前HP/最大HP  "+player.getHp1()+"/"+player.Maxhp);

       JLabel b=new JLabel("名称: "+player.name);

       JLabel c=new JLabel("当前MP/最大MP  "+player.getMp1()+"/"+player.Maxmp);

       JLabel d=new JLabel("力量: "+player.strength);

       JLabel e=new JLabel("智力: "+player.intelligence);

       JLabel f=new JLabel("攻击力: "+player.attact);

       JLabel g=new JLabel("防御力: "+player.defence);

       JLabel h=new JLabel("等级: "+player.level1);

       JLabel i=new JLabel(iconplayer);

       panelplayer.add(i);

       panelplayer.add(b);

       panelplayer.add(a);

       panelplayer.add(c);

       panelplayer.add(d);

       panelplayer.add(e);

       panelplayer.add(f);

       panelplayer.add(g);

       panelplayer.add(h);  //主角状态栏显示;

       monsterplayer.setLayout(new GridLayout(9,1));

       ImageIcon iconmonster =new ImageIcon("使徒安图恩.png");

        JLabel a1=new JLabel("当前HP/最大HP  "+monster.getHp1()+"/"+monster.Maxhp);

        JLabel b1=new JLabel("名称: "+monster.name);

        JLabel c1=new JLabel("当前MP/最大MP  "+monster.getMp1()+"/"+monster.Maxmp);

        JLabel d1=new JLabel("力量: "+monster.strength);

        JLabel e1=new JLabel("智力: "+monster.intelligence);

        JLabel f1=new JLabel("攻击力: "+monster.attact);

        JLabel g1=new JLabel("防御力: "+monster.defence);

        JLabel h1=new JLabel("等级: "+monster.level);

        JLabel i1=new JLabel(iconmonster);

        monsterplayer.add(i1);

        monsterplayer.add(b1);

        monsterplayer.add(a1);

        monsterplayer.add(c1);

        monsterplayer.add(d1);

        monsterplayer.add(e1);

        monsterplayer.add(f1);

        monsterplayer.add(g1);

        monsterplayer.add(h1);

        //怪物状态栏显示*

    }

 }

//运行结果如图

接下来就是按钮的功能实现

         用最简单逃跑按钮来举例

具体代码

//逃跑的机制是用了一个随机数产生器,当产生的随机数小于一个数值时,能够逃跑,当不满足上述条件时,则逃跑失败,轮到怪物出招

         class ButtonActionleave implements ActionListener{

     JFrame jf;

     String definition;

     JPanel x,y;

     Player p;

     Monster m;

     public ButtonActionleave(JPanel panelplayer,JPanel monsterplayer,Player player,Monster monster,JFrame frame){

        this.jf=frame;

        p=player;

        m=monster;

        x=panelplayer;

        y=monsterplayer;

     }

     public void actionPerformed(ActionEvent e) {

        Random rand=new Random();

        int i=rand.nextInt(10);

        if(i<=6)

        {definition="逃跑成功";

        new Textdialog(definition);

           panel.lock=0;

           jf.dispose();}

        else

        {     definition="逃跑失败,请接受"+m.name+"的怒火";

              new Textdialog(definition);

               monsterAttact Attact=new monsterAttact();

              Attact.monsterAttact(x,y,p,m,jf);

        }

       }

 }

如图

 

posted on 2016-04-19 17:10  2014551530刘迪  阅读(209)  评论(0)    收藏  举报

导航