Java学习-----文字版格斗游戏

规则:格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定任务的时候(new对象的时候),这些信息就应该被确定下来

我将它稍微修改了一下,改为可以键盘输入角色的名字和性别(血量的没写固定100,当然也可以改成键盘输入)



main代码

import java.util.Scanner;

public class TextFightingGameDemo {
    public static void main(String[] args) {
        String name = null;
        char gender = '无';
        //创建第一个角色
        TextFightingGame r1 = new TextFightingGame(name,100,gender);
        //创建第一个角色
        TextFightingGame r2 = new TextFightingGame(name,100,gender);
        //键盘输入角色相关信息
        for (int i = 1; i < 3; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第" + i + "个角色名:");
            name = sc.next();
            System.out.println("请输入第" + i + "个角色的性别(男/女):");
             gender = sc.next().charAt(0);
            if(i == 1){
                //创建第一个角色
                 r1 = new TextFightingGame(name,100,gender);
            }
            else {
                //创建第一个角色
                 r2 = new TextFightingGame(name,100,gender);
            }
        }
//        //创建第一个角色
//        TextFightingGame r1 = new TextFightingGame("乔峰",100,'男');
//        //创建第二个角色
//        TextFightingGame r2 = new TextFightingGame("鸠摩智",100,'男');
        //展示角色信息
        r1.showRoleInfo();
        r2.showRoleInfo();
        //开始格斗,回合制
        while(true){
           // r1攻击r2
            r1.attack(r2);
            //判断r2血量是否为零
            if (r2.getBlood()==0){
                System.out.println(r1.getName()+"打败了"+r2.getName());
                break;
            }
            // r2攻击r1
            r2.attack(r1);
            //判断r2血量是否为零
            if (r1.getBlood()==0){
                System.out.println(r2.getName()+"打败了"+r1.getName());
                break;
            }
        }
    }
}

Javabean代码

import java.util.Random;

