JavaJoop05特兵战队项目(完整)

本任务要求完成“特种部队”游戏开发,本游戏为枪战类游戏,包含玩家初始化、装配枪弹、双方对战等过程环节,在双方交战中,先打败对手一方获胜。以下通过三个阶段完成本实战任务

练习一一设计类结构并完成编码

张需求描述 玩家初始化。进入游戏后,玩家可根据提示信息录入个人昵称并选择对手,设置血量装配枪弹。装配机枪需要安装弹夹,弹夹需要上弹,为游戏双方装配枪弹之后让玩家持枪,战前准备完成,在控制台显示玩家信息 双方对战。每个回合交战双方依次向对方射击,输出信息“XX向XX开了一枪”。如果机枪未装配弹夹,则输出“枪械没有弹夹,放了一个空枪。”每发子弹的伤害值为 1~15的随机数击中对方后,对方将计算伤害值,损失与伤害值等值的血量。每个回合结束后,计算双方剩余血量,输出弹夹状态(子弹盈余/弹夹容量)、玩家信息,并可选择是否继续对战。如果双方有 一方血量为0,则结束游戏。

子弹类
 public class Bullet {
     public void hitEnemy(Player enemy){
         int hurt=(int)(Math.random()*20+1);
         enemy.damage(hurt);
     }
 }
弹夹类

public class Clip {
    private     Bullet[]magazine;//弹仓
    private int capacity=30;//弹夹容量
    private int surplus=0;//子弹盈余
    public Clip(){this(30);}
    public Clip(int capacity){
        this.magazine=new Bullet[capacity];
        this.surplus=0;
    }
    //装子弹
    public void pushBullet(Bullet bullet){
        if (surplus==capacity){
            System.out.println(">>>>>弹夹已满");
            return;
        }
        magazine[surplus]=bullet;
        surplus++;
    }
    //卸子弹
    public Bullet popBullet(){
        if (surplus==0){
            System.out.println(">>>>>>弹夹已空");
            return null;
        }
        Bullet bullet=magazine[surplus-1];
        magazine[surplus-1]=null;
        surplus--;
        showClip();
        return bullet;
    }
    public void showClip(){
        System.out.println(">>>>>>>>>弹夹状态:"+surplus+"/"+capacity+"\n");
    }
}

机枪类

//枪类
public class Gun {
    private Clip clip;//弹夹
    public Gun(){this(null);}
    public Gun(Clip clip){
        this.clip=clip;
    }
    //装弹夹
    public void loadClip(Clip clip){
        this.clip=clip;
    }
    //开枪
    public void shootEnemy(Player enemy){
        if (clip==null){
            System.out.println(">>>>没有弹夹,放了一个空枪!");
            return;
        }
        Bullet bullet=clip.popBullet();
        if (bullet==null){
            System.out.println(">>>>没有弹夹,放了一个空枪!");
            return;
        }
        bullet.hitEnemy(enemy);
    }
    //显示枪信息
    public void showGun(){
        if (clip!=null){
            System.out.println(">>>>>>>>枪械信息:有弹夹");
        }else {
            System.out.println(">>>>>>>>枪械信息:无弹夹");
        }
    }
}

玩家类

//玩家类
public class Player {
    private  String name;
    private int blood=199;
    private Gun gun;

    public int getBlood() {
        return blood;
    }

    public String getName() {
        return name;
    }
    public Player(){}
    public Player(String name){this(name,199);}
    public Player(String name,int blood){
        this.name=name;
        this.blood=blood;
    }
    //持枪
    public  void holdGun(Gun gun){
        this.gun=gun;
    }
    //射击
    public  void shootEnemy(Player enemy){
        System.out.println(this.name+"向"+enemy.name+"打了一枪 ");
        if (gun==null){
            System.out.println(">>>>>"+name+"没有枪,无法进行射击!");
            return;
        }
        gun.shootEnemy(enemy);
    }
    //装弹夹
    public void loadClip(Clip clip){
        if (gun==null){
            System.out.println(">>>>"+name+"没有枪,无法装弹夹!");
            return;
        }
        gun.loadClip(clip);
    }
    //计算伤害
    public void damage(int hurt){
        if (blood==0){
            System.out.println(">>>>>>>"+name+"已死亡");
            return;
        }
        blood-=hurt;
        if (blood<=0){
            blood=0;
            System.out.println(">>>>>>"+name+"已死亡");
        }
    }
    //展示信息
    public  void showPlayer(){
        boolean isHoldGun=gun!=null;
        System.out.println("玩家信息:姓名:"+name+"血量:"+blood+"是否持枪:"+isHoldGun);
    }
}

Main方法

public class Test {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        System.out.println("欢迎来到特种部队!");
        System.out.println("***********战前准备***********");
        Player p1=new Player();//敌人
        System.out.println("请输入名称:");
        String name= in.next();
        System.out.println("1.雨潇声 2.清风 3.如梦令 请选择对战玩家(1~3):");
        int num= in.nextInt();
        switch (num){
            case 1:
                p1=new Player("雨潇声",400);
                break;
            case 2:
                p1=new Player("清风",300);
                break;
            case 3:
                p1=new Player("如梦令",350);
                break;
            default:
                System.out.println("你输入有误!!!!!!!!");
                break;
        }
        Player p2=new Player(name,250);
        Gun gun1=new Gun();
        Gun gun2=new Gun();
        //玩家持枪
        p1.holdGun(gun1);
        p2.holdGun(gun2);
        //装配弹夹,子弹
        Clip clip1=new Clip();
        Clip clip2=new Clip();
        for (int i=1;i<=30;i++){
            clip1.pushBullet(new Bullet());
            clip2.pushBullet(new Bullet());

        }
        p1.loadClip(clip1);
        p2.loadClip(clip2);
        //显示信息
        p1.showPlayer();
        p2.showPlayer();
        int i=0;
        System.out.println("***********开始对决***********");
        boolean isExit=false;
        while (true){
            System.out.println("---------第"+(i+1)+"回合----------");
            i++;
            p1.shootEnemy(p2);
            if(p2.getBlood()==0){
                System.out.println(p1.getName()+"获胜!");
                System.out.println("退出江湖!");
                return;
            }
            p2.shootEnemy(p1);
            if(p1.getBlood()==0){
                System.out.println(p2.getName()+"获胜!");
                System.out.println("退出江湖!");
                return;
            }
            System.out.println();
            p1.showPlayer();
            p2.showPlayer();
            System.out.println("是否继续对战(输入y继续,其他键退出)?");
            if (!(in.next().equals("y"))){
                System.out.println("退出江湖");

                return;
            }
        }
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值