栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

崩坏三 夏日竞猜 7.21 第一场

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

崩坏三 夏日竞猜 7.21 第一场

 崩坏三 夏日竞猜 7.21 第一场

PS:只是交流使用,小白,勿喷

两角色行动方式

 伊甸的攻击行动方式

package yidian_qianjie;

import java.util.Random;

public class yidian {
    public int hp = 100;
    public int attack = 16;
    public int defence = 12;
    Random random = new Random();

    
    protected void action(qianjie qianjie, int round){
        if(round % 2 == 1){
            //普通攻击
            int m = this.attack - qianjie.defence;
            qianjie.hp = qianjie.hp - m;
            System.out.println("伊甸对千劫造成了"+m+"点伤害");
            //有50%概率再次攻击一次
            specialAttack(qianjie);
        }
        //伊甸每2回合提升自身4攻击
        if(round % 2 == 0){
            //普通攻击
            this.attack = this.attack + 4;
            //伤害数值
            int m = this.attack - qianjie.defence;
            qianjie.hp = qianjie.hp - m;
            System.out.println("伊甸对千劫造成了"+m+"点伤害");
            //有50%概率再次攻击一次
            specialAttack(qianjie);
        }
    }

    
    protected void specialAttack(qianjie qianjie){
        //有50%概率再次攻击一次
        if(random.nextInt(2) == 1){
            //伤害数值
            int m = this.attack - qianjie.defence;
            qianjie.hp = qianjie.hp - m;
            System.out.println("伊甸对千劫造成了"+m+"点伤害");
        }
    }
}

千劫的攻击行动方式

package yidian_qianjie;

import java.util.Random;

public class qianjie {
    public int hp = 100;
    public int attack = 23;
    public int defence = 9;

    //由于没有其他回合制限制,所以采用自循环攻击方式
    public int cycle = 1;

    //判断此回合是否行动,只是为了方便信息输出
    public int action = 0;
    Random random = new Random();

    
    protected boolean action(yidian yidian){
        //千劫的攻击每损失5生命值增加1
        this.attack = 23 + (100 - this.hp) / 5;
        //没什么用,只是为了没有行动那局输出信息
        if(this.action == 1){
            this.action = 0;
            return false;
        }
        //第一,第二回合普通攻击
        if(this.cycle == 1){
            //伤害数值
            int m = this.attack - yidian.defence;
            yidian.hp = yidian.hp - m;
            System.out.println("千劫对伊甸造成了"+m+"点伤害");
            
        }
        if(this.cycle == 2){
            //伤害数值
            int m = this.attack - yidian.defence;
            yidian.hp = yidian.hp - m;
            System.out.println("千劫对伊甸造成了"+m+"点伤害");
            
        }
        //如果血量少于11,那么主动技能不发动
        if(this.hp < 11){
            this.cycle = -1;
        }
        //主动技能发动
        if(this.cycle == 3){
            this.hp = this.hp - 10;
            //伤害数值
            int m = 45 + random.nextInt(20) + 1;
            yidian.hp = yidian.hp - m;
            System.out.println("千劫对伊甸造成了"+m+"点伤害");
            this.cycle = 0;
            //没什么用,为了文字输出
            this.action = 1;
        }
        if(this.cycle == -1){
            //伤害数值
            int m = this.attack - yidian.defence;
            yidian.hp = yidian.hp - m;
            System.out.println("千劫对伊甸造成了"+m+"点伤害");
            this.cycle = 1;
            
        }
        this.cycle++;
        return true;
    }
}

游戏运行

package yidian_qianjie;




public class main {
    //回合数
    private int round;
    //赢的局数
    int yidianWin = 0;
    int qianjieWin = 0;

    public main() {
        for(int i = 1;i <=30000; i++){
            yidian yidian = new yidian();
            qianjie qianjie = new qianjie();
            startGame(yidian,qianjie);
        }
        System.out.println("伊甸获胜"+yidianWin+"局"+"  "+"千劫获胜"+qianjieWin+"局");
    }
    public void startGame(yidian yidian,qianjie qianjie){
        for(round = 1;round < 100;round ++){
            System.out.println("n第"+round+"局开始");
            //伊甸在3,5,7局都是先手
            if(round % 2 == 1 && round >= 3){
                yidian.action(qianjie,round);
                System.out.println("伊甸剩余"+yidian.hp+"血量"+"  "+"千劫剩余"+qianjie.hp+"血量");
                //如果已经有人hp为负,那么本局结束
                boolean m = result(yidian,qianjie);
                if(m) break;
            }
            //千劫的攻击
            boolean s = qianjie.action(yidian);
            if(!s) System.out.println("千劫此回合不行动");
            System.out.println("伊甸剩余"+yidian.hp+"血量"+"  "+"千劫剩余"+qianjie.hp+"血量");
            //如果已经有人hp为负,那么本局结束
            boolean m = result(yidian,qianjie);
            if(m) break;

            //伊甸后手
            if(round % 2 == 0 || round == 1) {
                yidian.action(qianjie, round);
                System.out.println("伊甸剩余" + yidian.hp + "血量" + "  " + "千劫剩余" + qianjie.hp + "血量");
                //如果已经有人hp为负,那么本局结束
                boolean m1 = result(yidian, qianjie);
                if (m1) break;
            }
        }
    }

    
    public boolean result(yidian yidian,qianjie qianjie){
        if(yidian.hp <= 0){
            qianjieWin++;
            System.out.println("千劫获胜");
            return true;
        }
        if(qianjie.hp <= 0){
            yidianWin++;
            System.out.println("伊甸获胜");
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        main main = new main();
    }
}

30000次运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号