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:指令有误,请重试"); } } }
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(); }