启动类【主类】
package cn.itsp.dxcj;
import java.util.Random;
import java.util.Scanner;
public class AscendTheImmortals {
public static void main(String[] args) {
System.out.println("欢迎来到登仙长阶!");
Scanner scanner = new Scanner(System.in);
Skills skills = new Skills();
System.out.println("提示:请输入你的名字,按enter确认");
if (scanner.hasNextLine()) {
String name = scanner.next();
System.out.println("好的,你的名字是" + name);
}
sleep(1);
System.out.println("-----------------------");
sleep(1);
System.out.println("你无法决定你的出生,但可以决定其它一切,你的抉择将影响你的命运,请慎重对待!");
sleep(1);
System.out.println("正在随机生成出生......");
sleep(1);
System.out.println("------------------------");
Pair<String, String> birth = new PartOfBirth().birth();
System.out.println(birth.getLeft());
System.out.println("你的出生地域为:" + birth.getRight());
sleep(1);
System.out.println("------------------------");
System.out.println("请输入数字选择初始武器:");
System.out.println("1.破旧长剑");
System.out.println("2.破旧法杖");
System.out.println("3.破旧法扇");
System.out.println("4.破旧匕首");
System.out.println("5.破旧短刀");
System.out.println("6.赤手空拳");
System.out.println("7.随机武器");
String[] initialWeapons = {"破旧长剑", "破旧法杖", "破旧法扇", "破旧匕首", "破旧短刀", "赤手空拳", "+99的新手剑"};
//对颜值和年龄在一定范围内随机初始化
State state = new State();
Random random = new Random();
state.setAppearance(random.nextInt(100));
state.setAge(random.nextInt(24));
GetWeapon(initialWeapons, scanner, state);
Material material = new Material();
sleep(1);
System.out.println("------------------------");
System.out.println("你已正式踏入登仙之旅,接下来的行动可自行选择!");
sleep(1);
actOfGame(scanner, state, skills, material, random);
sleep(3);
scanner.close();
}
private static void actOfGame(Scanner scanner, State state, Skills skills, Material material, Random random) {
if (state.getAge() >= state.getResidualLife() || state.gethP() <= 0) {
System.out.println("GameOver!");
System.out.println("请重启程序重修进行游戏");
return;
}
System.out.println("-----------------------");
sleep(1);
System.out.println("提示:输入数字进行选择");
String[] actOfGame = {"1修练", "2突破", "3炼丹", "4炼器", "5游历", "6历炼", "7查看修为", "8查看已装备技能"};
for (String s : actOfGame) {
System.out.println(s);
}
int act = scanner.nextInt();
switch (act) {
case 1:
if (state.getBoundarysCnt() == 11) {
System.out.println("你的修为已达至臻境界,无法继续修练");
actOfGame(scanner, state, skills, material, random);
}
state.setBoundaryCnt(state.getBoundaryCnt() + 1);
//修练一次废时三年
state.setAge(state.getAge() + 3);
System.out.println("当前境界为:" + state.getBoundarys(state.getBoundarysCnt()) + ",已累计修练" + state.getBoundaryCnt() + "次");
System.out.println("境界突破后的首次修练可直接进行突破,突破失败重新修练三次后可进行一次【境界突破】");
System.out.println("修练失败时,累计修练次数不清零");
case 2:
//修练三次后突破一个境界
if (state.getBoundaryCnt() % 3 == 1) {
System.out.println("当前境界修练圆满,是否进行突破?");
System.out.println("提示,输入1进行突破。");
System.out.println("当前境界突破成功率为:" + (100 - (state.getBoundarysCnt() * 100 / 33)) + "%");
int i = scanner.nextInt();
//用于突破概率随机,随机到的数字比当前境界【在境界数组中】的位置数小时,突破失败
int i1 = random.nextInt(32);
if (i == 1 && i1 >= state.getBoundarysCnt()) {
state.setBoundarysCnt(state.getBoundarysCnt() + 1);
//境界提升寿限翻1.5倍,攻击防御生命值成长
boundaryUp(state, state.getBoundarysCnt());
System.out.println("突破成功!当前境界为:" + state.getBoundarys(state.getBoundarysCnt()));
state.setBoundaryCnt(0);
} else if (i == 1 && i < state.getBoundarysCnt()) {
state.setBoundarysCnt(state.getBoundarysCnt() - 1);
System.out.println("突破失败!境界下滑,当前境界为:" + state.getBoundarys(state.getBoundarysCnt()));
} else {
System.out.println("未选择突破境界。");
}
} else {
System.out.println("要进行境界突破请先进行修练!");
}
break;
case 3:
System.out.println("请选择需要炼制的丹药:");
String[] medicine = {"1.驻颜丹", "2延寿丹", "3三圣丹", "4九转真凰丹", "5穷天碧落丹", "6太乙通玄丹", "7化清真墟丹"};
for (String s : medicine) {
System.out.println(s);
}
int i = scanner.nextInt();
switch (i) {
case 1:
//炼制丹药用时一年
state.setAge(state.getAge() + 1);
int i1 = random.nextInt(10);
if (i1 <= 7) {
state.setAppearance(state.getAppearance() + 10);
System.out.println("炼制驻颜丹成功!用丹后气质外貌得到了提升");
System.out.println("当前颜值为:" + state.getAppearance());
} else {
System.out.println("驻颜丹炼制失败!");
}
break;
case 2:
state.setAge(state.getAge() + 1);
int i2 = random.nextInt(24);
if (i2 >= 7) {
state.setResidualLife(state.getResidualLife() + 20);
System.out.println("炼制延寿丹成功!用丹后寿限得到了提升");
System.out.println("当前寿限为:" + state.getResidualLife());
} else {
System.out.println("延寿丹炼制失败!");
}
break;
case 3:
state.setAge(state.getAge() + 3);
int i3 = random.nextInt(21);
if (i3 >= 7) {
state.setAtk(state.getAtk() + 100);
state.setDef(state.getDef() + 100);
state.sethP(state.gethP() + 1000);
System.out.println("炼制三圣丹成功!用丹后三维属性得到了提升");
System.out.println("当前攻击力:" + state.getAtk());
System.out.println("当前防御力:" + state.getDef());
System.out.println("当前生命值上限:" + state.gethP());
} else {
System.out.println("三圣丹炼制失败!");
}
break;
case 4:
int i4 = random.nextInt(49);
if (state.getBoundarysCnt() == 11 && i4 >= 9 && state.getTurnsCnt() < 9) {
state.setAge(state.getAge() + 9);
state.setBoundarysCnt(0);