Exemple #1
0
    void phase4Guess()
    {
        int    enemyHP = 10000, allyHP = 2000;
        int    enemyCombo = 1, allyCombo = 1;
        Random random = new Random();
        string readin;
        int    rndNumber = random.Next(1, 100);
        int    currentstate = 0, tryState = 0;

        int[] prime = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59
                                  , 61, 67, 71, 73, 79, 83, 89, 97 };
        bool isPrime = prime.Contains(rndNumber);

        SpecialWrite.SleepWrite(ConsoleColor.White,
                                @"现在是天启历2022年,距离地球舰队和三体人宣战已经过了3000年
借着银河碳基联邦的先进科技,地球获得了一个强大的武器:奇点炸弹
距离最终决战还有17个恒星时,地球舰队正在准备组织进攻
奇点炸弹的发射装置需要准备由奇点炸弹的核心定义的攻击序列,以使得奇点炸弹在正确的时间和地点引爆。攻击序列的获取需要不断对奇点炸弹的核心进行询问,有如下两种指令:
", 50);
        SpecialWrite.SleepWrite(ConsoleColor.Green, "Query ", 50);
        SpecialWrite.SleepWrite(ConsoleColor.White, "Intenger\n", 50);
        SpecialWrite.SleepWrite(ConsoleColor.Green, "Answer ", 50);
        SpecialWrite.SleepWrite(ConsoleColor.White, "Bool\n", 50);
        SpecialWrite.SleepWrite(ConsoleColor.White,
                                @"
其中Query返回攻击序列能否被Number整除
而Answer 1/0 的1代表这个奇点炸弹的序列是素数,0代表不是;错误的回答将会导致奇点炸弹无法正常引爆。
不出意外,人类舰队的旗舰攻击AI,由于无法修复的BUG(由10000年前印度人的后裔制作)偶尔会罢工,以至于人类无法正常组织进攻。
作为指挥官,你确保了其他东西万无一失,但唯独漏了这个。
我们认为对方舰队的HP为10000,出于技术原因,我们舰队的HP为2000
每个攻击序列为素数的引爆都会使得combo+1,造成1000*combo的伤害
每个攻击序列不是素数的引爆,会造成200*(combo+2)的伤害
如果攻击序列判断错误,或者在15次之内没有给给出答案,我们就会因为时间的浪费,而失去100*enemyCombo++点HP,此时奇点炸弹的序列会重设。
你现在需要输入你的指令。
。                       
。                       
", 50);
        while (enemyHP > 0)
        {
            if (tryState == 15)
            {
                Console.WriteLine("你被击中了");
                allyHP   -= 100 * (enemyCombo++);
                tryState  = 0;
                rndNumber = random.Next(1, 100);
                isPrime   = prime.Contains(rndNumber);
                Console.WriteLine($"你剩余HP {allyHP},你的combo {allyCombo},敌方剩余HP {enemyHP},敌方Combo {enemyCombo},");
            }
            SpecialWrite.Write(ConsoleColor.DarkGreen, "等待下一条指令......");
            readin = Console.ReadLine();
            if (readin.ToLower().Contains("query"))
            {
                readin = readin.Remove(0, 6);
                if (int.TryParse(readin, out currentstate))
                {
                    if (currentstate == 0)
                    {
                        SpecialWrite.Write(ConsoleColor.DarkMagenta, "False\n");
                    }
                    else if (rndNumber % currentstate == 0)
                    {
                        SpecialWrite.Write(ConsoleColor.DarkBlue, "True\n");
                    }
                    else
                    {
                        SpecialWrite.Write(ConsoleColor.DarkMagenta, "False\n");
                    }
                    tryState++;
                }
                else
                {
                    Console.WriteLine("SystemInterface:参数有误,请重试");
                }
            }
            else if (readin.ToLower().Contains("answer"))
            {
                readin = readin.Remove(0, 7);
                if (int.TryParse(readin, out currentstate))
                {
                    if (isPrime && currentstate == 1 || !isPrime && currentstate == 0)
                    {
                        if (isPrime)
                        {
                            enemyHP -= 1000 * allyCombo++;
                        }
                        else
                        {
                            enemyHP -= 200 * (allyCombo + 2);
                        }
                        enemyCombo = 1;
                        Console.Write($"命中! 你的combo {allyCombo},敌方剩余HP {enemyHP}");
                        rndNumber = random.Next(1, 100);
                        isPrime   = prime.Contains(rndNumber);
                        tryState  = 0;
                    }
                    else
                    {
                        SpecialWrite.Write(ConsoleColor.DarkRed, "我们未能穿透他们的装甲!\n我们被击中了!\n");
                        allyHP   -= 100 * (enemyCombo++);
                        rndNumber = random.Next(1, 100);
                        isPrime   = prime.Contains(rndNumber);
                        Console.WriteLine($"你剩余HP {allyHP},你的combo {allyCombo},敌方剩余HP {enemyHP},敌方Combo {enemyCombo},");
                        tryState = 0;
                    }
                    if (enemyHP <= 0)
                    {
                        Console.WriteLine("胜利!敌方舰队灰飞烟灭");
                        state = 99;
                        saveGame();
                        return;
                    }
                    if (allyHP <= 0)
                    {
                        Console.WriteLine("我们失败了,快撤!\n世界正在重置中...");
                        //删存档重来
                        state = 0;
                        saveGame();
                        return;
                    }
                }
                else
                {
                    Console.WriteLine("SystemInterface:参数有误,请重试");
                }
            }
            else
            {
                Console.WriteLine("SystemInterface:指令有误,请重试");
            }
        }
    }
Exemple #2
0
    void phase2Guess()
    {
        Random random       = new Random();
        int    targetNumber = random.Next(1, 100);
        int    tryState     = 0;  //尝试的次数
        int    isHacked     = 0;  //被干扰的次数,为了照顾某些非洲人,当 ==2时不会被再次干扰
        int    currentState = 70; //干扰的概率
        int    current;           //忘了
        bool   isTrue = false;    //是否被干扰
        string readin;            //读入字符串
        string refuse = "NO";     //想再做个分支来着
        P2Item item   = new P2Item();

        {
            Console.Clear();
            Console.WriteLine("8102年,宇宙碳基联邦来到地球检验人类发展程度,结果一切良好,认为可以继续存活上千年");
            Console.WriteLine("然而,他们的探测记录被地球三体组织的…你,发现了");
            Console.WriteLine("你认为这是一个绝佳的传递信息的机会,于是拿出了手上的Scanner,来到了离你最近的Portal,意图透过碳基联邦留下的Portal网络向三体人传播信息。");
            Console.WriteLine("要利用银河碳基联邦的强大的广播系统,你必须要使用一系列密钥来Hack进去");
            Console.WriteLine("利用你手上Scanner在加上LAWSON Core强大的Exotic Matter能量供给,你成功破解了他们独有的Glyph加密系统。");
            Console.WriteLine("你将他们的加密系统简化,只需要通过猜测数字,就能成功将你的数据流合法地传送出去。");
            Console.WriteLine("不料,经过Portal的信息流被意图反抗三体人的一群人所监视,我们称他们为反抗军(Resistance)。在反抗军的Control Field内,你发出去的每一比特信息,都由70 % 的概率被反抗军的AEGIS SHEILD干扰,使得你与三体人主机的公钥交换被扰乱,无效化。");
            Console.WriteLine("你只能通过下一次三体人给你反馈的信息得知,你上一次的信息是否合法。");
            Console.WriteLine("经过爆肝,你已经成功把三体人的密钥锁定在了3148401 与 3148500之间,为了简化,取1 - 100");
            Console.WriteLine("现在你还有10次机会和三体人交换密钥信息。如果超过了10次,三体人会将你视为不可信探员,拒绝联络;你的密钥也将会被反抗军所破解,使得地球三体组织的计划败露。");
            SpecialWrite.Write(ConsoleColor.DarkRed, "你开始了最后的尝试……\n");
        }
        while (tryState <= 10)
        {
            SpecialWrite.Write(ConsoleColor.Green, "等待下一条指令");
            readin = Console.ReadLine();
            int rnd = random.Next(1, 100);//读入,生成随机状态
            switch (readin.ToLower())
            {
            case "hack":     //想要有道具功能,但并没有实现数量,可以直接输入使用
                Console.WriteLine("你觉得在进行下一步行动之前要先hack一遍这个portal");
                if (item.hack > 0)
                {
                    item.hack--;
                    if (rnd > 98)
                    {
                        item.jarvis++; Console.WriteLine("Jarvis Virus ++\n你大概是欧皇,居然hack到了Jarvis Virus");
                    }
                    else if (rnd > 95)
                    {
                        item.us++; Console.WriteLine("L8 UltraStrike ++");
                    }
                    else if (rnd > 70)
                    {
                        item.xmp++; Console.WriteLine("L5 XMP++");
                    }
                    else
                    {
                        Console.WriteLine("然鹅什么也没有发生");
                    }
                }
                else
                {
                    Console.WriteLine("Portal烧毁,等待4小时重置");
                }
                continue;

            case "xmp":
                if (item.xmp == 0)
                {
                    continue;
                }
                Console.Write(@"
一个小小的XMP
你看着你的库存 像一个肥宅一样哭了起来
要XMP有什么用吗,又没有办法破除盾的保护。。。
然而但你抛出一个Lv7的XMP时,你意外的发现那个盾的1/4不见了
你开心的想用下一个,可是身为非洲人的你,剩下142个XMP全部没有对那个Shield造成一点伤害
你又像一个肥宅一样哭了起来
");
                SpecialWrite.Write(ConsoleColor.Yellow, "RP--\n概率+10%\n");
                if (currentState < 100)
                {
                    currentState += 10;
                }
                item.xmp--;
                continue;

            case "ultrastrike":
                //不存在
                continue;

            case "jarvisvirus":
                if (item.jarvis == 0)
                {
                    continue;
                }
                Console.WriteLine("你犹豫着,按下了启动按钮\n......");
                SpecialWrite.SleepWrite(ConsoleColor.Red, "推翻人类暴政\n地球属于三体\n", 300);
                state = 3;
                saveGame();
                return;

            default:
                if (!int.TryParse(readin, out current))
                {
                    Console.WriteLine("用这个密钥加密的信息流发不出去,或者,你给Scanner的指令错了\n小心没电/滑稽");
                    continue;
                }
                else if (rnd > currentState && isHacked != 2)
                {
                    isHacked++;
                    int p;
                    p = new Random().Next(1, 10000);
                    if (p > 5000)
                    {
                        Console.WriteLine("Out:过大");
                    }
                    else if (p == 5000)
                    {
                        Console.WriteLine("密钥校对成功......正在建立连接......\n");
                        SpecialWrite.SleepWrite(ConsoleColor.Red, "推翻人类暴政\n地球属于三体\n", 300);
                        state = 3;
                        saveGame();
                        return;
                    }
                    else
                    {
                        Console.WriteLine("Out:过小");
                    }
                    tryState++;
                    isTrue = true;
                    continue;
                }
                else if (current > targetNumber)
                {
                    Console.WriteLine("Out:过大");
                    tryState++;
                }
                else if (current < targetNumber)
                {
                    tryState++;
                    Console.WriteLine("Out:过小");
                }
                else if (current == targetNumber)
                {
                    Console.WriteLine("密钥校对成功......正在建立连接......\n");
                    SpecialWrite.SleepWrite(ConsoleColor.Red, "推翻人类暴政\n地球属于三体\n", 300);
                    state = 3;
                    saveGame();
                    return;
                }
                if (isTrue)
                {
                    isTrue = false;
                    Console.WriteLine("你的上一次结果被干扰了");
                }
                continue;
            }
        }
        Console.Clear();
        SpecialWrite.SleepWrite(ConsoleColor.White, "                \n......\n你知道你失败了,只是你不想说......", 200);
        state = 4;
        saveGame();
        return;
        //throw new NotImplementedException();
    }