public class TextFightingGame {
    //角色姓名
    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双腿。",
            "%s运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向%s。",
            "%s阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。",
            "%s上步抢身,招中套招,一招【劈挂连环】,连环攻向%s。"
    };

    //injured 受伤描述:
    String[] injureds_desc={
            "结果%s退了半步,毫发无损",
            "结果给%s造成一处瘀伤",
            "结果一击命中,%s痛得弯下腰",
            "结果%s痛苦地闷哼了一声,显然受了点内伤",
            "结果%s摇摇晃晃,一跤摔倒在地",
            "结果%s脸色一下变得惨白,连退了好几步",
            "结果『轰』的一声,%s口中鲜血狂喷而出",
            "结果%s一声惨叫,像滩软泥般塌了下去"
    };
    //空参
    public TextFightingGame() {
    }

    public TextFightingGame(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 == '男'){
            int index = r.nextInt(boyfaces.length);
            this.face = boyfaces[index];
        }else if (gender == '女'){
            int index = r.nextInt(girlfaces.length);
            this.face = girlfaces[index];
        }else {
            this.face = "无脸人";
        }
    }

    /**
     * 获取
     * @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;
    }

    /**
     * 定义一个方法用于攻击
     * TFG r1 = new TFG()
     * TFG r2 = new TFG()
     * r1攻击r2
     * 方法的调用者攻击参数
     */
    public void attack(TextFightingGame role){
        Random r = new Random();
        //随机攻击特效
        int temp = r.nextInt(attacks_desc.length);
        String KungFu = attacks_desc[temp];
        //打印攻击特效
        System.out.printf(KungFu,this.getName(),role.getName());
        //攻击完换行
        System.out.println();
        //计算造成的伤害(伤害随机1~20)
        int hurt = r.nextInt(20)+1;
        //打印造成了多少伤害
        System.out.println("造成了"+hurt+"点伤害");
        //修改血量
        role.setBlood(role.getBlood()-hurt);
        role.blood =role.blood <0 ? 0 :role.blood;
        //受伤描述
        /*   血量         injureds_desc[]
         *  (90,100]   0索引的描述
         *  (80,90]    1索引的描述
         *  (70,80]    2索引的描述
         *  (60,70]    3索引的描述
         *  (40,60]    4索引的描述
         *  (20,40]    5索引的描述
         *  (10,20]    6索引的描述
         *  (0,10 ]    7索引的描述
         */
        if(role.blood > 90){
            System.out.printf(injureds_desc[0],role.getName());
        }
        else if(role.blood > 80){
            System.out.printf(injureds_desc[1],role.getName());
        }
        else if(role.blood > 70){
            System.out.printf(injureds_desc[2],role.getName());
        }
        else if(role.blood > 60){
            System.out.printf(injureds_desc[3],role.getName());
        }
        else if(role.blood > 40){
            System.out.printf(injureds_desc[4],role.getName());
        }
        else if(role.blood > 20){
            System.out.printf(injureds_desc[5],role.getName());
        }
        else if(role.blood > 10){
            System.out.printf(injureds_desc[6],role.getName());
        }
        else if(role.blood > 0){
            System.out.printf(injureds_desc[7],role.getName());
        }
        //受完伤换行
        System.out.println();
        /*//sout("xxx打了xx一下,造成了。。。伤害,xx还剩xxx点血")
        //this表示方法的调用者
        System.out.println(this.getName()+"打了"+role.getName()+
                "一下,造成了"+hurt+"点伤害,"+role.getName()+"还剩"+role.blood+"点血");*/

    }
    //展示角色信息
    public void showRoleInfo(){
        System.out.println("姓名为:" + getName());
        System.out.println("血量为:" + getBlood());
        System.out.println("性别为:" + getGender());
        System.out.println("长相为:" + getFace());
    }


}
请输入第1个角色名:
1
请输入第1个角色的性别(男/女):
男
请输入第2个角色名:
2
请输入第2个角色的性别(男/女):
女
姓名为:1
血量为:100
性别为:男
长相为:气宇轩昂
姓名为:2
血量为:100
性别为:女
长相为:美奂绝伦
1使出了一招【背心钉】,转到对方的身后,一掌向2背心的灵台穴拍去。
造成了14点伤害
结果给2造成一处瘀伤
2上步抢身,招中套招,一招【劈挂连环】,连环攻向1。
造成了4点伤害
结果1退了半步,毫发无损
1上步抢身,招中套招,一招【劈挂连环】,连环攻向2。
造成了11点伤害
结果一击命中,2痛得弯下腰
2使出了一招【背心钉】,转到对方的身后,一掌向1背心的灵台穴拍去。
造成了1点伤害
结果1退了半步,毫发无损
1使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向2。
造成了12点伤害
结果2痛苦地闷哼了一声,显然受了点内伤
2运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向1。
造成了3点伤害
结果1退了半步,毫发无损
1使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向2。
造成了11点伤害
结果2摇摇晃晃,一跤摔倒在地
2阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向1。
造成了6点伤害
结果给1造成一处瘀伤
1上步抢身,招中套招,一招【劈挂连环】,连环攻向2。
造成了19点伤害
结果2脸色一下变得惨白,连退了好几步
2运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向1。
造成了10点伤害
结果一击命中,1痛得弯下腰
1使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向2。
造成了5点伤害
结果2脸色一下变得惨白,连退了好几步
2运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向1。
造成了7点伤害
结果1痛苦地闷哼了一声,显然受了点内伤
1阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向2。
造成了7点伤害
结果2脸色一下变得惨白,连退了好几步
2上步抢身,招中套招,一招【劈挂连环】,连环攻向1。
造成了16点伤害
结果1摇摇晃晃,一跤摔倒在地
1运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向2。
造成了12点伤害
结果2一声惨叫,像滩软泥般塌了下去
2使出了一招【背心钉】,转到对方的身后,一掌向1背心的灵台穴拍去。
造成了8点伤害
结果1摇摇晃晃,一跤摔倒在地
1大喝一声,身形下伏,一招【劈雷坠地】,捶向2双腿。
造成了9点伤害

1打败了2

进程已结束,退出代码0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值