[技术存档] 可交互游戏 技术测试?

发布于 2021-03-25  60 次阅读


对一道题目的爆改

回合制游戏

boss攻击一波玩家
boss和玩家有名字有血量
boss有普通攻击造成13点伤害,群体技能攻击造成8点伤害,单体技能造成20点伤害
玩家只有普通攻击造成3点伤害
boss普通攻击和单体技能一次只能攻击一只玩家,群体技能是群体攻击
玩家轮流攻击boss

要求:
boss血量为100,四名玩家的血量分别是40,45,50,60
随机攻击方式随机攻击目标,不能出现负数血量,死亡玩家不可以攻击boss,也不可以被boss攻击
boss血量为0或者玩家团灭即为游戏结束

例如:
======第1回合======
boss使用了普通攻击,
玩家们使用了普通攻击。
boss的生命值为:88
玩家1的生命值为50
玩家2的生命值为47
玩家3的生命值为45
玩家4的生命值为40

爆改的方式是 删除多余的玩家 剩下一个玩家 玩家攻击由键盘控制 且有类似与能量条之类的鬼东西

代码如下

package com.neko.控制语句.练习;
import java.io.*;
import java.util.*;
//这是啥 不知道 大概是运行库之类的 反正不能删

/**
 * 玩家对boss的攻击指令已经完成
 *
 * 程序会出bug 不知道啥原因
 */

public class 游戏交互版 {
    public static void main(String[] args) throws InterruptedException {
        int boss =300;
        //boss血量
        int boss_skill1 =15;
        //boss普通攻击
        int boss_skill2 =20;
        //boss小技能
        int boss_skill3 =70;
        //boss大技能
        int judgment=0;
        //判定boss小技能与大招是否开启 (招数判定值)

        int Players=1;
        //玩家血量
        int Players_skill1=10;
        //玩家普通攻击
        int Players_skill2=40;
        //玩家小技能
        int Players_skill3=100;
        //玩家大招
        int Players_judgment=0;

        int Judge=0;
        //程序开关
        Scanner cin=new Scanner(System.in);
        //我不知道咋实现的 反正有它就能进行输入

        System.out.println("交互游戏 0.1版");
        Thread.sleep(1);
        System.out.println("该版本有大量bug 本人技术暂时无法解决 在技术完备后会对版本进行更新");
        Thread.sleep(1);
        System.out.println("玩家有三个技能 普通 小技能 大招 分别对应 1 2 3 技能代码");
        Thread.sleep(1);
        System.out.println("释放技能有技能点数的限制 当技能点数为0-1时无法释放除普通技能的技能");
        Thread.sleep(1);
        System.out.println("且boss有一套和玩家一样的技能系统 由随机数触发");
        Thread.sleep(1);
        System.out.println("确定完成后按下1开始游戏");
        int Start =cin.nextInt();


        while (Judge==0&&Start==1){

            int Random_Skills =(int)(3*Math.random());
            //如果判定为开启则用随机数进行筛选是否放出技能


            //对boss的技能判断
            if (judgment==0){
                Players=Players-boss_skill1;
                //当判定boss无法开启技能时 发动普通攻击且招数判定值加一
                ++judgment;
                System.out.println("boss使用了普通的攻击对玩家造成"+boss_skill1);

                System.out.println("玩家剩余血量"+Players);
                Thread.sleep(1);


            }else if (Random_Skills==0){
                Players=Players-boss_skill1;
                //此处为随机数判定
                ++judgment;
                System.out.println("boss使用了普通的攻击对玩家造成"+boss_skill1);

                System.out.println("玩家剩余血量"+Players);
                Thread.sleep(1);


            }else if (judgment==2&&Random_Skills==1){
                Players=Players-boss_skill2;
                //当符合开启技能判定后开启技能 并且将判定数值减去开启数值
                judgment=judgment-2;
                System.out.println("boss使用了小技能的攻击对玩家造成"+boss_skill2);

                System.out.println("玩家剩余血量"+Players);
                Thread.sleep(1);


            }else if (judgment==3&&Random_Skills==2){
                Players=Players-boss_skill3;
                //如上所述
                judgment=judgment-3;
                System.out.println("boss使用了大招的攻击对玩家造成"+boss_skill3);

                System.out.println("玩家剩余血量"+Players);
                Thread.sleep(1);


            }else if (judgment==1){
                Players=Players-boss_skill1;
                //此处为无法开启技能技能点
                ++judgment;
                System.out.println("boss使用了普通的攻击对玩家造成"+boss_skill1);

                System.out.println("玩家剩余血量"+Players);
                Thread.sleep(1);


            }
            System.out.println("boss剩余血量为"+boss);
            Thread.sleep(1);
            System.out.println("boss拥有技能点"+judgment);

            //判定玩家是否死亡
            if (Players<=0){
                System.out.println("玩家死亡 游戏结束");
                break;
            }
            //判定玩家存活 进入玩家操作阶段
            System.out.println("玩家存活 请输入技能代号");
            int skill_enter =cin.nextInt();
            Thread.sleep(1);

            //对玩家的输入进行判定
            if (skill_enter==1){
                boss=boss-Players_skill1;
                System.out.println("玩家使用了一技能 对boss造成了"+Players_skill1+"伤害");
                Thread.sleep(1);
                //玩家使用一技能 且技能点数加一
                ++Players_judgment;
            }else if (skill_enter>=2&&Players_judgment>=2){
                boss=boss-Players_skill2;
                System.out.println("玩家使用了二技能 对boss造成了"+Players_skill2+"伤害");
                Thread.sleep(1);
                //对玩家使用二技能 判定成功 并减去技能点数
                Players_judgment=Players_judgment-2;

            }else if (skill_enter==3&&Players_judgment>=3){
                boss=boss-Players_skill3;
                System.out.println("玩家使用了三技能 对boss造成了"+Players_skill3+"伤害");
                Players_judgment=Players_judgment-3;
                Thread.sleep(1);
                //对玩家使用三技能 判定成功 并减去技能点数
                //对玩家的输入进行判定 如果不合规直接退出程序
            }else if (Players_judgment<=1&&skill_enter==2){
                System.out.println("技能点不足 非法输入 关闭程序");
                ++Judge;
            }else if (Players_judgment<=1&&skill_enter==3){
                System.out.println("技能点不足 非法输入 关闭程序");
                ++Judge;
            }else if (skill_enter>=3){
                System.out.println("非法输入 程序关闭");
                ++Judge;
            }

            System.out.println("玩家拥有技能点为"+Players_judgment);
            Thread.sleep(1);
            //对boss死亡的判定
            if (boss<=0){
                System.out.println("boss死亡 游戏结束");
                ++Judge;
                break;
            }
        }
        System.out.println("程序结束");
    }
}

终于 公交司机在大家的责骂下给那位老奶奶让出了位置......