因为想知道自己的脸到底可以有多黑,所以我写了这段代码(又称寿命游戏模代码)

众所周知,现在中国市场上的大部分网游无非“传奇”、“抽卡”之类,这些游戏通过策划的缜密规划,不少玩家深陷其中,为的就是得到得到虚拟世界的满足感和成就感。比如登陆多少天送SSR,签到满多少天送极品屠龙宝刀,保底十连抽数不胜数。游戏策划们通过这种奖励形式的游戏机制,让玩家在玩游戏的同时以少量的代价获得巨大的”利益“,也促使他们的欲望越变越大,最终深陷泥潭。
而有的策划,因为想留住玩家,想出来各种各样的奇葩玩法让玩家获得游戏道具,以增加用户黏性
就比如下面这个玩法机制

游戏规则

在这里插入图片描述
在图片的第一行提示了游戏的玩法:
一共9张牌,刚开始每张牌都是背面,每天有20次机会,1次可以随机翻开1-3张牌,9张都被翻开则视为成功
看似人畜无害的翻牌游戏,其实背后隐瞒着惊天大秘密,且不说9张牌,即使把牌数减少到6张,其概率也是难以想象的低。之前有幸吃饱了撑着算了另一个游戏的概率,竟然低至0.23%,前后总共花了2周时间才通关。还有王法吗?还有天理吗?!带着愤慨的情绪,我随手打开另一个游戏,为的就是让自己认清现实(看看我有多长寿),于是写了一个关于需要花多少天的时间可以通关的代码


代码思路

  • 首先一共有9张牌,每张都有正反面,我们不妨初始化一个大小为9的整型数组,正反面用正负数表示
  • 利用循环语句判断9张牌是否都翻面了 如果没有 我们就执行再翻一次的方法
  • 在再翻一次的方法中 我们需要初始化4个随机整形变量,3个用来选择翻牌牌序,1个用来判断翻几张牌
  • 定义一个全局变量time,用来计数次数,最后再对time/20+1,用来计算天数(一天只能玩20次)

成果演示

下面是编辑好的代码 还有一些小细节没优化就不用在意了

public class SeerTest2 {
    int time = 1;
    int[] arr = new int[]{1,2,3,4,5,6,7,8,9};//9张牌
    boolean isSuccess = false;

    public static void main(String[] args) {
        SeerTest2 seerTest2 = new SeerTest2();
        seerTest2.fanPai();
        System.out.println((seerTest2.time/20)+1+"天");
    }

    //六界神王翻牌
    public void fanPai(){
        while (!isSuccess){
            time++;
            //判断牌是否都翻完
            for (int i = 0;i < arr.length;i++){
                if (arr[i] != -(i+1)){
                    break;
                }
                else if (i == arr.length-1){
                    isSuccess = true;//判断到最后一张还是翻过的那就说明都翻完了
                }
            }
            zaiFan();
        }
    }

    //再翻一次牌
    public void zaiFan(){
        while (!isSuccess) {
            //初始化三张牌的牌序
            int a = 0;
            int b = 0;
            int c = 0;
            int x = 0;
            //如果牌序一样的就重新再随机直到三张牌序分别不一样
            while (a == b || a == c || b == c) {
                a = (int) (1 + Math.random() * 9);
                b = (int) (1 + Math.random() * 9);
                c = (int) (1 + Math.random() * 9);
            }
            //选择翻牌牌数
            x = (int) (1 + Math.random() * 3);
            switch (x){
                case 1:arr[a - 1] = -arr[a - 1];break;
                case 2:arr[a - 1] = -arr[a - 1];arr[b - 1] = -arr[b - 1];break;
                case 3:arr[a - 1] = -arr[a - 1];arr[b - 1] = -arr[b - 1];arr[c - 1] = -arr[c - 1];
            }
            break;

        }
    }
}

光放代码没有,我给大家运行看看
测试1:113天
测试2:69天
测试3:5天
测试4:3天
测试5:17天



**应该在主函数里遍历50次方法再算平均值的 不过看到3天也能出的概率我很欣慰(虽然我已经打了3天了)**

the end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值