Java_题目_面向对象文字花钱格斗游戏

本文介绍了一个使用Java实现的面向对象文字游戏,游戏中人物通过花费金钱进行互动,展现了JavaBean的使用、对象内存变化及随机事件模拟。通过两个角色互相消费对方的金钱,直至一方资金耗尽,游戏结束。代码实现包括角色类(Role)的属性、构造器、方法以及游戏主类(SpendMoneyGame)的运行逻辑。
摘要由CSDN通过智能技术生成

一、题目:面向对象文字花钱格斗游戏
二、重难点:
1)掌握JavaBean的写法,及相关快捷键或插件生成。
包含缺省及含参构造器、getter和setter、成员方法等。
2)掌握创建对象、方法后的栈、堆、this内存变化。
三、感叹:
今天敲代码脖子疼……写if条件就很累。
笑,爱古风题材和双十一!
四、代码:
1)人物bean

import java.util.Random;

public class Role {
    private String name;
    private int money;
    private char gender;
    private String face;

    String[] maleAppearance = {"面目清秀", "温文尔雅", "玉树临风", "风度翩翩", "英俊潇洒"};
    String[] femaleAppearance = {"沉鱼落雁", "闭月羞花", "倾国倾城", "仪态万千", "如花似玉"};

    //花钱描述
    String[] spend_desc = {
            "%s买了高性价比大容量滚筒洗衣机,%s的钱包受到了攻击",
            "%s买了冰箱三开门 253升一级能效 节能变频,%s的钱包受到了攻击",
            "%s买了电视 55E8 55英寸 2+32GB 4K超高清全面屏 智慧屏,%s的钱包受到了攻击",
            "%s买了大1匹 云佳 新一级能效 变频冷暖 自清洁壁挂式空调,%s的钱包受到了攻击",
            "%s买了洗碗机台式家用4-6套高温除菌烘干智能超快洗易安装刷碗机,%s的钱包受到了攻击",
            "%s买了洗衣液和洁面慕斯,%s的钱包受到了攻击"
    };

    //被花钱的人感受描述
    String[] injure_desc = {
            "%s认为洒洒水啦",
            "%s说明天不吃晚饭了",
            "%s取消了买私人飞机的计划",
            "%s痛苦地闷哼了一声",
            "%s摇摇晃晃,辞退了管家",
            "%s开始找贷款消息",
            "%s把大别墅换成小房子",
            "%s收拾行李回家啃老",
    };

    public Role() {
    }

    public Role(String name, int money, char gender) {
        this.name = name;
        this.money = money;
        this.gender = gender;
        setFace(gender);
    }

    public char getGender() {
        return gender;
    }

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

    public String getFace() {
        return face;
    }

    public void setFace(char gender) {
        Random r = new Random();
        if (gender == '男') {
            int index = r.nextInt(maleAppearance.length);
            this.face = maleAppearance[index];
        } else if (gender == '女') {
            int index = r.nextInt(femaleAppearance.length);
            this.face = femaleAppearance[index];
        } else {
            this.face = "面目狰狞";
        }
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    //定义一个方法用于使用对方的钱
    public void spendMoney(Role role) {
        Random r = new Random();
        int index = r.nextInt(spend_desc.length);
        String shopping = spend_desc[index];
        //输出一个花钱的效果
        System.out.printf(shopping, this.getName(), role.getName());
        System.out.println();
        //每次花掉的钱
        int spend = r.nextInt(10000) + 1000;
        //剩余金钱
        int remainMoney = role.getMoney() - spend;
        //对剩余金钱做一个验证,如果为负数,就修改为0
        remainMoney = remainMoney < 0 ? 0 : remainMoney;
        //修改一下被花掉钱后那个人的金钱余额
        role.setMoney(remainMoney);
        //被花钱的描述
        if (remainMoney > 90000) {
            System.out.printf(injure_desc[0], role.getName());
        } else if (remainMoney > 80000 && remainMoney <= 90000) {
            System.out.printf(injure_desc[1], role.getName());
        } else if (remainMoney > 70000 && remainMoney <= 80000) {
            System.out.printf(injure_desc[2], role.getName());
        } else if (remainMoney > 60000 && remainMoney <= 70000) {
            System.out.printf(injure_desc[3], role.getName());
        } else if (remainMoney > 40000 && remainMoney <= 60000) {
            System.out.printf(injure_desc[4], role.getName());
        } else if (remainMoney > 20000 && remainMoney <= 40000) {
            System.out.printf(injure_desc[5], role.getName());
        } else if (remainMoney > 10000 && remainMoney <= 20000) {
            System.out.printf(injure_desc[6], role.getName());
        } else {
            System.out.printf(injure_desc[7], role.getName());
        }
        System.out.println();
    }

    public void showRoleInfo() {
        System.out.println("姓名为" + getName());
        System.out.println("余额为" + getMoney());
        System.out.println("性别为" + getGender());
        System.out.println("长相为" + getFace());
    }
}

2)花钱游戏

public class SpendMoneyGame {
    public static void main(String[] args) {
        //1.创建第一个角色
        Role r1 = new Role("尉迟轩", 100000, '男');
        //2.创建第二个角色
        Role r2 = new Role("晏乐儿", 100000, '女');
        //3.展示角色信息
        r1.showRoleInfo();
        r2.showRoleInfo();
        //4.开始花钱游戏
        while (true) {
            r1.spendMoney(r2);
            if (r2.getMoney() == 0) {
                System.out.println(r1.getName() + "花光了" + r2.getName() + "的钱");
                break;
            }
            r2.spendMoney(r1);
            if (r1.getMoney() == 0) {
                System.out.println(r2.getName() + "花光了" + r1.getName() + "的钱");
                break;
            }
        }
    }
}

五、效果:
虽然只是随机数,感觉情节还是很虐。┗|`O′|┛ 嗷~~
花钱游戏打印结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值