模拟地下城与勇士(DNF)的装备强化过程

标题模拟的要求

做一个DNF装备强化的简单项目,强化装备的成功率会随着装备等级的增加而降低。

  1. 提示1:
  • DNF装备强化在+1~+3 不会失败;
  • +4~+7,失败后物品原有强化等级降低1级;
  • +8~+10,失败后掉3级;
  • 10上11或以上就爆了。

提示2:

  • DNF装备强化1~3级,成功率100%
  • DNF装备强化3~4级,成功率95%
  • DNF装备强化4~5级,成功率90%
  • DNF装备强化5~6级,成功率80%
  • DNF装备强化6~7级,成功率75%
  • DNF装备强化7~8级,成功率62.1%
  • DNF装备强化8~9级,成功率53.7%
  • DNF装备强化9~10级,成功率41.4%
  • DNF装备强化10~11级,成功率33.9%
  • DNF装备强化11~12级,成功率28%
  • DNF装备强化12~13级,成功率20.7%
  • DNF装备强化13~14级,成功率17.3%
  • DNF装备强化14~15级,成功率13.6%
  • DNF装备强化15~16级,成功率10.1%

**

实现流程:

**

要求输入装备的原始等级,输入1执行强化,根据原始等级以及强化的成功率,显示装备的强化结果

代码程序:

//在工程里创建一个包(package)
package com.softeem.lesson04.example;
//引用“Scanner”来使用户能够通过键盘自行输入数据
	import java.util.Scanner;
//创建类(class)
	public class Work {
//主函数(main)
		public static void main(String[] args) {
		//Scanner输入
			Scanner sc = new Scanner(System.in);
			//打印出"装备当前等级:"
			System.out.println("装备当前等级:");
			//定义一个用户可以通过键盘输入的数据类型
			int i = sc.nextInt();
			//通过switch语句来实现功能
			// i 表示用户输入的等级
			switch(i) {
			//利用穿透性,i=1,2时都实现“i+=1”
			case 1:
			case 2:
				i += 1; 
				break;
			case 3:
			//设置一个随机数(0 - 1)
			//因为是小数,设置为double类型
				double d1 = Math.random();
				//利用if—else语句实现概率的功能
				//如果随机数小于等于0.95,等级加1
				if(d1 <= 0.95) {
					i += 1;
				}else {
				//不在这个范围内的话,等级减1
					i -= 1;
				}
				break;
			case 4:
				double d2 = Math.random();
				//如果随机数小于等于0.9,等级加1,否则减1
				if(d2 <= 0.9) {
					i += 1;
				}else {
					i -= 1;
				}
				break;
			case 5:
				double d3 = Math.random();
				//如果随机数小于等于0.80,等级加1,否则减1
				if(d3 <= 0.80) {
					i += 1;
				}else {
					i -= 1;
				}
				break;
				
			case 6:
				double d4 = Math.random();
				//如果随机数小于等于0.75,等级加1,否则减1
				if(d4 <= 0.75) {
					i += 1;
				}else {
					i -= 1;
				}
				break;
			case 7:
				double d5 = Math.random();
				//如果随机数小于等于0.621,等级加1,否则减1
				if(d5 <= 0.621) {
					i += 1;
				}else {
					i -= 3;
				}
				break;
			case 8:
				double d6 = Math.random();
				//如果随机数小于等于0.537,等级加1,否则减3
				if(d6 <= 0.537) {
					i += 1;
				}else {
					i -= 3;
				}
				break;
			case 9:
				double d7 = Math.random();
				//如果随机数小于等于0.414,等级加1,否则减3
				if(d7 <= 0.414) {
					i += 1;
				}else {
					i -= 3;
				}
				break;
			case 10:
				double d8 = Math.random();
				//如果随机数小于等于0.339,等级加1,否则清零
				if(d8 <= 0.339) {
					i += 1;
				}else {
					i = 0;
					System.out.println("真可惜,装备爆了");
				}
				break;
			case 11:
				double d9 = Math.random();
				//如果随机数小于等于0.28,等级加1,否则清零
				if(d9 <= 0.28) {
					i += 1;
				}else {
					i = 0;
					System.out.println("真可惜,装备爆了");
				}
				break;
			case 12:
				double d10 = Math.random();
				//如果随机数小于等于0.207,等级加1,否则清零
				if(d10 <= 0.207) {
					i += 1;
				}else {
					i = 0;
					System.out.println("真可惜,装备爆了");
				}
				break;
			case 13:
				double d11 = Math.random();
				//如果随机数小于等于0.173,等级加1,否则清零
				if(d11 <= 0.173) {
					i += 1;
				}else {
					i = 0;
					System.out.println("真可惜,装备爆了");
				}
				break;
			case 14:
				double d12 = Math.random();
				//如果随机数小于等于0.136,等级加1,否则清零
				if(d12 <= 0.136) {
					i += 1;
				}else {
					i = 0;
					System.out.println("真可惜,装备爆了");
				}
				break;
			case 15:
				double d13 = Math.random();
				//如果随机数小于等于0.101,等级加1,否则清零
				if(d13 <= 0.101) {
					i += 1;
				}else {
					i = 0;
					System.out.println("真可惜,装备爆了");
				}
				break;
			case 16:
			//如果输入等级为16,等级不变,输出提示“已强化至顶级”
				System.out.println("已强化至顶级");
			}
			System.out.println("武器强化结果:"+ i);
		}
	}


			
	

**

结果展示

输入等级为4时,如果随机数大小在范围内,即升级成功,等级加1,显示结果为5
**在这里插入图片描述
输入等级为6时,如果随机数大小不在范围内,即升级失败,等级减1,显示结果为5
在这里插入图片描述
输入等级为8时,如果随机数大小不在范围内,即升级失败,等级减3,显示结果为5
在这里插入图片描述
输入等级为10时,如果随机数大小不在范围内,即升级失败,等级清零,显示结果为5
在这里插入图片描述
输入等级为16时,无法继续强化装备,等级不变,显示结果为16
在这里插入图片描述nter)

**

总结

**为了实现该想法需求的功能,我们主要通过:
Scanner: 实现键盘输入数据的功能;
switch语句: 判定输入数据,在1 至 16 的范围内,根据输入数据的不同得到不同的升级概率
if-else:通过随机数与设置具体值的比较,得到相应的升级概率。
Math.random: 随机数(double 类型),大小在0到1之间波动,通过它来实现概率的变化。

虽然题目要求比较简单,我们用来实现功能用到的语句较少,实现的功能比较单一。与现实生活中的游戏设计中相比较为简单,考虑的因素较少。但是总体上还是完整实现了题目要求的功能。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值