微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java从0开始 9(面向对象综合习题)

目录:


文字版格斗游(回合制)

需求:格斗游戏,每个游戏角色的姓名,血量都不同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。


思路:

  1. 创建一个Role(角色)类,分别定义名字,血量,性别,等私有变量
  2. 定义一个空参构造体
  3. 定义一个含有全部参数的构造体
  4. 再分别给私有变量定义set和get方法
  5. (1.2.3.4步是创建javabean)
  6. 准备工作都做完了,接下来定义一个flight(战斗)方法,在flight中要有 调用flight方法的人给敌人随机造成了多少伤害,敌人还剩多少血量,敌人血量低于0会怎样。
  7. 在main()方法中分别用Role创建两个角色并附上初始值
  8. 接下来角色调用flight方法开始战斗
  9. 当己方或敌方血量为则游戏结束

javabean类如下,main()在下面:

package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;

import java.util.Random;

public class Role {
    private String name;
    private int blood;
    private String gender;
    private String face;//长相随机
    //face
    String[] boyface = {"风流俊雅", "气宇轩昂", "相貌英俊", "五官端正", "一塌糊涂", "面目狰狞"};
    String[] girlface = {"美艳绝伦", "沉鱼落雁", "亭亭玉立", "身材姣好", "相貌平平", "惨不忍睹"};
    //attach 攻击描述
    String[] attacks_desc = {
            "%s使出了一招【直捣黄龙】,蹲到对方胯下,一爪向%s的命根抓去",
            "%s使出了一招【黯然幽魂掌】,大臂一挥,一掌向%s的脸坝子拍去"
    };
    //injured 受伤的描述
    String[] injured_desc = {
            "结果%s退了半步,毫发无伤",
            "结果给%s打的退了几步",
            "结果%s痛的哇哇大叫",
            "结果%s像烂泥一样倒下"
    };

    //空参
    public Role() {

    }

    //全参
    public Role(String name, int blood, String gender) {
        this.name = name;
        this.blood = blood;
        this.gender = gender;
        //this.face = face;  开局随机长相所以用this.facehi直接赋值固定长相,直接调用setFace
        setFace(gender);
    }

    //set 和 get  方法  先赋值再返回
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setBlood(int blood) {
        this.blood = blood;
    }

    public int getBlood() {
        return blood;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getGender() {
        return gender;
    }

    public void setFace(String gender) {
        Random r = new Random();
        if (gender == "男") {
            int x = r.nextInt(boyface.length);
            this.face = boyface[x];
        } else if (gender == "女") {
            int y = r.nextInt(girlface.length);
            this.face = girlface[y];
        } else
            System.out.println("卧槽,人妖,run!!!");
    }

    public String getFace() {
        return face;
    }

    //定义一个方法用于攻击别人
    //思考:谁攻击谁
    //Role r1 = new Role();
    //Role r2 = new Role();
    //r1.攻击(r2);
    public void flight(Role role) {
        //使出一个攻击的效果
        Random r = new Random();
        int indexA = r.nextInt(attacks_desc.length);
        String KungFu = attacks_desc[indexA];
        System.out.printf(KungFu, this.getName(), role.getName());
        //this表示方法调用
        //用随机数编写造成了多少血量
        int hurt = r.nextInt(11) + 20;   //20-30
        int remainBlood = role.getBlood() - hurt;
        //对剩余血量进行验证,如果是负数就修改为0
        remainBlood = remainBlood < 0 ? 0 : remainBlood;
        //修改一下挨揍人的血量
        role.setBlood(remainBlood);
        //受伤描述
        //如果血量>90  就采用0索引
        //   60 -- 90  就采用1索引
        //   30 --  60 就采用2索引
        //   0  --  30       3索引
        if (remainBlood > 90) {
            System.out.printf(injured_desc[0], role.getName());
            System.out.println();        //println本身就有换行
        } else if (remainBlood > 60) {
            System.out.printf(injured_desc[1], role.getName());
            System.out.println();
        } else if (remainBlood > 30) {
            System.out.printf(injured_desc[2], role.getName());
            System.out.println();
        } else {
            System.out.printf(injured_desc[3], role.getName());
            System.out.println();
        }


       /*
        String ShouShang = injured_desc[indexJ];
        System.out.printf(ShouShang,role.getName());*/

    }
}

方法

package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;

public class RoleTest {
    public static void main(String[] args) {
        //创建第一个角色
        Role r1 = new Role("奥特曼",100,"男");
        //创建第二个角色
        Role r2 = new Role("小可爱",100,"女");
        //开始战斗  回合制游戏
        while (true){
            //1.r1开始攻击r2
            r1.flight(r2);
            //判断r2还剩多少血量  如果r2血量变为0,游戏停止
            if(r2.getBlood() == 0){
                System.out.println(r1.getName()+"k.0"+r2.getName());
                break;
            }
            //r2开始攻击r1
            r2.flight(r1);
            if(r1.getBlood()==0){
                System.out.println(r2.getName()+"k.o"+r1.getName());
                break;
            }
        }
    }

}

返回目录


对象数组练习

对象数组1:

定义数组存储3个商品对象。
商品的属性:商品的id,名字,价格,库存
创建三个商品对象,并把商品对象存入到数组当中

思路:首相窗创建Goods的javabean类,再去main()里创建数组存放商品

package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;
//创建一个Goods的javabean
public class Goods {
    private String id;
    private String name;
    private double price;
    private int stock;


