java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节,所以加了些代码,使得交互更加的具体有趣!

效果

大家可以多运行几次代码,得到不同的战况!!

代码实现

1.bean类

java 复制代码
import java.util.Random;

public class TextGame {
    private String name;
    private int blood;
    private String face;
    private char gender;

    String[] boyface = {"风流俊雅","气字轩品","相毂关俊","五官正","相较平平","一塌糊涂","面目狰狞"};
    String[] girlface = {"美奂绝伦","沉鱼落厂","婷婷玉立","身材娇好","相貌平平","相貌简所","不忍睹"};
    String[] attack_desc = {
            "%s使出了一招【背心钉】,转到对方的身后,一零向%s背心的关台穴拍去。",
            "%s使出了一招【游空探爪】。飞起身形自半空中变章为抓锁向%s。",
            "%s人喝一声,身形下伙,一招【劈雷坠地】,捶向%s双腿。",
            "%s运气于景,一瞬间常心变得血红,一式【京心需】,推向%s。",
            "%s明手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。",
            "%s上步抢身,招中套报,一招【劈挂连环】,连环攻向%s。"};
    String[] injured_desc= {
            "结果%s退了半步,毫发无损",
            "结果给%s适成一处察伤",
            "结果一击命中。%s痛得弯下服",
            "结果%s痛苦地闷哼了一声,是然受了点内伤",
            "结果xs摇摇晃晃,一跤摔倒作地",
            "结果%s脸色一下变得惨白,连逖了好几步",
            "结果「轰】的一声,%s口中鲜血狂喷面出",
            "结果%s一声惨叫,像滩软泥般塌了下去"};
    public TextGame() {
    }

    public TextGame(String name, int blood,char gender) {
        this.name = name;
        this.blood = blood;
        this.gender = gender;
        setface(gender);
    }

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

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

    /**
     * 获取
     * @return blood
     */
    public int getBlood() {
        return blood;
    }

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

    public String toString() {
        return "TextGame{name = " + name + ", blood = " + blood + "}";
    }

    public void setface(char gender){
        Random random = new Random();

        if(gender == '男'){
            int index = random.nextInt(boyface.length);
            this.face = boyface[index];
        }else if(gender == '女') {
            int index = random.nextInt(girlface.length);
            this.face = girlface[index];
        }else{
            this.face = "面目狰狞";
        }
    }

    public char getGender() {
        return gender;
    }

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

    public String getFace(){
        return this.face;
    }

    public void attack(TextGame role){
        //攻击方的威力
        Random r1 = new Random();
        int index = r1.nextInt(attack_desc.length);
        String kungfu = attack_desc[index];
        //攻击效果
        System.out.printf(kungfu,this.getName(),role.getName());
        System.out.println();
        //被揍的人伤害点
        Random r = new Random() ;
        int hurt = r.nextInt(20) + 1;
        //修改挨揍人的血量
        int remainBlood = Math.max(0 , (role.getBlood() - hurt));
        role.setBlood(remainBlood);
//        System.out.println(this.getName() + "了举起拳头,打了"+ role.getName()  +"一下,造成了"+hurt+"点伤害,"+role.getName()+"还剩下"+remainBlood+"血量");
        if(remainBlood > 90){
            System.out.printf(injured_desc[0],role.getName());
        } else if (remainBlood > 80 && remainBlood <= 90) {
            System.out.printf(injured_desc[1],role.getName());
        } else if (remainBlood >70 && remainBlood <= 80) {
            System.out.printf(injured_desc[2],role.getName());
        }else if (remainBlood >60 && remainBlood <= 70) {
            System.out.printf(injured_desc[3],role.getName());
        }else if (remainBlood >40 && remainBlood <= 60) {
            System.out.printf(injured_desc[4],role.getName());
        }else if (remainBlood >20 && remainBlood <= 40) {
            System.out.printf(injured_desc[5],role.getName());
        }else if (remainBlood >10 && remainBlood <= 20) {
            System.out.printf(injured_desc[6],role.getName());
        }else{
            System.out.printf(injured_desc[7],role.getName());
        }
        System.out.println();

    }

    public void showRoleInfo(){
        System.out.println("姓名为:"+getName());
        System.out.println("血型为:"+getBlood());
        System.out.println("性别为:"+getGender());
        System.out.println("长相为:"+getFace());
    }
}

2.测试类

java 复制代码
public class TextGameText {
    public static void main(String[] args) {
        TextGame q1 = new TextGame("乔峰", 100,'男');
        TextGame q2 = new TextGame("鸠摩智", 100,'男');
        q1.showRoleInfo();
        q2.showRoleInfo();
        while (true){
            q1.attack(q2);
            if(q2.getBlood() == 0){
                System.out.println(q1.getName() +"KO." + q2.getName());
                break;
            }
            q2.attack(q1);
            if(q1.getBlood() == 0){
                System.out.println(q2.getName() +"KO." + q1.getName());
                break;
            }
        }
    }
}

这样就丰富了一场格斗大战的游戏细节!!!

相关推荐
Dcs3 分钟前
VSCode等多款主流 IDE 爆出安全漏洞!插件“伪装认证”可执行恶意命令!
java
保持学习ing9 分钟前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
京东云开发者20 分钟前
Java的SPI机制详解
java
超级小忍43 分钟前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
程序无bug1 小时前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
小莫分享1 小时前
Java Lombok 入门
java
程序无bug1 小时前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队1 小时前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端
苦学编程的谢1 小时前
Maven
java·maven·intellij-idea
考虑考虑1 小时前
Maven 依赖范围(Scope)
java·后端·maven