崩坏三 夏日竞猜 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次运行结果