    public Goods() {
    }

    public Goods(String id, String name, double price, int stock) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.stock = stock;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return price
     */
    public double getPrice() {
        return price;
    }

    /**
     * 设置
     * @param price
     */
    public void setPrice(double price) {
        this.price = price;
    }

    /**
     * 获取
     * @return stock
     */
    public int getStock() {
        return stock;
    }

    /**
     * 设置
     * @param stock
     */
    public void setStock(int stock) {
        this.stock = stock;
    }


}

package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;

public class GoodsTest {
    public static void main(String[] args){
        //int[] arr = new int[3];  int类型的数组只能放整形的数
        //1.创建数组
        Goods[] arr = new Goods[3];//装商品的数组,类型就得是定义好的Goods类

        //2.创建三个商品对象  ctrl+p 可以看形参顺序
        Goods g1 = new Goods("001","苹果10",3999,10000);
        Goods g2 = new Goods("002","苹果11",4999,1000);
        Goods g3 = new Goods("003","苹果12",6999,100);

        //将商品对象存入到数组中
        arr[0] = g1;
        arr[1] = g2;
        arr[2] = g3;

        //遍历数组,看是否存进去了
        for (int i = 0; i < arr.length; i++) {
            Goods goods = arr[i];
            System.out.println(goods.getId()+","+goods.getName()+","+goods.getPrice()+","+goods.getStock());
        }
        }
}

返回目录


对象数组2(加大难度):

需求:
定义数组存储3部汽车对象。
汽车的属性:品牌,价格,颜色。
创建三个汽车对象,数据通过键盘录入而来,并把数据存入到数组当中。


创建Cars的javabean:

package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;

public class Cars {
    //1.先定义Cars的私有变量
    private String band;
    private double price;
    private String color;

    //2.定义空参
    public Cars(){}
    //3.定义全参构造器
    public Cars(String band,double price,String color){
        this.band = band;
        this.price = price;
        this.color = color;
    }
    //4.写set和get方法
    public void setBand(String band){
        this.band = band;
    }
    public String getBand(){
        return band;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

键盘录入:

package mianXiangDuiXiang.SheJiDuiXiang.ZhongHeAnLi;

import java.util.Scanner;

public class CarsTest {
    public static void main(String[] args) {
        //5.创建数组存放小汽车
        Cars[] arr = new Cars[3];
        //录入数据有两套体系:第一套体系   
        /* nextInt();     接收整数
           nextDouble();  接收小数
           next();       接收字符串
           这套体系遇到空格,遇到制表符,回车就会停止接收数据
           如果你定义了两个输入语句  你在第一次输入  123空格123
           则会将123赋值给第一个数 剩下的123直接赋值给第二个数不会有提示信息*/
        //                  第二套体系
        //nextLine();     接收字符串  同上如果输入  123 123  则会全部赋值给第一个包括空格
        //6.new出小汽车 数据通过键盘录入而来   7.存入数组
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            Cars car = new Cars();
            System.out.println("请录入汽车的品牌:");
            String brand = sc.next();
            car.setBand(brand);
            System.out.println("请录入汽车的价格:");
            Double price = sc.nextDouble();
            car.setPrice(price);
            System.out.println("请录入汽车的颜色·:");
            String color = sc.next();
            car.setColor(color);
            arr[i] = car ;  //将小汽车的所有数据直接装入数组
        }
        //遍历数组
        for (int i = 0; i < arr.length; i++) {
            Cars cars = arr[i];
            System.out.println(cars.getBand()+","+cars.getPrice()+","+cars.getColor());
        }

    }
}

返回目录


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