• 周三. 4 月 22nd, 2026

物嫩软件资讯网

软件资讯来物嫩

Java黑马程序员:文字版格斗游戏

admin@wunen

4 月 3, 2025
package 练习包;

import java.lang.reflect.Member;
import java.lang.reflect.Method;

public class Day01 {
    public static void main(String[] args) {
        //1.创建第一个角色
        Student r1=new Student("菜狗",100,'男');
        //2.创建第二个角色
        Student r2=new Student("大侠",100,'男');

        //展示角色的信息
        r1.showRoleInfo();
        r2.showRoleInfo();

        //3.开始格斗,回合制游戏
        while (true){
            //r1开始攻击r2
            r1.attack(r2);
            //判断r2的剩余血量
            if(r2.getBlood()==0){
                System.out.println(r1.getName()+"k.o了"+r2.getName());
                break;
            }

            //r2开始攻击r1
            r2.attack(r1);
            if(r1.getBlood()==0){
                System.out.println(r2.getName()+"k.0了"+r1.getName());
                break;
            }
        }
    }
}
package 练习包;

import javax.management.relation.Role;
import java.security.PublicKey;
import java.util.Random;

public class Student {
    private String name;
    private int blood;
    private char gender;
    private String face;//长相是随机的

    String[] boyfaces={"风流倜傥","器宇轩昂","相貌英俊","五官端正","面目全非"};
    String[] girlfaces={"美轮美奂","沉鱼落雁","亭亭玉立","惨不忍睹","形貌丑陋"};

    //attack攻击描述
    String[] attacks_desc={
            "%s使出一招[背心订],转到对方后面,一掌向%s背心拍去",
            "%s使出了一招[游龙],抓向%s",
            "%s大喝一声,锤向%s"
    };

    //受伤描述
    String[] injureds_desc={
            "结果%s退了半步,毫发无损",
            "结果给%s造成一处於伤",
            "结果一击命中,%s弯下腰",
            "结果%s痛苦地闷哼一声",
            "结果%s摇摇晃晃",
            "结果%s脸色惨白",
            "结果%s口吐鲜血",
            "结果%s倒了下去"
    };

    //无参空构造方法
    public Student(){

    }

    //有参构造方法
    public Student(String name, int blood,char gender) {
        this.name = name;
        this.blood = blood;
        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=='男'){
            //从boyfaces里面随机长相
            int index=r.nextInt(boyfaces.length);
            this.face=boyfaces[index];
        }else if(gender=='女'){
            //从girlfaces里面随机长相
            int index=r.nextInt(girlfaces.length);
            this.face=boyfaces[index];
        }else {
            this.face="面目全非";
        }
    }


    public String getName() {
        return name;
    }

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

    public int getBlood() {
        return blood;
    }

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

    //定义一个方法用于攻击别人
    //Role r1=new Role();
    //Role r2=new Role();
    //r1.攻击(r2);
    //方法的调用者去攻击参数
    public void attack(Student role){
        Random r=new Random();
        int index=r.nextInt(attacks_desc.length);
        String kungFu=attacks_desc[index];

        //输出一个攻击效果
        System.out.printf(kungFu,this.getName(),role.getName());
        System.out.println();

        //计算造成的伤害1~20
        int hurt=r.nextInt(20)+1;

        //挨揍的人的剩余血量
        int remainBoold= role.getBlood()-hurt;
        //对剩余血量做一个验证,如果为负就修改为0
        remainBoold=remainBoold<0?0:remainBoold;
        //修改挨揍人的血量
        role.setBlood(remainBoold);


        //受伤的情况
        //血量>90 0索引的描述
        //80~90   1索引的描述
        //70~80   2索引的描述
        //60~70   3索引的描述
        //40~60   4索引的描述
        //20~40   5索引的描述
        //10~20   6索引的描述
        //小于10   7索引的描述
        if(remainBoold>90){
            System.out.printf(injureds_desc[0],role.getName());
        }else if(remainBoold>80&&remainBoold<=90){
            System.out.printf(injureds_desc[1],role.getName());
        }else if(remainBoold>70&&remainBoold<=80){
            System.out.printf(injureds_desc[2],role.getName());
        }else if(remainBoold>60&&remainBoold<=70){
            System.out.printf(injureds_desc[3],role.getName());
        }else if(remainBoold>40&&remainBoold<=60){
            System.out.printf(injureds_desc[4],role.getName());
        }else if(remainBoold>20&&remainBoold<=40){
            System.out.printf(injureds_desc[5],role.getName());
        }else if(remainBoold>10&&remainBoold<=20){
            System.out.printf(injureds_desc[6],role.getName());
        }else {
            System.out.printf(injureds_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());
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注