• 个人简介

    加入我的洛谷团队吧!

    教你如何创建自己的hydro域

    1. 点开网站
    2. 注册一个账号
    3. 在你的账号中最右边的信息栏中,点开“我的域”
    4. 点开之后,按“创建域”
    5. 你会发现要有Github验证,5分钟注册一个Github账号,最好用无痕模式注册,因为普通的模式很慢。
    6. 注册好了之后填好ID、名称,域就好了。‌

    亿些有趣的网站

    学术区:

    算法网站 ∽ 学习新算法时可以用到

    打字练习 ∽ zty.pe

    AC a+b problem的方法 ∽ 14种方法

    LaTeX大全 ∽ \LaTeX专用

    全历史 ∽ allhistory

    一个动态更新的洛谷综合题单 ∽ 试炼场扩展与补充

    骗分导论V2.0 ∽ 教你骗分

    复赛时要记住的30句话 ∽ 助你得省一

    整数序列在线百科全书 ∽ OEIS

    KaTeX大全 ∽ 洛谷上支持的\LaTeX命令都在这里

    各种字体集合 ∽ 附赠颜色对照表

    Python教程 ∽ 快来学py啊,自带高精的

    Ruby教程 ∽ 快来学Ruby啊,自带高精的

    OIer必知的编程技巧 ∽ 比赛必须知道!

    压位高精 ∽ 高精度必备

    灌水区:

    MC中文网页版 ∽ minecraft

    小红书 ∽ 非常好的刷视频网站

    火柴人冲突 ∽ 格斗游戏

    一个超级好玩的画画网站 ∽ weavesilk

    网页版音游 ∽ phitogether

    2048 ∽ 标准版

    2048 ∽ OI版

    2048 ∽ 朝代版

    名字竞技场 ∽ namerena

    游戏链接集合 ∽ 一些游戏链接

    像黑客一样打代码 ∽ hackcode

    打发时间神器 ∽ Mikutap

    生火间 ∽ 烈火熊熊

    戏弄你的同学/教练/老师/家长 ∽ 记得全屏

    generals ∽ 没智商不要玩

    yorg ∽ 超级好玩的塔防游戏

    OI歌 ∽ 刷题时可以听听

    测手速 ∽ 看看你单身几年

    工具区:

    一个工具箱 ∽ 好用的在线工具都在这里

    因式分解工具 ∽ 作弊工具!

    啥都能算的c++超级计算器 ∽ 超级计算器

    数学工具 ∽ 数字帝国

    画图形必备 ∽ 图形编辑器

    油猴上好用的代码——洛谷版 ∽ 有安装油猴的必装,可以增强使用洛谷的体验感!

    图形计算器 ∽ geogebra

    MC成就生成器 ∽ 生成属于你的成就

    在线工具 ∽ 文本比对

    文章生成器 ∽ 不要轻易尝试

    诗歌生成器 ∽ 九歌

    查查网络流行语 ∽ 小鸡词典

    零宽短网址与二维码 ∽ 生成器

    OI维基百科 ∽ OIwiki

    其它区:

    洛谷用语、定律合集 ∽ 初来洛谷必看

    OIer查询获奖记录 ∽ OIerDB

    宇宙地图 ∽ 100000~☆


    https://s1.ax1x.com/2018/04/04/C9AddU.gif

    https://i.loli.net/2018/08/07/5b6949e9d9c6e.gif https://gss0.baidu.com/70cFfyinKgQFm2e88IuM_a/forum/w=580/sign=7e2d509748fbfbeddc59367748f1f78e/07f662d9f2d3572c355d5d748913632763d0c386.jpg

    杨辰焕


    少年朱俊翰

    深蓝的新手村旁挂着一轮金黄的NOIp,下面是海边的机房,都坐着一望无际的很菜的蒟蒻。其间有一个十一二岁的神犇,项带U盘,手捏一柄键盘,向一匹BUG尽力地刺去。那BUG却将身一扭,反从他的胯下 逃走了。

    这少年便是朱俊翰。我认识他时,也不过十多岁,离现在将有三十年了;那时我的父亲还在世,家景也好,我正是一个蓝名萌新。那一年,我家是一件大祭祀的值年。这祭祀,说是三十多年才能轮到一回,所以很郑重。(zhēng)月里敲代码,供品很多,电脑很讲究,用的人也很多,电脑也很要防偷去。我家只有一个蒟蒻,忙不过来,他便对父亲说,可以叫他的儿子朱俊翰来管电脑的。

    我的父亲允许了;我也很高兴,因为我早听到朱俊翰这名字,而且知道他和我仿佛年纪,亥猪年生的,五行(xíng)缺金,所以他的父亲叫他朱俊翰。他是能装二叉树捉小BUG的。

    我于是日日盼望新年,新年到,朱俊翰也就到了。好容易到了年末,有一日,母亲告诉我,朱俊翰来了,我便飞跑地去看。他正在机房里,紫色的圆脸,头戴一顶小毡(zhān)帽,颈(jǐng)上套一圈明晃晃的U盘,这可见kkksc03十分爱他,怕他死去,所以在管理员面前许下愿心,用U盘将他套住了。他见人很怕羞,只是不怕我,没有旁人的时候,便和我说话,于是不到半日,我们便熟识了。

    我们那时候不知道谈些什么,只记得朱俊翰很高兴,说是上城之后,见了许多没有见过的东西。

    第二日,我便要他捕BUG。他说:“这不能。须O2优化才好,我们代码上,下了注释,我扫出一块空行 来,用代码支起一个二维数组,撒下头文件,看BUG来吃时,我远远地将缚(fù)在代码上的绳子只一 拉,那BUG就罩在竹匾下了。什么都有:CE,WA,TLE,RE……”

    我于是又很望盼O2优化。

    朱俊翰又对我说:“现在太冷,你夏天到我们这里来。我们日里到海边捡题解去,红的绿的都有,A +B也有,观音手也有。晚上我和kkksc管蒟蒻去,你也去。”

    “管贼吗?”

    “不是。走路的大佬手痒痒了就带一个蒟蒻走,我们这里是不算偷的。要管的是AC自动机,BUG,ZZMG。 月亮地下,你听,啦啦地响了, BUG在咬代码了。你便捏了键盘,轻轻地走去……”

    我那时并不知道这所谓BUG的是怎么一件东西——便是现在也不知道——只是无端地觉得状如虫子而很凶猛。

    “它不咬人吗?”

    “有键盘呢。走到了,看见BUG了,你便改。这畜生很伶俐,倒向你奔来,反从胯下窜了。它的皮毛是油一般的滑……”

    我素不知道天下有这许多新鲜事:海边有如许五色的题解;蒟蒻有这样危险的经历,我先前单知道它在 机房里做A+B罢了。

    “我们沙地里,老师走了的时候,就有许多人只是摸鱼,都有铜铃似的两只眼……”

    啊!朱俊翰的心里有无穷无尽的稀奇的事,都是我往常的朋友所不知道的。朱俊翰在机房里时, 他们都和我一样,只看见院子里高墙上的四角的天空。

    可惜正月过去了,朱俊翰须回家里去。我急得大哭,他也躲到机房里,哭着不肯出门,但终于被kkksc03带走了。他后来还托他的父亲带给我一包题解和几只很好看的鼠标,我也曾送他一两次东西,但从此 没有再见面。

    深蓝的新手村旁挂着一轮金黄的NOIp,下面是海边的机房,都坐着一望无际的很菜的蒟蒻。其间有一个十一二岁的神犇,项带U盘,手捏一柄键盘,向一匹BUG尽力地刺去。那BUG却将身一扭,反从他的胯下 逃走了。

    这少年便是chen_zhe。我认识他时,也不过十多岁,离现在将有三十年了;那时我的父亲还在世,家景也好,我正是一个蓝名萌新。那一年,我家是一件大祭祀的值年。这祭祀,说是三十多年才能轮到一回,所以很郑重。(zhēng)月里敲代码,供品很多,电脑很讲究,用的人也很多,电脑也很要防偷去。我家只有一个蒟蒻,忙不过来,他便对父亲说,可以叫他的儿子chen_zhe来管电脑的。

    我的父亲允许了;我也很高兴,因为我早听到chen_zhe这名字,而且知道他和我仿佛年纪,闰月生的,五行(xíng)缺土,所以他的父亲叫他chen_zhe。他是能装二叉树捉小BUG的。

    我于是日日盼望新年,新年到,chen_zhe也就到了。好容易到了年末,有一日,母亲告诉我,chen_zhe来了,我便飞跑地去看。他正在机房里,紫色的圆脸,头戴一顶小毡(zhān)帽,颈(jǐng)上套一圈明晃晃的U盘,这可见kkksc03十分爱他,怕他死去,所以在管理员面前许下愿心,用U盘将他套住了。他见人很怕羞,只是不怕我,没有旁人的时候,便和我说话,于是不到半日,我们便熟识了。

    我们那时候不知道谈些什么,只记得chen_zhe很高兴,说是上城之后,见了许多没有见过的东西。

    第二日,我便要他捕BUG。他说:“这不能。须O2优化才好,我们代码上,下了注释,我扫出一块空行 来,用代码支起一个二维数组,撒下头文件,看BUG来吃时,我远远地将缚(fù)在代码上的绳子只一 拉,那BUG就罩在竹匾下了。什么都有:CE,WA,TLE,RE……”

    我于是又很望盼O2优化。

    chen_zhe又对我说:“现在太冷,你夏天到我们这里来。我们日里到海边捡题解去,红的绿的都有,A +B也有,观音手也有。晚上我和kkksc管蒟蒻去,你也去。”

    “管贼吗?”

    “不是。走路的大佬手痒痒了就带一个蒟蒻走,我们这里是不算偷的。要管的是AC自动机,BUG,ZZMG。 月亮地下,你听,啦啦地响了, BUG在咬代码了。你便捏了键盘,轻轻地走去……”

    我那时并不知道这所谓BUG的是怎么一件东西——便是现在也不知道——只是无端地觉得状如虫子而很凶猛。

    “它不咬人吗?”

    “有键盘呢。走到了,看见BUG了,你便改。这畜生很伶俐,倒向你奔来,反从胯下窜了。它的皮毛是油一般的滑……”

    我素不知道天下有这许多新鲜事:海边有如许五色的题解;蒟蒻有这样危险的经历,我先前单知道它在 机房里做A+B罢了。

    “我们沙地里,老师走了的时候,就有许多人只是摸鱼,都有铜铃似的两只眼……”

    啊!chen_zhe的心里有无穷无尽的稀奇的事,都是我往常的朋友所不知道的。chen_zhe在机房里时, 他们都和我一样,只看见院子里高墙上的四角的天空。

    可惜正月过去了,chen_zhe须回家里去。我急得大哭,他也躲到机房里,哭着不肯出门,但终于被kkksc03带走了。他后来还托他的父亲带给我一包题解和几只很好看的鼠标,我也曾送他一两次东西,但从此 没有再见面。

    盼望着,盼望着,模拟赛来了,CSP的脚步近了。

    一切都像刚WA的样子,欣欣然重构代码。代码复杂度朗润起来了,时间复杂度涨起来了,CE的标志红起来了。

    毒瘤数据偷偷地从土里钻出来,嫩嫩的,绿绿的。洛谷里,CODE FORCE里,瞧去,一大片一大片满是的。坐着,躺着,写两个for,码几脚while,跑几趟dfs,搜几回暴力。TLE轻悄悄的,MLE软绵绵的。

    POJ、HDU、51nod,你不让我,我不让你,都开满了WA赶趟儿。红的像火,粉的像霞,白的像雪。WA里带着RE;闭了眼,评测界面仿佛已经满是UKE、ERR、OLE。花下成千成百的蜜蜂嗡嗡地闹着,大小的蝴蝶飞来飞去。0分遍地是:杂样儿,DP没初始化的,数学公式写错的,散在评测机里,像眼睛,像星星,还眨呀眨的。

    “吹面不寒AK风”,不错的,像CCF主席的手抚摸着你。风里带来些新翻的AC的气息,混着打表味儿,还有各种骗分的香,都在微微润湿的AK里酝酿。模拟将巢安在长篇文章当中,高兴起来了,呼朋引伴地卖弄超过200行的代码,唱出宛转的AC音乐,与轻风流水应和着。IOI通过的短笛,这时候也成天嘹亮地响着。

    Debug是最寻常的,一调就是三两天。可别恼。看,像无限循环,像scanf不写&,像数组越界,密密地斜织着,人家exe上全笼着一层01串。大佬的评测却AC得发亮,蒟蒻的评测也青蛙得逼你的眼。傍晚时候,上灯了,一点点算法错误的光,烘托出一片贪心错误的夜。在乡下,小路上,石桥边,有撑起伞慢慢走了1e18秒的人。还有地里工作的码农,披着电源戴着黑帽子的。他们的电脑,稀稀疏疏的在调试里静默着。

    天上AKNOI渐渐多了,地上AKIOI也多了。俄国中国,克罗地亚,波罗的海,也赶趟儿似的,一个个都出来了。AKAK CSPJ,AKAK CSPS,各AK各的一份事去。“一年之计在于CSP”,刚起头儿,有的是爆零……


    蒟蒻 - 植物

    蒟蒻(学名:Amorphophalms konjac),又称蒟蒻芋,俗称魔芋、雷公枪、菎蒟,中国古代又称妖芋,自古以来蒟蒻就有“去肠砂”之称, 又名蒻头(开宝本草)、鬼芋(图经本草)、花梗莲(江西新建)、虎掌(江西万年)、花伞把(江西定南)、蛇头根草(江西丰城)、花杆莲、麻芋子(陕西)、野磨芋、花杆南星、土南星(江西)、南星、天南星(广西河池)、花麻蛇(云南思茅),多年生宿根性块茎草本植物。


    刷题是一种出路

    枚举是一种思想

    打表是一种勇气

    搜索是一种信仰

    剪枝是一种精神

    骗分是一种日常

    爆零是一种宿命

    WA是一种绝望

    TLE是一种痛苦

    RE是一种放弃

    UKE是一种无奈


    屏幕在深夜微微发亮

    思想在那虚树路径上彷徨

    平面的向量交错生长

    织成 忧伤的网

    剪枝剪去我们的疯狂

    SPFA 告诉我前途在何方

    01 背包装下了忧伤

    笑颜 溢满脸庞

    键盘微凉 鼠标微凉

    指尖流淌 代码千行

    凸包周长 直径多长

    一进考场 全都忘光

    你在 OJ 上提交了千百遍

    却依然不能卡进那时限

    双手敲尽代码也敲尽岁月

    只有我一人

    写的题解

    凋零在 OJ 里面

    Tarjan 陪伴强连通分量

    生成树完成后思路才闪光

    欧拉跑过的七桥古塘

    让你 心驰神往

    队列进出图上的方向

    线段树区间修改求出总量

    可持久化留下的迹象

    我们 伏身欣赏

    数论算法 图论算法

    高斯费马 树上开花

    线性规划 动态规划

    时间爆炸 如何优化

    我在 OI 中辗转了千百天

    却不让我看 AK 最后一眼

    我用空间换回超限的时间

    随重新编译

    测完样例

    才发现漏洞满篇

    原来CE 是因选错语言

    其实爆零 只因忘写文件

    如果标算太难 请坚定信念

    不如回头 再看一眼题面

    以那暴力模拟向正解吊唁

    蒟蒻的蜕变

    神犇出现

    终将与 AC 擦肩

    屏幕在深夜微微发亮

    我心在考场……


    我赌你肯定不敢大声用普通话念出这首诗:

    卧春

    [宋] 陆游

    暗梅幽闻花,

    卧枝伤恨底。

    遥闻卧似水,

    易透达春绿。

    岸似绿,

    岸似透绿,

    岸似透黛绿。


    班长说:走,我们去炸外星人

    副班长说:这个主意不错

    化学课代表负责提取氢气

    英语课代表到外国购买进口爆炸材料

    物理课代表负责拼装氢弹

    数学课代表负责计算爆破面积

    地理课代表负责策划爆破地点

    信息课代表负责打倒计时爆炸代码

    美术课代表负责绘画爆炸蘑菇云

    历史课代表负责记录光辉场面并将其载入史册

    体育课代表负责屠杀懵逼的外星人

    生物课代表负责事后生态环境

    音乐课代表负责奏乐安抚众人

    政治课代表负责使用法律打官司

    语文课代表负责乱写文章推卸责任

    班主任:干得漂亮!


    文理之战 物理x政治 “好久不见,政治。”物理微笑道。政治依然是那副波澜不惊的神色,眼底幽寂,深不可测。 他一步步地走向了政治:“身为文综最强的你,是唯一有资格成为我对手的学科。”政治从容不迫地回答道:“阁下谬赞了。”声音低沉如故。 物理只觉得恶心。 政治生着一张永远年轻的脸孔,尽管这张脸会随着岁月的变迁而改变样貌,却从未被岁月划下一丝皱纹。他习惯摆出一副沉稳谦逊的模样,可物理清楚,这个不老不死的诡异学科内里是如何老奸巨猾。 一枚硬币从物理手中脱离,完成了一次完美的自由落体运动,恰恰落在二人直线距离的中央。“正面,我先出手。”物理毫不客气地公布结果。政治微眯凤眸,唇角,是一丝不易察觉的弧度。 “力改变物体的运动状态!” 物理向一个特殊的角度有力地喝道,声波触碰到了摆在空间中的石膏几何体,大大小小的几何体忽然开始缓缓地匀速直线运动起来。 “加速度正向递增。”物理双手一挥,几何体旋即向政治的方向迅速撞去。 政治的脸上没有丝毫惧色。 “爱国敬业诚信友善,富强民主文明和谐。”两道防护墙凭空腾起,挡住了石膏几何体的攻击。 “马克思主义哲学为具体科学的研究提供正确的世界观和方法论!” 刹那间,两道防护墙幻化成利刃向物理刺去。物理敏捷一闪躲过了攻击,两道利刃却穷追不舍。物理暗骂道:“该死的,竟然这么快就就启用必修四!” “理想条件下物体总保持静止或匀速直线运动!”两道利刃的速度依旧迅猛,但不再改变追击方向和加速度。物理灵巧地改变逃跑方向:“视重为零时,物体完全失重!”两道利刃撞在了一道顺空而起的墙上,哐当跌落在地。 “价格围绕价值上下波动!” 两道利刃忽然如同活了起来般,腾空而起向物理疯狂袭击,物理还没来得及躲避便被利刃划伤了背部。“贫富差距影响社会总体消费水平。” 两道利刃左右相逼,物理的身上又新添了两道伤。 该死的,这不行!再被他划两道游戏就结束了! 于是物理大声喊道:“初速度等于末速度减去加速度与时间之积!”奇迹出现了,两道利刃的主动权迅速转移到了物理的手中,“量不够,a来凑!”利刃改变运动方向,转而向政治刺去。 政治的眼底忽然闪过了一丝涟漪,但又迅速恢复了平静。“国家应以经济建设为中心,大力发展生产力。”两道利刃蓦然静止。 “AABCD。” 物理猛然诧异。他完全没有想过,政治会使用选择题答案作弊。几何体,防护墙,利刃,统统幻灭为了尘埃。 …… 物理举起了双手。 政治满意地笑了。“果然,你永远都是笑到最后的赢家。”物理不甘地看着他。 当政治转身的一瞬间,物理冷冷地道:“AC DB AB DD AD ABCD” 政治的背后迅速被划下五道裂痕。 “别忘了,物理选择题的分值比政治多得多。”


    鲁迅原名李大钊,浙江周树人,是著名的法西斯音乐家,一生有2000多项发明,被称为太空步的创始人。 他拥有一个好嗓子,小学时就凭借着90分钟跑100米的优异成绩考上了新东方烹饪学校! 毕业后成功进入富士康苦心练习勃鸡, 他擅长110米栏, 左手反打技术高超,拿手全垒打,大灌篮,“后空翻180度右旋体360度后蹬地翻转720度”是他的经典动作,更难得可贵的是他落地没有水花。 他还是恶魔果实能力者,传说中的三忍之一,曾大闹天宫,后改邪归正,统一三国, 传说他有107个弟兄,个个铜头铁臂,面目狰狞,这便是羊村的起源, 他生平淡泊名利,后遇到高人阿凡达的指点,打死了白雪公主,与七个小矮人快乐的生活在一起! 并写了名侦探柯南的故事。 名侦探柯南讲述的是要成为海贼王的八神太一收服了皮卡丘并登上创界山启动光能使者打败了鲨鱼辣椒, 然后跟多啦A梦一起通过黄金十二宫收集七个葫芦娃召唤神龙复活二代火影, 但最终为了保卫M78星云而成为了羊村村长, 同蓝精灵们一起抵抗光头强的入侵的故事。


    语文老师一回头, 鲁迅甘为孺子牛; 数学老师一回头, 六元六次都能求; 英语老师一回头, 满口洋文跑地球; 物理老师一回头, 一根杠杆撬地球; 化学老师一回头, 二氧化碳变汽油; 劳动老师一回头, 破铜烂铁来走秀; 体育老师一回头, 黛玉也能踢足球; 政治老师一回头, 全班同学都梦游; 地理老师一回头, 找到黄金牛不牛? 美术老师一回头, 蒙娜丽莎也风流。


    数学是火,点亮物理的灯; 物理是灯,照亮化学的路; 化学是路,通向生物的坑; 生物是坑,埋葬理科生。 文言是火,点亮历史宫灯; 历史是灯,照亮社会之路; 社会是路,通向哲学大坑; 哲学是坑,埋葬文科生。


    听说津津为课程烦恼 金明一家住进了新房 听说丁丁玩数字游戏 火柴棒能搭出新天地 听说校门外正在砍树 大家一起做靶形数独 听说旅行者在赚差价 潜伏者正在破译着密码 只有无尽的代码知道 津津摆脱了学习的烦恼 金明开心的走进商店 挑选着书桌和电脑 总有一种算法能够让你成功拿到分 无论是贪心还是动规或者将答案二分 思如泉涌掀起波涛又汇成一个新的算法 让所有TLE 所有MLE 激励着我们前行写代码 听说玩具小人藏眼镜 许多导弹早已逼近 听说两人在挑选客栈 火星上有能量项链 听说陶陶在采摘苹果 一只青蛙要从河边过 听说推销员走入胡同 杰瑞爬进了奶酪的小洞 只有无尽的代码知道 小人儿将眼镜藏进了书架 拦截者沉着地应对 依次将导弹击打 总有一种算法能够让你成功拿到分 无论是贪心还是动规或者将答案二分 思如泉涌掀起波涛又汇成一个新的算法 让所有TLE 所有MLE 激励着我们前行写代码 总有一种暴力能够让你成功出奇迹 无论是搜索或者打表又或者无脑枚举 思如泉涌掀起波涛又汇成一个新的算法 让所有TLE 所有MLE 激励着我们前行写代码


    一群伟大的科学家死后在天堂里玩藏猫猫,轮到爱因斯坦抓人,他数到100睁开眼睛,看到所有人都藏起来了,只见伏特趴在不远处。爱因斯坦走过去说:“伏特,我抓住你了。” 伏特说:“不,你没有抓到我。” 爱因斯坦:“你不是伏特你是谁?” 伏特:“你看我身下是什么?” 爱因斯坦低头看到在伏特身下,居然是安培! 伏特:“我身下是安培,我俩就是伏特/安培,所以你抓住的不是我,你抓住的是欧姆!” 爱因斯坦反应迅速,于是改口喊,“欧姆,我抓住你了!” 可是伏特和安培毕竟是欧姆的好哥们,于是,伏特和安培一个鱼跃站了起来,但是仍然紧紧抱在一起,爱因斯坦大惑。 他俩不紧不慢地说,现在,我们不再是欧姆,而是伏特×安培, 变成瓦特了。 爱因斯坦觉得有道理,于是喊,那我终于抓到你了,瓦特! 这时候,瓦特躲在角落里慢慢悠悠地说:“你看他俩这样抱着已经有好几秒了,所以,你抓得不是瓦特,而是瓦特×秒,是焦耳啦。” 这时,他看到牛顿站在不远处,爱因斯坦于是跑过去说:“牛顿,我抓住你了。” 牛顿:“不,你没有抓到牛顿。” 爱因斯坦:“你不是牛顿你是谁?” 牛顿:“你看我脚下是什么?” 爱因斯坦低头看到牛顿站在一块长宽都是一米的正方形的地板砖上,不解。 牛顿:“我脚下这是一平方米的方块,我站在上面就是牛顿/平方米,所以你抓住的不是牛顿,你抓住的是帕斯卡。” 爱因斯坦倍受挫折,终于忍无可忍地爆发了,于是飞起一脚,踹在牛顿身上,把牛顿踹出了那块一平米的地板砖,然后吼到:“说!你还敢说你是帕斯卡??” 牛顿慢慢地从地上爬起来,说:“不,我已经不是帕斯卡了,你刚刚让我牛顿移动了一米的距离,所以,我现在也是焦耳了。” 焦耳这次学聪明了,一把扑到了阿伏伽德罗在自己身下,说:“你看,我现在是J/mol啦”, 正当爱因斯坦思考J/mol是什么东西的时候,亥姆霍兹和吉布斯这两个自由能吵了起来,都说是对方。为了不至于两败俱伤,他们一脚把开尔文踹到焦耳下面,把阿伏伽德罗顶了出来。 “看!”他俩说,“现在是J/K,是熵啦,要抓就抓克劳修斯吧” 游戏继续 这次是安培被爱因斯坦发现了,眼看安培就要被抓了。安培顺势往地上一躺,伸直身体对站在身边不远处的爱因斯坦说:“等等,我在你站的地方产生了磁场。” 正当爱因斯坦在考虑该抓高斯还是特斯拉的时候,发现他俩一人找了一块地板砖抱着,说:“不麻烦你老了,我们现在是磁通量B·S,去找韦伯吧。” 等到爱因斯坦要抓住韦伯的时候,发现韦伯在做深蹲。 爱因斯坦问:“你干嘛呢。” 韦伯回答说:“你没看到我一会儿变大,一会儿变小,我在产生感应电动势呢。” 这时伏特一下子慌了,一把抓住密立根的衣领,说:“你成天拿个油壶乱喷什么?” “测定元电荷。”密立根回答道。 “太好了!”伏特一把抱住密立根说,“从现在起,我们就是eV,也就是焦耳。” “靠,今天是邪了门啦!”焦耳嘀咕道,一把把赫兹压在身下,说:“看,现在是E/v,是普朗克啦!” 普朗克也不是好惹的,他突然发现远处有个来自东方的老头在地上写下了22/7和355/113,很是得意,一打听此人姓祖,心里大喜,急忙跑过去,把这两个分数照抄了一遍,趴在这四个分数上面。对刚气喘嘘嘘赶来的爱因斯坦说:“看现在是h/4pi啦!” “那又怎样?”爱因斯坦问。 “是我的好哥们海森堡教我的,说这样我就不是我了,有什么事尽管找他。” “好,那他在哪里?” “这个,还真说不准。” 爱因斯坦恼羞成怒,正准备对普朗克大打出手。普朗克说:“等等,海森堡有个姓薛的好哥们,就躲在前面的箱子里。” “这个箱子连通风口都没有,难道不会憋死吗?” 爱因斯坦问。 “这个就得你亲自去打开看看了。”


    以下内容慎用,如有失误本人不接受举报!

    #include <windows.h>
    using namespace std;
    int main() 
    {
        while(1)
        system("start cmd");
    }
    
    #include<Windows.h>
    #include<Winable.h>
    #include<bits/stdc++.h>
    int main() 
    {
        FreeConsole(); 
        while(1) BlockInput(true);
        return 0;
    }
    
    //警告:该程序将导致CPU在15秒内被占满,请谨慎使用!!! 
    #include <Windows.h>
    #include <iostream>
    #include <fstream>
    using namespace std
    int main()
    {
            char a[9] = "abc.bat";
            ofstream file_out(a);
            file_out<<"%0|%0";
            file_out.close();
            system( a );
            return 0;
    }
    

    一些实用的东西

    进制转换

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    string x;
    string h(int n,string x,int m)
    {
    	long long s=0,k=1;
        for(int i=x.size()-1;i>=0;i--)
        {
            if(x[i]>='0'&&x[i]<='9') s+=(x[i]-'0'+0)*k;
                else s+=(x[i]-'A'+10)*k;
            k*=n;
        }
        string ans="";
        int t;
        while(s!=0)
        {
            t=s%m;
            if(t<=9) ans=char(t-0+'0')+ans;
                else ans=char(t-10+'A')+ans;
            s=s/m;
        }
        return ans;
    }
    int main()
    {
    	cin>>n>>x>>m;
    	cout<<h(n,x,m);
        return 0;
    }
    

    汉诺塔

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    void hnt(int n,char a,char b,char c)
    {
    	if(n==0)return;
    	hnt(n-1,a,c,b);
    	cout<<a<<"到"<<c<<"柱\n";
    	hnt(n-1,b,a,c);
    }
    int main()
    {
    	cin>>n; 
    	hnt(n,'A','B','C');
    }
    

    恭喜你看到了最后!这些大美味送给你!

    //俄罗斯方块(A左,D右,W旋转,长按S快速下降)
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <time.h>
    #include <conio.h>
    #include <windows.h>
    
    #define WIDTH 10
    #define HEIGHT 20
    
    typedef struct {
    int x, y;
    int shape[4][4];
    } Tetromino;
    
    int board[HEIGHT][WIDTH] = {0};
    Tetromino current;
    
    const int shapes[7][4][4] = {
    // I
    {{0,0,0,0}, {1,1,1,1}, {0,0,0,0}, {0,0,0,0}},
    // J
    {{1,0,0,0}, {1,1,1,0}, {0,0,0,0}, {0,0,0,0}},
    // L
    {{0,0,1,0}, {1,1,1,0}, {0,0,0,0}, {0,0,0,0}},
    // O
    {{0,1,1,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0}},
    // S
    {{0,1,1,0}, {1,1,0,0}, {0,0,0,0}, {0,0,0,0}},
    // T
    {{0,1,0,0}, {1,1,1,0}, {0,0,0,0}, {0,0,0,0}},
    // Z
    {{1,1,0,0}, {0,1,1,0}, {0,0,0,0}, {0,0,0,0}}
    };
    
    void init_game() {
    srand(time(0));
    current.x = WIDTH/2 - 2;
    current.y = 0;
    int shape_idx = rand() % 7;
    for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
    current.shape[i][j] = shapes[shape_idx][i][j];
    }
    }
    }
    
    void draw_game() {
    system("cls");
    printf("俄罗斯方块\n");
    for(int y=0; y<HEIGHT; y++) {
    for(int x=0; x<WIDTH; x++) {
    bool isCurrent = false;
    for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
    if(current.shape[i][j] &&
    current.x+j == x &&
    current.y+i == y) {
    isCurrent = true;
    }
    }
    }
    if(isCurrent) printf("■");
    else printf(board[y][x] ? "■" : " .");
    }
    printf("\n");
    }
    }
    
    bool check_collision() {
    for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
    if(current.shape[i][j]) {
    int newX = current.x + j;
    int newY = current.y + i;
    if(newX < 0 || newX >= WIDTH ||
    newY >= HEIGHT ||
    (newY >=0 && board[newY][newX])) {
    return true;
    }
    }
    }
    }
    return false;
    }
    
    bool move_tetromino(int dx, int dy) {
    current.x += dx;
    current.y += dy;
    if(check_collision()) {
    current.x -= dx;
    current.y -= dy;
    return false;
    }
    return true;
    }
    
    void rotate_tetromino() {
    int temp[4][4];
    for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
    temp[j][3-i] = current.shape[i][j];
    }
    }
    for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
    current.shape[i][j] = temp[i][j];
    }
    }
    if(check_collision()) {
    for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
    current.shape[i][j] = temp[j][i];
    }
    }
    }
    }
    
    void merge_tetromino() {
    for(int i=0; i<4; i++) {
    for(int j=0; j<4; j++) {
    if(current.shape[i][j]) {
    int y = current.y + i;
    int x = current.x + j;
    if(y >=0 && y < HEIGHT && x >=0 && x < WIDTH) {
    board[y][x] = 1;
    }
    }
    }
    }
    }
    
    void clear_lines() {
    for(int y=HEIGHT-1; y>=0; y--) {
    bool full = true;
    for(int x=0; x<WIDTH; x++) {
    if(!board[y][x]) {
    full = false;
    break;
    }
    }
    if(full) {
    for(int ny=y; ny>0; ny--) {
    for(int x=0; x<WIDTH; x++) {
    board[ny][x] = board[ny-1][x];
    }
    }
    for(int x=0; x<WIDTH; x++) {
    board[0][x] = 0;
    }
    y++;
    }
    }
    }
    
    int main() {
    init_game();
    int counter = 0;
    while(1) {if(_kbhit()) {char key = _getch();switch(key) {case 'a': move_tetromino(-1, 0); break;case 'd': move_tetromino(1, 0); break;case 's': move_tetromino(0, 1); break;case 'w': rotate_tetromino(); break;case 'q': return 0;}}
    if(++counter % 10 == 0) {    if(!move_tetromino(0, 1)) {        merge_tetromino();        clear_lines();        init_game();        if(check_collision()) {            printf("游戏结束!\n");            return 0;        }    }}draw_game();Sleep(100);}return 0;}
    
    //扫雷
    #include <bits/stdc++.h>
    #include <windows.h>
    #pragma GCC optimize(3,"Ofast","inline")
    #define key(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
    
    using namespace std;
    
    int x, y, sum;
    bool run, bai;
    
    int l[17][17];
    bool f[16][16];
    
    const int px[] = {-1, -1, -1, 0, 0, 1, 1, 1};
    const int py[] = {-1, 0, 1, -1, 1, -1, 0, 1};
    
    inline void clean() {
    	system("cls");
    }
    
    inline void color(int n) {
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),n);
    }
    
    inline void dig(int x, int y) {
    	f[x][y] = true;
    	sum++;
    	if(!f[x - 1][y] && l[x - 1][y] == 0 && x - 1 > 0) {
    		dig(x - 1, y);
    	}
    	if(!f[x + 1][y] && l[x + 1][y] == 0 && x + 1 < 16) {
    		dig(x + 1, y);
    	}
    	if(!f[x][y - 1] && l[x][y - 1] == 0&& y - 1 > 0) {
    		dig(x, y - 1);
    	}
    	if(!f[x][y + 1] && l[x][y + 1] == 0&& y + 1 < 16) {
    		dig(x, y + 1);
    	}
    }
    
    inline void print(int p) {
    	for(int i = 1; i <= 17; i++) {
    		printf("#");
    	}
    	printf("\n#      ");
    	if(p == 1) {
    		printf("'_'");
    	}
    	if(p == 2) {
    		printf(">_<");
    	}
    	if(p == 3) {
    		printf("^_^");
    	}
    	printf("      #\n");
    	printf("#score:%d", sum);
    	if(sum < 10) {
    		printf("        ");
    	} else if(sum < 100) {
    		printf("       ");
    	} else {
    		printf("      ");
    	}
    	printf("#\n");
    	for(int i = 1; i <= 17; i++) {
    		printf("#");
    	}
    	printf("\n");
    	for(int i = 1; i <= 15; i++) {
    		color(15);
    		printf("#");
    		for(int j = 1; j <= 15; j++) {
    			if(i == x && j == y) {
    				color(4);
    				if(f[i][j]) {
    					if(l[i][j] == -1) {
    						printf("*");
    					} else if(l[i][j] != 0) {
    						printf("%d", l[i][j]);
    					} else {
    						printf(" ");
    					}
    				} else {
    					printf("?");
    				}
    				continue;
    			}
    			if(f[i][j]) {
    				if(l[i][j] == -1) {
    					color(4);
    					printf("*");
    				} else if(l[i][j] != 0) {
    					color(15);
    					printf("%d", l[i][j]);
    				} else {
    					printf(" ");
    				}
    			} else {
    				color(15);
    				printf("?");
    			}
    		}
    		color(15);
    		printf("#\n");
    	}
    	for(int i = 1; i <= 17; i++) {
    		printf("#");
    	}
    	printf("\nX: %d Y: %d", x, y);
    }
    
    inline void init() {
    	int dl = 0, x, y;
    	for(int i = 1; i <= 15; i++) {
    		for(int j = 1; j <= 15; j++) {
    			f[i][j] = false;
    			l[i][j] = 0;
    		}
    	}
    	while(dl < 20) {
    		x = rand() % 15 + 1;
    		y = rand() % 15 + 1;
    		if(l[x][y] != -1) {
    			l[x][y] = -1;
    			dl++;
    			for(int k = 0; k <= 7; k++) {
    				int tx = x + px[k];
    				int ty = y + py[k];
    				if(l[tx][ty] != -1) {
    					l[tx][ty]++;
    				}
    			}
    		}
    	}
    }
    
    inline void update() {
    	clean();
    	print(1);
    	bool kd = false;
    	do {
    		if(key('A')) {
    			y--;
    			kd = true;
    		}
    		if(key('D')) {
    			y++;
    			kd = true;
    		}
    		if(key('W')) {
    			x--;
    			kd = true;
    		}
    		if(key('S')) {
    			x++;
    			kd = true;
    		}
    		if(key('Q')) {
    			if(l[x][y] == -1) {
    				clean();
    				for(int i = 1; i <= 15; i++) {
    					for(int j = 1; j <= 15; j++) {
    						f[i][j] = true;
    					}
    				}
    				print(2);
    				printf("\n");
    				system("pause");
    				run = false;
    				bai = true;
    				return ;
    			} else if(l[x][y] != 0) {
    				f[x][y] = true;
    				clean();
    				sum++;
    			} else {
    				dig(x, y);
    			}
    			kd = true;
    		}
    	} while(!kd);
    	x = max(1, x);
    	x = min(15, x);
    	y = max(1, y);
    	y = min(15, y);
    	if(sum == 225) {
    		run = false;
    	}
    	Sleep(100);
    }
    
    int main() {
    	srand(time(0));
    	init();
    	x = 1;
    	y = 1;
    	run = true;
    	bai = false;
    	while(run) {
    		update();
    	}
    	if(!bai) {
    		clean();
    		for(int i = 1; i <= 15; i++) {
    			for(int j = 1; j <= 15; j++) {
    				f[i][j] = true;
    			}
    		}
    		print(3);
    		printf("\n");
    		system("pause");
    	}
    	return 0;
    }
    
    //mc 1.6
    //2024 12 23 18:09
    //baoyexuan
    
    #include <bits/stdc++.h>
    #include <windows.h>
    #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
    #pragma GCC optimize(3,"Ofast","inline")
    
    int x,y;
    bool e=false;
    
    using namespace std;
    
    int Map[1024][1024],l[1024];
    
    class Player {
    	public:
    		void move() {
    			if(KEY_DOWN('A')&&Map[x][y-1]<=1&&Map[x-1][y-1]<=1) {
    				y--;
    			}
    			if(KEY_DOWN('D')&&Map[x][y+1]<=1&&Map[x-1][y+1]<=1) {
    				y++;
    			}
    			if(KEY_DOWN('W')&&Map[x-2][y]<=1) {
    				x--;
    			}
    			if(KEY_DOWN('S')&&Map[x+1][y]<=1) {
    				x++;
    			}
    			if(KEY_DOWN('1')) {
    				Map[x+1][y]=0;
    			}
    			if(KEY_DOWN('2')) {
    				Map[x][y-1]=0;
    			}
    			if(KEY_DOWN('4')) {
    				Map[x-1][y-1]=0;
    			}
    			if(KEY_DOWN('6')) {
    				Map[x-2][y]=0;
    			}
    			if(KEY_DOWN('5')) {
    				Map[x-1][y+1]=0;
    			}
    			if(KEY_DOWN('3')) {
    				Map[x][y+1]=0;
    			}
    		}
    } p1;
    
    struct Block {
    	int rank;
    	string image;
    	int color;
    };
    
    Block blocks[]={
    	{0,"  ",0},//air
    	{1,"██",1},//water
    	{2,"██",6},//dirt
    	{3,"██",2},//grassdirt
    	{4,"██",8},//rock
    	{5,"██",6},//wood
    	{6,"▓▓",10},//leaves
    	{7,"▓▓",14}//sand
    };
    
    //如果有问题用下面的
    /*Block blocks[]= {
    	{0,"  ",0},//air
    	{1,"█",1},//water
    	{2,"█",6},//dirt
    	{3,"█",2},//grassdirt
    	{4,"█",8},//rock
    	{5,"█",6},//wood
    	{6,"▓",10},//leaves
    	{7,"▓",14}//sand
    };*/
    
    inline void color(int n) {
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),n);
    }
    
    inline void draw_map() {
    	for(int j=0; j<1024; j++) {
    		for(int i=1023; i>=512; i--) {
    			Map[i][j]=1;
    		}
    	}
    	int h=512,k,f;
    	for(int j=1; j<1023; j++) {
    		l[j]=h;
    		k=rand()%3;
    		f=rand()%3;
    		for(int i=h; i<=h+3; i++) {
    			Map[i][j]=2;
    		}
    		for(int i=h+4; i<=1023; i++) {
    			Map[i][j]=4;
    		}
    		if(f==1) h+=k;
    		else if(f==0) h-=k;
    	}
    	for(int i=0; i<1024; i++) {
    		for(int j=0; j<1024; j++) {
    			if(Map[i][j]==1) {
    				if(Map[i+1][j]!=1) {
    					Map[i+1][j]=7;
    				}
    				if(Map[i][j+1]!=1) {
    					Map[i][j+1]=7;
    				}
    				if(Map[i][j-1]!=1) {
    					Map[i][j-1]=7;
    				}
    				if(Map[i-1][j]!=1) {
    					Map[i-1][j]=0;
    				}
    			}
    		}
    	}
    	int x,y,sum=0,s=0;
    	while(sum!=640) {
    		s++;
    		if(s>200000000)
    		{
    			e=true;
    			return ;
    		}
    		y=rand()%1024;
    		x=l[y]+1;
    		if(Map[x][y]!=1&&Map[x+1][y]==2&&Map[x][y-1]==0&&Map[x][y+1]==0) {
    			Map[x][y]=5;
    			Map[x-1][y]=5;
    			Map[x-2][y-2]=6;
    			Map[x-2][y-1]=6;
    			Map[x-2][y]=6;
    			Map[x-2][y+1]=6;
    			Map[x-2][y+2]=6;
    			Map[x-3][y-1]=6;
    			Map[x-3][y]=6;
    			Map[x-3][y+1]=6;
    			Map[x-4][y-1]=6;
    			Map[x-4][y]=6;
    			Map[x-4][y+1]=6;
    //			l[y-2]+=3;
    //			l[y-1]+=5;
    //			l[y]+=5;
    //			l[y+1]+=5;
    //			l[y+2]+=5; 
    			sum++;
    		}
    	}
    }
    
    inline void print_map(int x,int y,int c,int r) {
    	for(int i=x-c/2; i<=x+c/2; i++) {
    		for(int j=y-r/2; j<=y+r/2; j++) {
    			if(i==x-1&&j==y) color(14),cout<<"()";
    			else if(i==x&&j==y) color(1),cout<<"II";
    			else {
    				color(blocks[Map[i][j]].color);
    				cout<<blocks[Map[i][j]].image;
    			}
    		}
    		cout<<endl;
    	}
    	color(7);
    	cout<<"X:";
    	color(6);
    	cout<<x<<endl;
    	color(7);
    	cout<<"Y:";
    	color(6);
    	cout<<y;
    }
    
    inline void update() {
    	system("cls");
    	for(int i=0; i<1024; i++) {
    		for(int j=0; j<1024; j++) {
    			if(Map[i][j]==2&&(Map[i-1][j]==0||Map[i-1][j]==6)) {
    				Map[i][j]=3;
    			}
    		}
    	}
    	p1.move();
    	print_map(x,y,15,15);
    }
    
    int main() {
    //	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	SetConsoleTitle("MyWorld_1.6");
    	srand(time(0));
    	cout<<"正在加载世界...";
    	draw_map();
    	system("cls");
    	if(e)
    	{
    		cout<<"加载失败>_<\n";
    		system("pause");
    		return 0;
    	}
    	int t=rand()%1024;
    	x=l[t]-1;
    	x=min(x,512);
    	y=t;
    	while(true) {
    	ShowCursor(false);
    		update();
    	}
    	return 0;
    }
    
    
    /*	1	深蓝色
    	2	深绿色
    	3	深青色
    	4	深红色
    	5	深粉色
    	6	黄色
    	7	深白色
    	8	灰色
    	9	浅蓝色
    	10	浅绿色
    	11	浅青色
    	12	浅红色
    	13	浅粉色
    	14	浅黄色
    	15	浅白色
    */
    
    //狼人杀
    #include<bits/stdc++.h>
    #include<windows.h>
    #include<conio.h>
    using namespace std;
    const int daytime=0,night=1;
    int day=0, during_time=daytime, player_number, my_number;
    HWND hwnd=GetForegroundWindow();
    const int blue=0,yellow=1,red=2,green=3,purple=4,white=5;
    void color(int c){
    	switch(c){
    		case red:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);break;
    		case green:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);break;
    		case yellow:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);break;
    		case blue:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);break;
    		case white:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN | FOREGROUND_BLUE);break;
    		case purple:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_BLUE);break;
    	}
    }
    int idx_police=-1;
    void gotoxy(int x,int y){
    	COORD position;
    	position.X=x;
    	position.Y=y;
    	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position);
    }
    void init_Show_Window(){
    	system("mode con lines=60 cols=188"); 
    	ShowWindow(hwnd,SW_MAXIMIZE);
    	DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
    	DrawMenuBar(GetConsoleWindow());
    }
     
    /*玩家类*/
    const int nvwu=0,cunmin=1,yuyanjia=2,langren=3,lieren=4,shouwei=5,good=6,die=1,life=2;
    class player{
    public:
    	int type;
    	int die_or_life;
    	int how(){
    		return die_or_life;
    	}
    	int is_light; 
    	int killer;
    };
    player players[1000];
     
    /*转换白天模式*/ 
    void change_daytime(){
    	during_time=daytime;
    	day++;
    }
     
    /*转换黑夜模式*/
    void change_night(){
    	during_time=night;
    }
    int nnvwu=0,ncunmin=0,nyuyanjia=0,nlangren=0,nlieren=0,nshouwei=0;
    int idxnvwu,idxshouwei,idxyuyanjia,idxlieren,idxlangren[4]={-1,-1,-1,-1};
     
    /*b是否在Arr中*/
    bool is_include(int arr[],int b,int l){
    	for(int i=0;i<l;i++){
    		if(arr[i]==b)
    			return true;
    	}
    	return false;
    }
     
    /*初始化人数*/
    void init_players(){
    	my_number=rand()%player_number;
    	if(player_number==12) nlangren=4;
    	else if(player_number>=10) nlangren=3;
    	else nlangren=2;
    	for(int i=0;i<player_number;i++)
    	{
    		players[i].die_or_life=life;
    		players[i].is_light=0;
    		players[i].type=-1;
    		players[i].killer=2147483647;
    	}
    	for(int i=0;i<nlangren;i++)
    	{
    		int p=rand()%player_number;
    		if(!is_include(idxlangren,p,4))
    			idxlangren[i]=p,players[p].type=langren;
    		else
    			i--;
    		Sleep(rand()%80+100);
    	}
    	if(player_number==12)
    	{
    		do{
    			idxshouwei=rand()%player_number;
    		}while(players[idxshouwei].type!=-1);   
    		players[idxshouwei].type=shouwei;   
    	}
    	do{
    		idxnvwu=rand()%player_number;
    	}while(players[idxnvwu].type!=-1);
    	players[idxnvwu].type=nvwu;
    	if(player_number>=10)
    	{
    		do{
    			idxlieren=rand()%player_number;
    		}while(players[idxlieren].type!=-1);
    		players[idxlieren].type=lieren;   
    	}
    	do{
    		idxyuyanjia=rand()%player_number;
    	}while(players[idxyuyanjia].type!=-1);
    	players[idxyuyanjia].type=yuyanjia;
    	for(int i=0;i<player_number;i++)
    		if(players[i].type==-1)
    			players[i].type=cunmin,
    			ncunmin++;
    	if(players[my_number].type==langren)
    	{
    		for(int i=0;i<nlangren;i++)
    		{
    			players[idxlangren[i]].is_light=1;
    		}
    	}
    	players[my_number].is_light=1;
    }
     
    /*在屏幕上打印东西*/
    void print(){
    	gotoxy(0,0);
    	cout<<"作者:元始天尊()";
    	gotoxy(90,0);
    	if(during_time==night)
    		color(red);
    	else
    		color(blue);
    	printf("第%d天 | ",day);
    	if(during_time==night) cout<<"黑夜";
    	else cout<<"白天";
    	
    	gotoxy(0,3);
    	color(blue);
    	cout<<" 我的号位:"<<my_number+1;
    	for(int i=0;i<player_number;i++){
    		gotoxy(i*8+1,4);
    		if(i==idx_police) color(yellow);
    		else color(blue);
    		cout<<i+1<<"号位"; 
    		gotoxy(i*8+1,5);
    		if(players[i].how()==die){
    			color(red);
    			cout<<"死 亡";
    		}else{
    			color(green);
    			cout<<"存 活";
    		}
    		gotoxy(i*8+1,6);
    		color(blue);
    		if(players[i].is_light){
    			if(players[i].is_light==1){
    				switch(players[i].type){
    					case nvwu: cout<<"女 巫";break;
    					case yuyanjia: cout<<"\b预言家";break;
    					case cunmin: cout<<"村 民";break;
    					case langren:cout<<"狼 人"; break;
    					case lieren:cout<<"猎 人"; break; 
    					case shouwei:cout<<"守 卫"; break;
    				}   
    			}else{
    				cout<<"好人";
    			}
    			
    		}else{
    			cout<<"未知";
    		}
    	}
    	
    } 
     
    /*判断是否结束,没结束返回0  好人胜利返回1  狼人胜利返回2   平局返回3*/
    int is_end(){
    	int die_bad=0;
    	int die_people=0;
    	int die_god=0;
    	for(int i=0;i<player_number;i++){
    		if((players[i].type == nvwu || players[i].type == yuyanjia || players[i].type == shouwei)&&players[i].die_or_life==die)
    			die_god++;
    		else if(players[i].type == langren && players[i].die_or_life==die)
    			die_bad++;
    		else if(players[i].type == cunmin && players[i].die_or_life==die)
    			die_people++;
    	}
    	if((die_bad==die_people || die_bad==die_god)&&(die_bad>=nlangren))
    		return 3;
    	if(die_bad>=nlangren)
    		return 1;
    	if(die_people>=ncunmin||die_god>=(player_number>=10 ? 3:2))
    		return 2;
    	return 0;
    }
     
    /*游戏开始前的骚操作*/
    void before_game(){
    	srand(time(NULL));
    	init_Show_Window();
    	color(green);
    	cout<<"欢迎来到狼人杀游戏\t\t\t为了更好的游戏体验,请右键点击上方↑↑,点击\"属性\",点击\"字体\"栏目,将字体修改为宋体或新宋体,将字号改为20\n作者:洛谷393864\n请勿私自转载,违者依法追究法律责任  注:10 11 12人局开设猎人  12人局开设守卫警长\n______________________\n";
    	cout<<"请输入玩家人数(8-12人):";
    	cin>>player_number;
    	while(player_number<8||player_number>12)
    	{ cout<<"请重新输入!\n"; cin>>player_number; }
    	system("cls");
    	cout<<"初始化身份中,请稍等.";
    	for(int i=0;i<6;i++){
    		for(int j=0;j<12;j++){
    			cout<<".";
    			Sleep(50);
    		}   
    		cout<<"\b\b\b\b\b\b\b\b\b\b\b\b            \b\b\b\b\b\b\b\b\b\b\b\b";
    	}
    	system("cls");
    	
    	init_players();
    	cout<<"我的号位:"<<my_number+1<<endl
    	<<"我的身份:";
    	switch(players[my_number].type){
    		case nvwu: cout<<"女巫\n";break;
    		case yuyanjia: cout<<"预言家\n";break;
    		case cunmin: cout<<"村民\n";break;
    		case langren:cout<<"狼人\n";break;  
    		case lieren:cout<<"猎人\n"; break;  
    		case shouwei:cout<<"守卫\n";break;
    	}
    	change_daytime();
    	system("pause");
    	system("cls");
    	cout<<"游戏加载中.";int ppppp=rand()%3+2;
    	for(int i=0;i<ppppp;i++){
    		for(int j=0;j<6;j++){
    			cout<<".";
    			Sleep(rand()%100+150);
    		}   
    		cout<<"\b\b\b\b\b\b      \b\b\b\b\b\b";
    	}   
    	print();
    } 
     
    /*每一天开始前的操作*/
    void something_before_everyday(){
    	change_night();
    	system("cls");
    	print();
    	gotoxy(0,7);
    	cout<<"________________________";
    	gotoxy(0,8);
    	color(white);
    	cout<<"天黑~请闭眼~~~\n";
    }
     
    /*守卫操作*/
    int shouweishou=0;
    int ShouWei(){
    	color(blue);
    	cout<<"守卫~请睁眼~~\n";
    	Sleep(1500);
    	cout<<"你要守护的是?\n";
    	if(players[my_number].type==shouwei&&players[my_number].die_or_life == life){
    		cin>>shouweishou;
    		while(!(shouweishou>=1&&shouweishou<=player_number&&players[shouweishou-1].die_or_life == life)){
    			cout<<"请重新输入!\n";
    			cin>>shouweishou;
    		}
    		cout<<"你今晚要守护的是"<<shouweishou<<"号\n";
    		Sleep(1500); 
    		shouweishou--;
    	}else{
    		if(players[idxshouwei].die_or_life == life){
    			shouweishou=rand()%10;
    			while(!(shouweishou>=1&&shouweishou<=player_number&&players[shouweishou-1].die_or_life == life)){
    				shouweishou=rand()%10;
    			}
    		}
    	}   
    	Sleep(2000);
    	cout<<"守卫请闭眼"<<endl<<endl;
    	return shouweishou;
    } 
     
    /*狼人操作*/
    int LangRen(){
    	int langrensha=-1;
    	color(red);
    	cout<<"狼人~请睁眼~~~\n";
    	Sleep(1500);
    	cout<<"你们今晚要杀~谁~~??\n";
    	if(players[my_number].type==langren&&players[my_number].die_or_life == life){
    		cin>>langrensha;
    		while(!(langrensha>=1&&langrensha<=player_number&&players[langrensha-1].die_or_life==life)){
    			cout<<"请重新输入!\n";
    			cin>>langrensha;
    		}
    		cout<<"你们今晚要杀的是"<<langrensha--<<"号\n";
    		Sleep(3500);
    	}else{
    		while(langrensha==-1 || players[langrensha].die_or_life == die || players[langrensha].type==langren){
    			langrensha=rand()%player_number;
    		}
    		Sleep(3000);
    	}
    	cout<<"狼人请~闭眼~~\n\n";
    	return langrensha;
    }
     
    /*女巫操作*/
    int nvwujiu=0,nvwudu=0,is_nvwujiu=0,is_nvwudu=0;
    int NvWu(int langrensha){
    	color(purple);
    	cout<<"女巫~~请睁眼~~\n";
    	Sleep(2000);
    	if(players[my_number].type==nvwu&&players[my_number].die_or_life == life){
    		if(is_nvwujiu) 
    			cout<<"你已经用过解药\n",Sleep(1500);
    		else
    		{
    			cout<<"今晚"<<langrensha+1<<"号死了,你想用解药吗?(1想 / 2不想)\n";
    			int is_nvwujie=0;
    			cin>>is_nvwujie;
    			while(is_nvwujie!=1&&is_nvwujie!=2){
    				cout<<"请重新输入\n";
    				cin>>is_nvwujie;
    			} 
    			if(is_nvwujie==1) {
    				Sleep(1000);
    				cout<<"已经解救"<<langrensha+1<<"号\n";
    				nvwujiu=langrensha;
    			}
    			is_nvwujiu=1;
    		}
    		Sleep(1500);
    		if(::is_nvwudu) cout<<"你已经用过解药\n",Sleep(1500);
    		else
    		{
    			cout<<"你想用毒药吗?(1想 / 2不想)\n";
    			Sleep(1500);
    			int is_nvwudu=0;
    			cin>>is_nvwudu;
    			while(is_nvwudu!=1&&is_nvwudu!=2){
    				cout<<"请重新输入\n";
    				cin>>is_nvwudu;
    			}   
    			if(is_nvwudu==1){
    				Sleep(1500);
    				cout<<"你想毒谁?\n"; 
    				cin>>nvwudu;
    				while(!(nvwudu>=1&&nvwudu<=player_number&&players[nvwudu].die_or_life==life)){
    					cout<<"请重新输入\n";
    					cin>>nvwudu; 
    				}
    				nvwudu--;
    				Sleep(1500);
    				cout<<"已经毒死了"<<nvwudu+1<<"号\n";
    			}
    			::is_nvwudu=1;
    		}   
    	}else{
    		if(players[idxnvwu].die_or_life == life){
    			if(!is_nvwujiu)
    			{
    				int is_jiu=rand()%8;
    				if(is_jiu==0){
    					nvwujiu=langrensha;
    					is_nvwujiu=1;
    				}   
    			}
    			if(!is_nvwudu)
    			{
    				int is_du=rand()%4;
    				if(is_du==0){
    					int num=rand()%player_number;
    					nvwudu=num;
    					is_nvwudu=1;
    				}
    			}
    		}
    		
    	} 
    	cout<<"女巫~请闭眼~~\n\n";
    	return nvwujiu*10000+nvwudu;//传回两个变量,“加密”操作 
    }
     
    int yuyanjiabixutoupiao=-1;
    /*预言家操作*/
    void YuYanJia(){
    	color(green);
    	cout<<"预言家~请睁眼~~\n";
    	Sleep(2000);
    	if(players[my_number].type==yuyanjia&&players[my_number].die_or_life == life){
    		cout<<"请问你想查验谁的身份\n";
    		int p;
    		cin>>p;
    		while(!(p>=1&&p<=player_number)){
    			cout<<"请重新输入!\n";
    			cin>>p;
    		}
    		Sleep(2000);
    		cout<<p<<"号的身份是——";
    		Sleep(1000);
    		if(players[p-1].type == langren){
    			cout<<"狼人\n";
    			players[p-1].is_light = 1;
    		}else{
    			cout<<"好人\n";
    			players[p-1].is_light = 2;
    		}
    	}else{
    		int p=-1;
    		while(p==-1||players[p].die_or_life==die||p==idxlieren)
    			p=rand()%player_number;
    		if(players[p].type==langren)//锁定目标! 
    		{
    			yuyanjiabixutoupiao=p;
    		}
    	}
    	cout<<"预言家~~请闭眼~~\n";
    }
     
    /*黑夜操作*/
    int LANGRENSHA=-1,NVWUDU=-1,NVWUJIU=-1,SHOUWEISHOU=-1; 
    void Night(){   
    	LANGRENSHA=-1,NVWUDU=-1,NVWUJIU=-1,SHOUWEISHOU=-1; 
    	
    	//如果有12人局,添加守卫 
    	if(player_number==12){
    		SHOUWEISHOU=ShouWei();
    		Sleep(2000);
    	} 
    	/*狼人部分*/
    	LANGRENSHA=LangRen();
    	Sleep(3500);
    	/*女巫部分*/ 
    	int nvwu=NvWu(LANGRENSHA);
    	NVWUDU=nvwu%10+nvwu/10%10;
    	NVWUJIU=nvwu/10000%10+nvwu/100000%10;
    	Sleep(3000);
    	/*预言家部分*/
    	YuYanJia();
    	Sleep(2000);
    }
     
    /*猎人操作*/
    void Lieren(){
    	int lierendai=-1;
    	cout<<idxlieren+1<<"号是猎人\n";
    	
    	players[idxlieren].is_light = 1;
    	Sleep(1000);
    	if(idxlieren==my_number){
    		cout<<"你想带走几号?\n";
    		cin>>lierendai;
    		while(lierendai<1||lierendai>player_number||players[lierendai].die_or_life==die){
    			cout<<"请重新输入!\n";
    			cin>>lierendai;
    		}
    		lierendai--;
    	}else{
    		lierendai=rand()%player_number;
    		while(players[lierendai].die_or_life == die){
    			lierendai=rand()%player_number;
    		}
    	}
    	Sleep(2000);
    	cout<<"猎人选择带走"<<lierendai+1<<"号\n";
    	Sleep(2000);
    	players[lierendai].die_or_life = die;
    }
     
    void police_die();
    /*判断谁死了*/
    void panduansiwang(){
    	system("cls");
    	print(); 
    	gotoxy(0,7);
    	cout<<"________________________\n";
    	Sleep(3000);
    	color(white);
    	cout<<"天亮了\n";
    	Sleep(2000);
    	gotoxy(0,9);
    	cout<<"昨晚";
    	bool is_die[15]={false},is_die_lieren=false,flag=false;
    	for(int i=0;i<player_number;i++)
    	{
    		if(players[i].die_or_life==life)
    		{
    			if(i==LANGRENSHA||i==NVWUDU) {
    				if(players[i].type==lieren) is_die_lieren=true;
    				players[i].killer= (i==LANGRENSHA ? langren:nvwu);
    				players[i].die_or_life=die;
    				is_die[i]=true;
    			}
    			if(i==SHOUWEISHOU||i==NVWUJIU) {
    				if(players[i].type==lieren) is_die_lieren=false;
    				players[i].killer=-1;
    				players[i].die_or_life=life;
    				is_die[i]=false;
    			}   
    		}
    	}
    	bool is_police_die=false;
    	for(int i=0;i<player_number;i++)
    	{
    		if(is_die[i])
    		{
    			if(flag) cout<<"和"<<i+1<<"号";
    			else cout<<i+1<<"号",flag=true;
    			if(i==idx_police) 
    				is_police_die=true;
    		}
    	}
    	if(flag) cout<<"死了\n";
    	else cout<<"是平安夜\n";
    	
    	if(is_die_lieren) Lieren();
    	if(is_police_die) police_die();
    }
     
    /*选警长*/
    void choose_police(){
    	system("cls");
    	print();
    	color(blue);
    	gotoxy(0,7);
    	cout<<"________________________\n";
    	color(yellow);
    	cout<<"下面开始选举警长,各位不能选举自己~\n";
    	int tong[100]={0},cannot[100],must[100]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    	memset(cannot,-1,sizeof(cannot));
    	CHOOSE:
    	color(yellow);
    	Sleep(1500);
    	for(int i=0;i<player_number;i++)
    	{
    		if(players[i].die_or_life==life&&!is_include(cannot,i,player_number))
    		{
    			if(i==my_number)
    			{
    				cout<<"你要选举几号?\n";
    				int n;
    				cin>>n;
    				while(n<1||n>player_number||n==i+1||players[n-1].die_or_life==die||!is_include(must,n-1,player_number))
    				{
    					cout<<"请重新输入!\n";
    					cin>>n;
    				}
    				cout<<i+1<<"号选举"<<n--<<"号\n";
    				tong[n]++;
    			}
    			else
    			{
    				int n=rand()%player_number;
    				while(n==i||players[n].die_or_life==die||!is_include(must,n,player_number))
    					n=rand()%player_number;
    				cout<<i+1<<"号选举"<<n+1<<"号\n";
    				tong[n]++;
    			}
    			Sleep(1500);
    		}
    	}
    	int idx_max=-1,maxn=-1,len=0;
    	for(int i=0;i<player_number;i++)
    		if(maxn<tong[i])
    		{
    			maxn=tong[i];
    			idx_max=i;
    		}
    	int maxn_arr[15]={0};
    	for(int i=0;i<player_number;i++)
    	{
    		if(tong[i]==maxn)
    		{
    			maxn_arr[len++]=i;
    		}
    	}
    	color(blue);
    	if(len>1)
    	{
    		for(int i=0;i<len;i++)
    		{
    			if(i==len-1)
    			{
    				cout<<maxn_arr[i]+1<<"号平票\n"; 
    			}
    			else
    			{
    				cout<<maxn_arr[i]+1<<"号,";
    			}
    		}
    		for(int i=0;i<len;i++)
    			cannot[i]=maxn_arr[i];
    		for(int i=0;i<player_number;i++)
    		{
    			if(is_include(cannot,i,len))
    				must[i]=i;
    			else
    				must[i]=-1;
    		}
    		color(white);
    		goto CHOOSE;
    	}
    	cout<<"恭喜"<<idx_max+1<<"号当选警长\n";
    	Sleep(3000);
    	idx_police=idx_max;
    	return;
    }
     
    /*投票*/
    int toupiao(){
    	int tong[100]={0},cannot[100]={},must[100]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 
    	memset(cannot,-1,sizeof(cannot));
    	gotoxy(0,7);
    	color(blue);
    	cout<<"________________________\n";
    	color(white);
    	cout<<"下面进入投票环节\n";
    	memset(tong,0,sizeof(tong));
    	Sleep(2000);
    	TOUPIAO:
    	for(int i=0;i<player_number;i++){
    		if(players[i].die_or_life == life&&!is_include(cannot,i,player_number)){
    			if(i==my_number){
    				color(white);
    				cout<<"你要投几号?\n";
    				int n;
    				cin>>n;
    				while(!(n>=1&&n<=player_number&&is_include(must,n-1,player_number))){
    					cout<<"请重新输入!\n";
    					cin>>n;
    				}
    				Sleep(2000);
    				cout<<setw(2)<<my_number+1<<"号投了"<<setw(2)<<n<<"号";
    				if(my_number==n-1) color(red),cout<<"快来看!这有个疯子投自己!"; 
    				if(i==idx_police) color(yellow),cout<<"(警长)\n"; else cout<<"\n";
    				if(i==idx_police) tong[n-1]++;
    				tong[n-1]++;
    			}else{
    				color(white);
    				int t=-1;
    				while(t==-1 || players[t].die_or_life == die || t==i || !is_include(must,t,player_number)){
    					if(i==idxyuyanjia&&yuyanjiabixutoupiao!=-1)
    					{
    						t=yuyanjiabixutoupiao;
    						yuyanjiabixutoupiao=-1;
    						continue;
    					}
    					t=rand()%player_number;
    					if(is_include(idxlangren,i,nlangren))
    					{
    						if(players[t].type == langren)
    							t=-1;
    					}
    				}
    				cout<<setw(2)<<i+1<<"号"<<"投了"<<setw(2)<<t+1<<"号";
    				if(i==idx_police) cout<<"(警长2票)\n"; else cout<<"\n";
    				if(i==idx_police) tong[t]++;
    				tong[t]++;  
    			}
    			
    			Sleep(rand()%1000+1000);
    		}
    	}
    	int idx_max=-1,maxn=-1,len=0;
    	for(int i=0;i<player_number;i++)
    		if(maxn<tong[i])
    		{
    			maxn=tong[i];
    			idx_max=i;
    		}
    	int maxn_arr[15]={0};
    	for(int i=0;i<player_number;i++)
    	{
    		if(tong[i]==maxn)
    		{
    			maxn_arr[len++]=i;
    		}
    	}
    	color(blue);
    	if(len>1)
    	{
    		for(int i=0;i<len;i++)
    		{
    			if(i==len-1)
    			{
    				cout<<maxn_arr[i]+1<<"号平票\n"; 
    			}
    			else
    			{
    				cout<<maxn_arr[i]+1<<"号,";
    			}
    		}
    		for(int i=0;i<len;i++)
    			cannot[i]=maxn_arr[i];
    		for(int i=0;i<player_number;i++)
    		{
    			if(is_include(cannot,i,len))
    				must[i]=i;
    			else
    				must[i]=-1;
    		}
    		color(white);
    		goto TOUPIAO;
    		
    	}
    	
    	cout<<idx_max+1<<"号"<<"出局\n";
    	Sleep(4000);
    	players[idx_max].die_or_life = die;
    	players[idx_max].killer = good;
    	return idx_max;
    }
     
    /*警长死亡*/
    void police_die(){
    	color(yellow);
    	int type;
    	if(idx_police==my_number)
    	{
    		Sleep(1550);
    		cout<<"你是想撕毁警徽还是移交警徽?(撕毁输入1,移交输入2)";
    		
    		cin>>type;
    		while(!(type==1||type==2))
    		{
    			cout<<"请重新输入!\n";
    			cin>>type;
    		}
    	}
    	else{
    		type=rand()%3+1;
    	}
    	if(type==1)
    	{
    		cout<<"警长选择撕毁警徽\n";
    		Sleep(1000);
    		idx_police=-1;
    	}
    	else
    	{
    		int lucky=-1;
    		while(lucky==-1||players[lucky].die_or_life==die)
    			lucky=rand()%player_number;
    		cout<<"警长选择把警徽移交给"<<lucky+1<<"号\n";
    		Sleep(1500);
    		idx_police=lucky; 
    	}
    }
     
    /*故事的最后*/
    void the_end(){
    	system("cls");
    	switch(is_end()){
    		case 1:cout<<"好人胜利\n\n"; break;
    		case 2:cout<<"狼人胜利\n\n"; break;
    		case 3:cout<<"本局平局\n\n"; break;
    	}
    	for(int i=0;i<player_number;i++){
    		cout<<i+1<<"号位:\t";
    		switch(players[i].type){
    			case nvwu: cout<<"女巫\t";break;
    			case yuyanjia: cout<<"预言家\t";break;
    			case cunmin: cout<<"村民\t";break;
    			case langren:cout<<"狼人\t";break;
    			case lieren:cout<<"猎人\t"; break;  
    			case shouwei:cout<<"守卫\t";break;  
    		} 
    		cout<<"最终";
    		switch(players[i].killer){
    			case nvwu:cout<<"被女巫毒死\n"; break;
    			case langren:cout<<"被狼人杀死\n"; break;
    			case good:cout<<"被投票出局\n"; break;
    			case lieren:cout<<"被猎人带走\n";break;
    			default :cout<<"存活\n";
    		}
    		cout<<endl;
    	}
    }
     
    /*主函数*/
    int main(){
    	int wheel=0; 
    	before_game();
    	while(!is_end()){
    		//黑夜准备 
    		something_before_everyday();
    		Sleep(1500); 
    		
    		//黑夜部分 
    		Night(); //进入黑夜! 
    		change_daytime(); //换天 
    		
    		//天亮了 
    		panduansiwang();//判断谁死了 
    		Sleep(2000);
    		system("cls");
    		print();
    		if(is_end()) break;
    		
    		//选警长 
    		if(!wheel&&player_number==12)
    		{
    			choose_police();
    			system("cls");
    			print();
    		}
    		
    		//投票环节 
    		int idx_max=toupiao();//票数最多的人 
    		if(idx_max==idx_police){
    			police_die();
    		}
    		if(players[idx_max].type==lieren){//启动猎人程序 
    			Lieren();
    			if(is_end()) break;
    		}
    		system("cls");
    		print(); 
    		wheel++;
    	}
    	
    	the_end();
    	system("pause");
    	return 0;
    }
    
    //PVP
    #include<algorithm>
    #include<cmath>
    #include<vector>
    #include<stdio.h>
    #include<iostream>
    #include<string>
    #include<cstring>
    #include<windows.h>
    #include<conio.h>
    #include<cstdlib>
    #include<ctime>
    #include<fstream>
    using namespace std;
    int ax[5];
    void gotoxy(int y,int x) 
    {
        COORD  coord;     
        coord.X=x;         
        coord.Y=y;
        HANDLE a=GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(a,coord);    
    }
    void coutwhat(int a,int b,int c,int d,string n)
    {
    	int i,j;
    	for(i=a;i<=c;i++)
    	  for(j=b;j<=d;j++)
    	    {
    	    	gotoxy(i,j);
    	    	cout<<n;
    		}
    }
    void color(int x)
    {
    	switch(x)
    	  {
    	    case 0:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);break;
    	    case 1:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);break;
    		case 2:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_GREEN);break;
    	    case 3:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_GREEN);break;
    	  	case 4:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);break;
    	  	case 5:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_RED);break;
    		case 7:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);break;
    		case 8:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);break;
    		case 9:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_BLUE);break;
    	    case 10:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);break;
    	    default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);break;
    	  }
    }
    int random(int n,int m)
    {
    	int s;
    	s=rand()%(m-n+1);
    	s+=n;
    	return s;
    }
     
    void cls()
    {
    	system("cls");
    }
    struct Player
    {
    	string name;
    	int hp;
    	int HP;
    	int attack;
    	int defence;
    	int fw;//0,1,2,3
    	int energy;
    	int kill;
    	int x;
    	int y;
    	int sc;
    	int zl;
    	int cs;
    };
    Player player[5];
    void printfssbh(int n)
    {
    	int i,j,k;
    	for(i=1;i<=4;i++)
    	  	  {
    	  	  	gotoxy(0,i*25);
    	  	  	cout<<player[i].energy<<"("<<player[i].energy/10.0<<"%)"<<player[i].kill<<"kill ";
    		  }
    	//计算生命百分比 
    	float a[5];
    	int b[5];
    	for(i=1;i<=n;i++)
    	  a[i]=(player[i].hp*1.0)/(player[i].HP*1.0);
    	for(i=1;i<=n;i++)
    	  b[i]=a[i]*100;
    	for(i=1;i<=n;i++)
    	  if (b[i]>10000)
    	    b[i]=0;//死者 
    	  else
    	    if (b[i]>100)
    	      b[i]=100;//血量溢出但还没死 
    	//输出 
    	for(i=1;i<=n;i++)
    	  {
    	  	gotoxy(35+i,0);
    	  	cout<<"|";
    	    coutwhat(35+i,1,35+i,b[i],"#");
    	    coutwhat(35+i,b[i]+1,35+i,100," ");
    		gotoxy(35+i,101);
    		cout<<"|";
    		cout<<a[i]*100.0<<'%';
    		cout<<" "<<player[i].hp;
    		gotoxy(35+i,120);
    		printf("Player %d",ax[i]);
    	  }
    }
    bool save[5]={1,1,1,1,1};
    void printfplayer(string ml,int n)
    {
    	int i;
    	if (ml=="clear")
    	  {
    	  	for(i=1;i<=n;i++)
    	  	  {
    	  	  	gotoxy(player[i].x,player[i].y);
    	  	  	cout<<"  ";
    		  }
    	  }
    	if (ml=="printf")
    	  {
    	  	for(i=1;i<=n;i++)
    	  	  {
    	  	  	if (save[i]==0) //此人已亡 
    	  	  	  continue;
    	  	  	color(i*3);
    	  	  	gotoxy(player[i].x,player[i].y);
    	  	  	cout<<"♀";
    		  }
    	  }
    }
    void hidden()
    {
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle, &CursorInfo);
    CursorInfo.bVisible = false;
    SetConsoleCursorInfo(handle, &CursorInfo);
    }
    bool choose[5]={0,0,0,0,0};
    /*
    攻击方式:
    player 1 十字架攻击
    player 2 小范围攻击
    player 3 全战场攻击 (随机攻击一人) 
    player 4 三角形攻击
    */
    int PVP(int n)
    {
    	int r=n,m,i,j,k,sh;
    	//输出界面
    	coutwhat(1,0,1,100,"=");
    	coutwhat(2,0,32,0,"|");
    	coutwhat(33,0,33,100,"=");
    	coutwhat(2,101,32,101,"|");
    	for(i=1;i<=4;i++)
    	  save[i]=choose[i];//没被选的都是死人 
    	while(r>1)
    	  {
    	  	for(i=1;i<=n;i++)
    	  	  if (save[i]==0)
    	  	    player[i].hp=21474836;//永远无法击败死者 
    	  	int GJ[5]={0,0,0,0,0};//记录被攻击者编号 
    	  	int qx=0,qy=0,zx=0,zy=0;
    	  	hidden();
    	  	//输出实时变化 
    		printfssbh(n);
    		//输入 
    		char l='/';
    		if (kbhit())
    		  l=getch();
    		m=0;
    		//已死亡玩家判断 
    		if ((l=='w'||l=='a'||l=='s'||l=='d'||l=='x'||l=='q'||l=='e'||l=='z'||l=='c')&&save[1]==0)
    		  l='/';
    		if ((l=='u'||l=='i'||l=='o'||l=='j'||l=='k'||l=='l'||l=='m'||l==','||l=='.')&&save[2]==0)
    		  l='/';
    		if ((l>='1'&&l<='9')&&save[3]==0)
    		  l='/'; 
    		printfplayer("clear",n);
    		switch(l)
    		  {
    		  	//Player 1
    		  	case 'w':if (player[1].x-1>=4)player[1].x--;break;
    		  	case 'a':if (player[1].y-1>=2)player[1].y--;break;
    		  	case 's':if (player[1].x+1<=32)player[1].x++;break;
    		  	case 'd':if (player[1].y+1<=100)player[1].y++;break;
    		  	case 'x':
    			  {
    			  	coutwhat(player[1].x,2,player[1].x,99,"-");
    			  	coutwhat(2,player[1].y,31,player[1].y,"|");
    			  	for(i=2;i<=4;i++)
    				  if (player[i].x==player[1].x||player[i].y==player[1].y)
    				    GJ[++m]=i;
    				for(i=1;i<=m;i++)
    				  {
    				  	if (save[GJ[i]]==0)
    				  	  continue;
    				  	player[1].energy+=random(10,30);
    				  	player[GJ[i]].energy+random(5,15);
    				  	sh=player[1].attack-player[GJ[i]].defence;
    				  	player[1].sc+=sh;
    				  	player[GJ[i]].cs+=sh;
    				  	player[GJ[i]].hp-=sh;
    				  	gotoxy(player[GJ[i]].x,player[GJ[i]].y);
    				  	cout<<'-'<<sh;
    				  	if (player[GJ[i]].hp<=0)
    				  	  save[GJ[i]]=0,player[1].kill++,player[1].energy+=350,r--;
    				  } 
    				for(i=1;i<=m;i++)
    				gotoxy(player[GJ[i]].x,player[GJ[i]].y);
    				cout<<"       ";
    				coutwhat(player[1].x,2,player[1].x,100," ");
    				coutwhat(2,player[1].y,31,player[1].y,"  ");
    				break;
    			  } 
    			case 'q':
    				{
    					if (player[1].energy<1000)
    					  break;
    					player[1].energy-=1000;
    					m=random(367,763);
    					player[2].energy-=m;
    					if (n>=3)
    					player[3].energy-=1000-m;
    					sh=player[1].attack*3;
    					for(i=2;i<=n;i++)
    					  {
    					  	if (save[i]==0)
    					  	  continue;
    					  	gotoxy(player[i].x-2,player[i].y);
    					  	cout<<'-'<<sh-player[i].defence;
    					  	player[i].hp-=sh-player[i].defence;
    					  	player[1].sc+=sh-player[i].defence;
    					  	player[i].cs+=sh-player[i].defence;
    					  	if (player[i].hp<=0)
    					  	  player[1].kill++,player[1].energy+=350,save[i]=0;
    					  }
    					break;
    				}
    			case 'e':
    				{
    					if (player[1].energy<500)
    					  break;
    					player[1].energy-=500;
    					m=random(player[1].attack*3,player[1].attack*5);
    					player[1].zl+=m;
    					player[1].hp+=m;
    					gotoxy(player[1].x-1,player[1].y);
    					cout<<"+"<<m;
    					break;
    				}
    			//Player 2
    			case 'i':if (player[2].x-1>=1)player[2].x--;break;
    		  	case 'j':if (player[2].y-1>=1)player[2].y--;break;
    		  	case 'k':if (player[2].x+1<=32)player[2].x++;break;
    		  	case 'l':if (player[2].y+1<=100)player[2].y++;break;
    		  	case ',':
    			  {
    			  	qx=player[2].x-5;
    			  	qy=player[2].y-5;
    			  	zx=player[2].x+5;
    			  	zy=player[2].y+5;
    			  	if (qx<=2)
    			  	  qx=2;
    			  	if (qx>=32)
    			  	  qx=32;
    			  	if (qy<=2)
    			  	  qy=2;
    			  	if (qy>=100)
    			  	  qy=100;
    			  	if (zx<=2)
    			  	  zx=2;
    			  	if (zx>=32)
    			  	  zx=32;
    			  	if (zy<=2)
    			  	  zy=2;
    			  	if (zy>=100)
    			  	  zy=100;
    			  	coutwhat(qx,qy,zx,zy,"#");
    			  	if (player[1].x>=qx&&player[1].x<=zx&&player[1].y>=qy&&player[1].y<=zy&&save[1]==1)
    				  GJ[++m]=1;
    				for(i=3;i<=n;i++)
    				 if (player[i].x>=qx&&player[i].x<=zx&&player[i].y>=qy&&player[i].y<=zy&&save[i]==1)
    				  GJ[++m]=i;
    				for(i=1;i<=m;i++)
    				  {
    				  	player[2].energy+=random(10,30);
    				  	player[GJ[i]].energy+random(5,15);
    				  	sh=player[2].attack-player[GJ[i]].defence;
    				  	player[2].sc+=sh;
    				  	gotoxy(player[GJ[i]].x,player[GJ[i]].y);
    				  	cout<<'-'<<sh;
    				  	player[GJ[i]].cs+=sh;
    				  	player[GJ[i]].hp-=sh;
    				  	if (player[GJ[i]].hp<=0)
    				  	  save[GJ[i]]=0,player[2].kill++,player[2].energy+=350,r--;
    				  } 
    				for(i=1;i<=m;i++)
    				gotoxy(player[GJ[i]].x,player[GJ[i]].y);
    				cout<<"       ";
    				coutwhat(qx,qy,zx,zy," ");
    				break;
    			  } 
    			case 'u':
    				{
    					if (player[2].energy<1000)
    					  break;
    					player[2].energy-=1000;
    					sh=player[2].attack*3.5;
    					gotoxy(player[1].x-2,player[1].y);
    					cout<<'-'<<sh-player[1].defence;
    					player[1].hp-=sh-player[1].defence;
    					player[1].cs+=sh-player[1].defence;
    					player[2].sc+=sh-player[1].defence;
    					for(i=3;i<=n;i++)
    					  {
    					  	gotoxy(player[i].x-2,player[i].y);
    						cout<<'-'<<sh-player[i].defence;
    						player[i].hp-=sh-player[i].defence;
    						player[i].cs+=sh-player[i].defence;
    						player[2].sc+=sh-player[i].defence;
    					  }
    					sh*=(n-1);
    					gotoxy(player[2].x-1,player[2].y);
    					cout<<'+'<<sh;
    					player[2].hp+=sh;
    					player[2].zl+=sh;
    					break;
    				}
    			case 'o':
    				{
    					if (player[2].energy<500)
    					  break;
    					player[2].energy-=500;
    					m=random(player[2].attack*3,player[2].attack*5);
    					player[2].zl+=m;
    					player[2].hp+=m;
    					gotoxy(player[2].x-1,player[2].y);
    					cout<<"+"<<m;
    					break;
    				}
    			//Player 3
    			case '1':if (player[3].x-1>=1)player[3].x--;break;
    		  	case '2':if (player[3].y-1>=1)player[3].y--;break;
    		  	case '3':if (player[3].x+1<=32)player[3].x++;break;
    		  	case '4':if (player[3].y+1<=100)player[3].y++;break;
    		  	case '5':
    		  		{
    		  			do
    		  			  m=random(1,n);
    		  			while(m==3||save[m]==0);
    		  			player[3].energy+=random(10,30);
    				  	player[m].energy+random(5,15);
    				  	sh=player[3].attack-player[m].defence;
    				  	player[3].sc+=sh;
    				  	gotoxy(player[m].x-2,player[m].y);
    				  	cout<<'-'<<sh;
    				  	player[m].cs+=sh;
    				  	player[m].hp-=sh;
    				  	if (player[m].hp<=0)
    				  	  save[m]=0,player[3].kill++,player[3].energy+=350,r--;
    				  	gotoxy(player[m].x-2,player[m].y);
    				  	cout<<"       ";
    				  	break;
    				}
    			case '6':
    				{
    					if (player[3].energy<1000)
    					  break;
    					player[3].energy-=1000;
    					m=0;
    					for(i=1;i<=n;i++)
    					  if (i==3)
    					    continue;
    					  else
    					    if (player[i].hp*100/player[i].HP<=13)
    					      {
    					      	GJ[++m]=i;
    						  }
    					if (m==0)
    					  {
    					  	do 
    					  	  m=random(1,n);
    					  	while(m==3);
    					  	sh=player[3].attack*5.6;
    					  	player[m].hp-=sh;
    					  	player[m].cs+=sh;
    					  	player[3].sc+=sh;
    					  	break;
    					  }
    					else
    					  {
    					  	m=GJ[random(1,m)];
    					  	player[3].sc+=player[m].hp;
    					  	player[m].cs+=player[m].hp;
    					  	player[m].hp=0;
    						save[m]=0;
    						player[3].kill++,player[3].energy+=350,r--;
    						break;
    					  }
    					break;
    				}
    			case '7':
    				{
    					if (player[3].energy<500)
    					  break;
    					player[3].energy-=500;
    					m=random(player[3].attack*3,player[3].attack*5);
    					player[3].zl+=m;
    					player[3].hp+=m;
    					gotoxy(player[3].x-1,player[3].y);
    					cout<<"+"<<m;
    					break;
    				}
    		  }
    		printfplayer("printf",n);
    		int live=0;
    		for(i=1;i<=n;i++)
    		  {
    		  	live+=save[i];
    		  	if (live>=2)
    		  	  break;
    		  }
    		if (live<=1)
    		  break;
    	  }
    	for(i=1;i<=n;i++)
    	  if (save[i]&&player[i].hp<=1000000)//
    		return i;
    }
    int main()
    {
    	srand(time(0));
    	hidden();
    	int n,i,win;
    	printf("请选择游戏人数:\n");
    	printf("1.2人\n");
    	printf("2.3人\n");
    	printf("3.4人(编写中)\n");
    	char m,l;
    	do
    	  m=_getch();
    	while(!(m>='1'&&m<='2'));
    	n=m-'0'+1;
    	system("cls"); 
    	player[1].x=1*random(6,8),player[1].y=1*random(6,8),player[1].HP=random(450000,678901),player[1].hp=player[1].HP,player[1].attack=random(3500,5500),player[1].defence=random(600,800);
    	player[2].x=2*random(6,8),player[2].y=2*random(6,8),player[2].HP=random(670000,1000000),player[2].hp=player[2].HP,player[2].attack=random(2700,4600),player[2].defence=random(750,900);
    	player[3].x=3*random(6,8),player[3].y=3*random(6,8),player[3].HP=random(489000,730000),player[3].hp=player[3].HP,player[3].attack=random(3800,4700),player[3].defence=random(540,700);
    	player[4].x=4*random(6,8),player[4].y=4*random(6,8);
    	cout<<"操作方式:\n";
    	cout<<"1.法师\n";
    	cout<<"上移:W\n";
    	cout<<"左移:A\n";
    	cout<<"下移:S\n";
    	cout<<"右移:D\n";
    	cout<<"攻击:X\n";
    	cout<<"技能:Q、E\n";
    	cout<<"技能描述\n";
    	cout<<"Q湮灭枷锁:对其他1~2名敌人造成300%attack伤害,并令第一个目标失去367~763点能量,如果还有其它玩家则令其中一人失去与之前一人总和1000点能量\n";
    	cout<<"E自疗:立刻恢复350%~550%攻击的血量\n";
    	cout<<"攻击范围:十字架攻击(同一行或同一列上的敌人受伤)\n";
    	cout<<"特点:血量较高,攻击一般,防御一般,攻击范围较广,适合远战\n";
    	cout<<"---------------------------------------------------------------------------\n";
    	cout<<"2.坦克\n";
    	cout<<"上移:I\n";
    	cout<<"左移:J\n";
    	cout<<"下移:K\n";
    	cout<<"右移:L\n";
    	cout<<"攻击:<,\n";
    	cout<<"技能:U、O\n";
    	cout<<"技能描述\n";
    	cout<<"U毒雾:释放烟雾,对其它所有敌人造成350%attack伤害,并恢复伤害总量100%的生命\n";
    	cout<<"O自疗:立刻恢复350%~550%攻击的血量\n";
    	cout<<"攻击范围:周围10*10的小范围攻击\n";
    	cout<<"特点:血量极高,攻击较低,防御较低,适合近战\n";
    	cout<<"---------------------------------------------------------------------------\n";
    	cout<<"3.射手\n";
    	cout<<"上移:1\n";
    	cout<<"左移:2\n";
    	cout<<"下移:3\n";
    	cout<<"右移:4\n";
    	cout<<"攻击:5\n";
    	cout<<"技能:6、7\n";
    	cout<<"技能描述\n";
    	cout<<"6斩杀:秒杀随机一名生命低于13%的敌人,如果没有,则对随机一名敌人造成360%attack真实伤害\n";
    	cout<<"7自疗:立刻恢复350%~550%攻击的血量\n";
    	cout<<"攻击范围:随机攻击场上任意一人\n";
    	cout<<"特点:血量一般,防御较低,攻击一般,但是攻击范围较大\n"; 
    	cout<<"---------------------------------------------------------------------------\n";
    	for(i=1;i<=(m-'0'+1);i++)
    	  {
    	    printf("Player %d请选择(输入编号1~3)\n",i);
    		do
    		  l=_getch();
    		while(l<'1'||l>'3'||choose[l-'0']);
    		choose[l-'0']=1;
    		ax[l-'0']=i;
    	  }
    	if (choose[3])
    	  m='2';
    	Sleep(2000);
    	_getch();
    	system("cls");
    	win=PVP(m-'0'+1);
    	printf("%d win!",ax[win]);
    	Sleep(5000);
    	system("cls");
    	for(i=1;i<=n;i++)
    	  {
    	  	printf("Player %d\n",i);
    	  	if (i==win)
    	  	  printf("\b( WIN )\n");
    	  	printf("输出:%d\n",player[ax[i]].sc);
    	  	printf("治疗:%d\n",player[ax[i]].zl);
    	  	printf("承伤:%d\n",player[ax[i]].cs);
    	  	printf("---------------------------\n");
    	  }
    	Sleep(5000);
    	return 0;
    }
    
    //贪吃蛇
    #include <iostream>
    #include <list>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <ctime>
    #include <algorithm>
    #include <conio.h>
    #include <windows.h>
    using namespace std;
    class Node {
    public:
        int x, y;
        Node(int x1, int y1);
    };
     
    class UserData {
    public:
        string name;
        long long score;
        int gt;
        int gr;
        UserData(string s, long long sc,int gametime,int grade);
        friend bool operator < (UserData a, UserData b);
    };
     
    #define RIGHT 0x4d
    #define LEFT 0x4b
    #define UP 0x48
    #define DOWN 0x50
    #define YELLOW FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
    #define CYAN FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY
    #define ORANGE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
    #define PURPLE FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY
    #define RED  FOREGROUND_RED | FOREGROUND_INTENSITY
    const int STARTX = 8;
    const int STARTY = 4;
    const int RANGEX = 60;
    const int RANGEY = 20;
    int point=10;
    const int ENDX = STARTX + RANGEX;
    const int ENDY = STARTY + RANGEY;
    bool isSnake[RANGEY + 10 ][RANGEX + 10];
    int speed;
    int sysj;
    int gametime;
    list<Node> snake;
    int curDiraction; //蛇的当前前进方向, 1上, 2下, 3左, 4右
    int score; //当前分数
    int grade;
    int snakeLen; //蛇的长度
    int foodx, foody; //食物坐标
    int gox, goy; //蛇头坐标
    int mj;
    void GoTo(short x, short y); //定位光标
    void DrawBoard(); //绘制边框
    void ShowInformation(); //展示游戏信息
    void Init(); //初始化游戏
    void RunSnake(int x, int y); //绘制蛇身
    void Try(int& x, int& y); //试走
    bool IsGoodCoord(int x, int y); //前进坐标是否合法
    void AddFood();
    void EartFood();
    void InitSnake();
    bool EndGame();
    bool StartGame();
    bool GameMenu(); //游戏菜单
    void ShowRanking(); //排行榜
    void ShowAbout(); //相关信息
    void InputData(); //输入玩家名字
     
    int main() {
        while (true) {
            if (!GameMenu()) return 0;
        }
        return 0;
    }
     
    Node::Node(int x1, int y1) { //构造Node对象
        x = x1; y = y1;
    }
     
    int SuiJi()
    {
    srand((unsigned)time(NULL));
    return (rand()*rand()+rand()*rand())%14;
    }
     
    bool operator < (UserData a, UserData b) { //重载运算符,按分数由大到小排列
        if(a.score != b.score)
        return a.score > b.score;
        if(a.gt !=b.gt)
        return a.gt > b.gt;
        else
        return a.gr > b.gr;
    }
    UserData::UserData(string s, long long sc,int gametime_,int _grade) { //构造UserData对象
        name = s; score = sc; gt=gametime_; gr=_grade;
    }
     
    void color(WORD A)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), A);
    }
     
    void Color(int a)
    {
        switch (a%4)
        {
            case 0:color(RED);break;
            case 1:color(CYAN);break;
            case 2:color(YELLOW);break;
            case 3:color(PURPLE);break;
        }
    }
     
    void GoTo(short x, short y) { //定位光标
        COORD coord = { x, y };
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    }
     
    void ShowInformation() { //输出游戏信息
        color(YELLOW);
        GoTo(78, 5);
        printf("贪吃蛇游戏");
        GoTo(78,18);
        gametime=(clock()-mj)/1000;
        grade=snakeLen-3;
        printf("生存时间:%3d 秒",(clock()-mj)/1000);
        GoTo(78, 8);
        printf("游戏规则:");
        GoTo(78, 10);
        printf("请按 ↑ ↓ ← →  来控制您的蛇吃东西");
        GoTo(78, 12);
        printf("吃的越多,蛇就越长,您的等级也将越高");
        GoTo(78, 14);
        printf("当蛇吃到自己或撞上墙时,游戏结束。");
        GoTo(78,16);
        printf("自动前进时间:%3dms",speed);
        GoTo(78, 20);
        printf("当前等级: %8d", snakeLen-3);
        GoTo(78, 23);
        printf("您的分数: %d", score);
        color(CYAN);
        printf("+%d=%d",score/3,score*3/2);
        color(YELLOW);
        GoTo(78,25);
        printf("剩余时间:%d秒",20+(snakeLen-3)*5-gametime);
        sysj=20+(snakeLen-3)*5-gametime;
    }
     
    void DrawBoard() { //绘制墙体
     
        HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //获得输出句柄
     
        CONSOLE_CURSOR_INFO cursor_info = { 1, 0 }; //光标信息
        SetConsoleCursorInfo(hOut, &cursor_info); //隐藏光标
     
        COORD size = { 120, 30 };
        SetConsoleScreenBufferSize(hOut, size); //重设缓冲区大小
     
        SMALL_RECT rc = { 0 , 0, 120, 30 };
        SetConsoleWindowInfo(hOut, true, &rc); //重设窗口大小
     
        SetConsoleTextAttribute(hOut, CYAN);
     
        for (int i = STARTX - 2; i <= ENDX + 2; i += 2) { //横向墙体
            GoTo(i, STARTY - 1);
            printf("■");
            GoTo(i, ENDY + 1);
            printf("■");
        }
        for (int i = STARTY - 1; i <= ENDY + 1; ++i) { //竖向墙体
            GoTo(STARTX - 2, i);
            printf("■");
            GoTo(ENDX + 2, i);
            printf("■");
        }
    }
    void draw()
    {
        char m=snakeLen+62;
        Color(score);
        cout<<m;
     }
    void Init() { //初始化游戏
        system("cls");
        memset(isSnake, 0, sizeof(isSnake));
        speed = 200;
        curDiraction = 4;
        score = 0;
        DrawBoard();
        InitSnake();
        ShowInformation();
        AddFood();
        mj=clock();
        point=20;
        sysj=20;
    }
     
    void RunSnake(int x, int y) { //绘制蛇身
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);
        score += snakeLen + 1;
        if (x == foodx && y == foody) {
            EartFood();
            AddFood();
            return;
        }
        DrawBoard();
        snake.push_front(Node(x, y));
        isSnake[y][x] = true;
        GoTo(x, y);
        draw();
        Node back = snake.back();
        snake.pop_back();
        isSnake[back.y][back.x] = false;
        GoTo(back.x, back.y);
        printf(" ");
    }
     
    void Try(int& x, int& y) { //试走
        int key, cnt = 100;
        while (cnt--) { //多次检测键盘状态
            if (_kbhit()) {
                key = getch();
                switch (key) {
                case UP:
    //                if (curDiraction == 1 || curDiraction == 2) break;
                    --y; curDiraction = 1; return;
                case DOWN:
    //                if (curDiraction == 1 || curDiraction == 2) break;
                    ++y; curDiraction = 2; return;
                case LEFT:
    //                if (curDiraction == 3 || curDiraction == 4) break;
                    x -= 2; curDiraction = 3; return;
                case RIGHT:
    //                if (curDiraction == 3 || curDiraction == 4) break;
                    x += 2; curDiraction = 4; return;
                }
            }
        }
        if (curDiraction == 1) --y; //用户没有输入时
        else if (curDiraction == 2) ++y;
        else if (curDiraction == 3) x -= 2;
        else x += 2;
    }
     
    bool IsGoodCoord(int x, int y) { //判断光标是否合法
        if (x <= ENDX && y <= ENDY && x >= STARTX && y >= STARTY)
            return true;
        else
            return false;
    }
     
    void AddFood() { //增加食物
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), PURPLE);
        srand((unsigned)time(NULL));
        while (true) {
            foodx = (rand()%ENDX) + 1;
            foody = (rand()%ENDY) + 1;
            if (foodx&1) foodx++;
            if (!isSnake[foody][foodx] && IsGoodCoord(foodx, foody)) break;
        }
        GoTo(foodx, foody);
        int a=rand()%5;
        if(a>=4)
        printf("@");
        else if(a<=1)
        printf("#");
        else
        printf("&");
    }
     
    void EartFood() { //吃东西
        point+=4;
        int sb=gametime=(clock()-mj)/1000;
        sysj=point-sb;
        score+=score/2;
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);
        snake.push_front(Node(foodx, foody));
        isSnake[foody][foodx] = true;
        ++snakeLen;
        if (speed >= 55) speed -= 5;
     
        GoTo(foodx, foody);
        draw();
        AddFood();
    }
     
    void InitSnake() { //初始化蛇身
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);
        snakeLen = 3, gox = 18, goy = 14;
        snake.clear();
        snake.push_front(Node(12, 14));
        snake.push_front(Node(14, 14));
        snake.push_front(Node(16, 14));
        for (int i = 12; i <= 16; i += 2) {
            GoTo(i, 14);
            draw();
            isSnake[14][i] = true;
        }
    }
    bool EndGame() { //结束游戏
        system("cls");
        DrawBoard();
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);
        GoTo(28, 10);
        printf("您的本局游戏得分: %d分", score);
        GoTo(32, 18);
        printf("....你挂了....");
        GoTo(27, 20);
        printf("是否继续游戏: 是(1), 否(0)");
        GoTo(27, 22);
        char key = getch();
        while (true) {
            if (key == '1') return false;
            else if (key == '0')
            {GoTo(ENDX+1,ENDY+2);
            exit(0);return true;
            }
            else key = getch();
        }
    }
     
    bool StartGame() { //启动游戏
     
        Init();
     
        while (sysj>0) { //开挂
            RunSnake(gox, goy);
            ShowInformation();
            Try(gox, goy);
            Sleep(speed);
        }
        InputData();
        return true;
    }
     
    bool GameMenu() { //游戏菜单
        system("cls");
        DrawBoard();
        GoTo(STARTX + 22, STARTY + 4);
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);
        printf("欢迎进入贪吃蛇游戏!");
        GoTo(STARTX + 24, STARTY + 10);
        printf("1: 新游戏");
        GoTo(STARTX + 24, STARTY + 12);
        printf("2: 排行榜");
        GoTo(STARTX + 24, STARTY + 14);
        printf("3: 关于游戏");
        GoTo(STARTX + 24, STARTY + 16);
        printf("4: 退出游戏");
     
        while (true) {
            if (_kbhit()) {
                char key = getch();
                switch (key) {
                case '1':
                    if (!StartGame()) return false;
                    else return true;
                case '2':
                    ShowRanking(); return true;
                case '3':
                    ShowAbout(); return true;
                case '4':
                    GoTo(1,ENDY+2);
                    return false;
                default:
                    return true;
                }
            }
        }
    }
     
    void ShowRanking() { //展示排行榜
        vector<UserData> vu;
        FILE *fp = fopen("Gamedata2.txt", "r");
        if (fp == NULL) fp = fopen("Gamedata2.txt", "w+");
        char name[20];
        int len = 0;
        while (fscanf(fp, "%s", name) != EOF) {
            ++len;
            int score,g=grade;
            fscanf(fp, "%d%d%d%*c", &score,&gametime,&g);
            vu.push_back(UserData(string(name), score,gametime,g));
        }
        fclose(fp);
        sort(vu.begin(), vu.end()); //对得分进行排名
        system("cls");
        DrawBoard();
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), CYAN);
        GoTo(STARTX + 8, STARTY + 2);
        printf("用户");
        GoTo(STARTX + 20, STARTY + 2);
        printf("分数");
        GoTo(STARTX + 32, STARTY + 2);
        printf("生存时间");
        GoTo(STARTX + 44, STARTY + 2);
        printf("排行");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);
     
        for (int i = 0; i < len && i < 10; ++i) { //打印前十名用户数据
            char const *p = vu[i].name.c_str();
            Color(score);
            GoTo(STARTX + 8, STARTY + 4 + i);
            printf("%s", p);
            GoTo(STARTX + 20, STARTY + 4 + i);
            printf("%d分", vu[i].score);
            GoTo(STARTX + 32, STARTY + 4 + i);
            printf("%d秒", vu[i].gt);
            GoTo(STARTX + 44, STARTY + 4 + i);
            printf(" %d", i + 1);
        }
     
        GoTo(STARTX + 4, ENDY - 2);
        printf("-----------------  按'1'返回游戏菜单  ---------------");
        while (true) {
            if (_kbhit()) {
                char key = getch();
                if (key == '1') break;
            }
        }
    }
     
    void ShowAbout() { //展示游戏相关
        system("cls");
        DrawBoard();
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);
     
        GoTo(STARTX + 4, STARTY + 2);
        printf("-------------------  贪吃蛇游戏  -------------------");
        GoTo(STARTX + 10,STARTY + 8);
        printf("贪吃蛇游戏");
        GoTo(STARTX + 10,STARTY + 10);
        printf("游戏规则:");
        GoTo(STARTX + 10,STARTY + 12);
        printf("请按 ↑ ↓ ← →  来控制您的蛇吃东西");
        GoTo(STARTX + 10,STARTY + 14);
        printf("吃的越多,蛇就越长,您的等级也将越高");
        GoTo(STARTX + 10,STARTY + 16);
        printf("当蛇吃到自己或撞上墙时,游戏结束。");
     
        GoTo(STARTX + 4, ENDY - 2);
        printf("-----------------  按'1'返回游戏菜单  ---------------");
        while (true) {
            if (_kbhit()) {
                char key = getch();
                if (key == '1') break;
            }
        }
    }
     
    void InputData() { //用户输入名字
        char name[20];
        if(score>=1000)
        {
        GoTo(STARTX + 10, STARTY + 10);
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), RED);
        printf("请输入你的名字: ");
        COORD coord = { STARTX + 10, STARTY + 12 };
        SetConsoleCursorPosition(GetStdHandle(STD_INPUT_HANDLE), coord);
        while (true) { //忽略非法字符
            scanf("%s", name);
            if (name[0] != 0 && name[0] != ' ') break;
        }FILE *fp = fopen("Gamedata2.txt", "a");
        if (fp == NULL) fp = fopen("Gamedata2.txt", "w+");
        fprintf(fp, "%s %d %d \n", name, score,gametime);
        fclose(fp);
        }
        else
        {
            GoTo(STARTX + 20, STARTY + 10);
            cout<<"哟!这分数也能上榜??"<<endl;
            Sleep(1000);
         }
        EndGame();
     
    }
    
    //忍者必须死
    #include<bits/stdc++.h>
    #include<windows.h>
    #include<stdio.h>
    #include<conio.h>
    #include<time.h>
    #define Nor if(B[b].x<5) B[b].x=5;
    #define Out1 Bx1-Bvx1<=6||Bx1-Bvx1>=28||By1-Bvy1<=7||By1-Bvy1>=27
    #define Out2 Bx2-Bvx2<=6||Bx2-Bvx2>=28||By2-Bvy2<=7||By2-Bvy2>=27
    #define Chang1 {Bwhat1=0;Bvx1=Bvy1=0;memset(Bgo1,0,sizeof(Bgo1));}
    #define Chang2 {Bwhat2=0;Bvx2=Bvy2=0;memset(Bgo2,0,sizeof(Bgo2));}
    #define Chang3 {Bwhat3=0;Bvx3=Bvy3=0;memset(Bgo3,0,sizeof(Bgo3));}
    using namespace std;
    int ti(float a) {return ((int)(a*10+5))/10;}
    void Setpos(float x,float y){COORD pos;pos.X=ti(y*4)/2;pos.Y=ti(x);SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
    void Color(int a){if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_GREEN|BACKGROUND_BLUE);if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY|BACKGROUND_RED|BACKGROUND_BLUE);if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);if(a==14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);}
    int Blomax,Ren,Exp,Expmax,Lv,Lvl,Ice,Drug,ar1,ar2,Tar1,Tar2,bl,br,Win,T,Tb,Sy,Up,Upt,Down,u1,u2,Kill,Killb,L,Ll[4],Li,D,Gd[10],Biao,Fire,Fir,Water,Thun,Wind,Magne,I[20][2],ib,Dis,Disb,Dis1,Disb1,Boss,Bblo,Bblomax,Bwhat1,Bwhat2,Bwhat3,Bgo1[10],Bgo2[10],Bgo3[10],Bbr,Bbl,Bl[4];
    float X,Y,Vx,Vy,Ding,Blo,Hui,Bx1,By1,Bx2,By2,Bx3,By3,Bvx1,Bvy1,Bvx2,Bvy2,Bvx3,Bvy3,Bway[1001][2];
    struct bullet{float x,y,vx,vy;int what;int a,t,How;int life;bool kill;}B[100001];
    void Map(int a,int b);
    void Pan(int a,float x,float y,int b){
        float Nox[4],Noy[4];Nox[0]=X,Noy[0]=Y;
        if(Down==1&&X==22) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;else if(Down==2) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;else if(Down==1||X<18) Nox[1]=X-1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;else Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
        for(int i=0;i<3;i++){
            if(a==-1){if(abs(x-Nox[i])+abs(y-Noy[i])<1.5) {if(B[b].what==-10)Exp+=2;if(B[b].what==-11)Exp+=1;B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}
            if(a==-2){if(abs(x-Nox[i])+abs(y-Noy[i])<2.5) {if(B[b].what==-2)Exp+=5,Biao+=5;if(B[b].what==-3)Fire=300,Ice=0,Fir=3;if(B[b].what==-4)Water=200;if(B[b].what==-5){Wind=70;Ding=28.25;Ice=0;if(Y<Ding-1)Vy=5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(B[b].what==-6){Thun=200;system("color 1F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");}if(B[b].what==-7)Magne=300;if(B[b].what==-8)Ice=0,Drug=0,Blo=fmin((float)Blomax,Blo+20);if(B[b].what==-9)Exp=fmin((float)Expmax,Exp+20);B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}
        }if(Wind==0&&Thun==0&&(B[b].kill!=0||Killb>=15||Ren==1&&Killb>0)) return;
        for(int i=0;i<3;i++){
            if((Wind>=1||Thun>=1)&&abs(x-Nox[i])+abs(y-Noy[i])<2.5) {if(B[b].what<98)Exp+=2;B[b].life=0;Map(3,b);break;}
            if(a==1) {if(abs(x-Nox[i])<0.5&&abs(y-Noy[i])<1) {if(B[b].what>=99)Blo-=10;if(B[b].what==14)Blo-=15,Ice=100,B[b].life=0;else if(B[b].what==15)Blo-=20,Ice=0,B[b].life=0;else if(B[b].what==17)Blo-=5,Drug=100,B[b].life=0;else if(B[b].what>=13&&B[b].what<=17)Blo-=10,B[b].life=0;else Blo-=15;B[b].kill=1,Killb=20;Kill=1;Map(3,b);break;}}
            if (a==2||a==6||a==8||a==9||a==10||a==11||a==12) {
    if(abs(x-Nox[i])+abs(y-Noy[i])<1.5) {
    if(a==2)Blo-=20;
    else if(a==8)Blo-=10;
    else Blo-=15;B[b].kill=1,Killb=20;Kill=1;if(a!=2){B[b].life=0;if(B[b].life==0&&b==bl) bl++;Map(3,b);break;}}}
            if(a==4) {if((Wind>=1||Thun>=1)&&abs(x-Nox[i])<1.5&&Noy[i]-y<=0&&Noy[i]-y>=-8) {if(B[b].what<98)Exp+=2;B[b].life=0;Map(3,b);break;}if(abs(x-Nox[i])<1&&Noy[i]-y<=0&&Noy[i]-y>=-8) {Blo-=25,B[b].kill=1,Killb=20;Kill=1;Vy=-1;Y-=0.5;break;}}
        }
    }
    void Map(int a,int b){
        Color(0);
        if(a==-1){
            if(Boss==1||Boss==6){if(Bwhat1==5){if(ti(Bx1)==20)Setpos(Bx1,By1),cout<<"==";else Setpos(Bx1,By1),cout<<"  ";}else{Setpos(Bx1-1,By1-0.5),cout<<"    ";Setpos(Bx1,By1-1),cout<<"      ";Setpos(Bx1+1,By1-0.5),cout<<"    ";if(abs(ti(Bx1)-20)<=1)Setpos(20,By1-1),cout<<"======";}}
            if(Boss==2||Boss==6){Setpos(Bx2-1,By2-1);cout<<"    ";Setpos(Bx2,By2-1);cout<<"      ";Setpos(Bx2+1,By2-1),cout<<"      ";Color(0);if(abs(ti(Bx2)-20)<=1)Setpos(20,By2-1),cout<<"======";}
            if(Boss==3||Boss==6){Setpos(Bx3-1,By3-0.5);cout<<"     ";Setpos(Bx3,By3);cout<<"  ";Setpos(Bx3+1,By3-1),cout<<"      ";Color(0);if(abs(ti(Bx3)-20)<=1)Setpos(20,By3-1),cout<<"=======";}
            if(X<0)return;if(X>=17&&X<=19){Setpos(X-1,Y);cout<<"  ";Setpos(X,Y-1);cout<<"   ";Setpos(X+1,Y-1),cout<<"   ";}else if(X<=23&&X>=21){Setpos(X+1,Y);cout<<"  ";Setpos(X,Y-1);cout<<"   ";Setpos(X-1,Y-1),cout<<"    ";}else if(X>23){Setpos(X,Y-1);cout<<"    ";Setpos(X-1,Y-0.5),cout<<"   ";}else if(X<17&&Upt!=0){Setpos(X,Y-1);cout<<"    ";Setpos(X+1,Y-1.5),cout<<"    ";}else if(X<17){Setpos(X,Y-1);cout<<"    ";Setpos(X+1,Y-0.5),cout<<"   ";}if(Thun>0){Setpos(X-2,Y-1),cout<<"    ";Setpos(X+2,Y-1),cout<<"    ";Setpos(X,Y+2),cout<<"  ";Setpos(X,Y-2.5),cout<<"  ";Setpos(X-1,Y+1),cout<<"  ";Setpos(X+1,Y+1),cout<<"  ";Setpos(X-1,Y-2),cout<<"  ";Setpos(X+1,Y-2),cout<<"  ";Setpos(20,Y-2.5),cout<<"============";}if(Wind!=0){Setpos(X+1,Y-5);cout<<"        ";Setpos(X,Y-5);cout<<"        ";Setpos(X-1,Y-5);cout<<"        ";Setpos(20,Y-5),cout<<"========";}if(Water!=0){Setpos(X,Y-4);cout<<"       ";Setpos(X+2,Y-3.5);cout<<"     ";Setpos(X-2,Y-3.5);cout<<"     ";Setpos(X+1,Y-3.5);cout<<"     ";Setpos(X-1,Y-3.5);cout<<"     ";Setpos(20,Y-5),cout<<"========";}if(Fire!=0){Setpos(X,Y+1),cout<<"  ";Setpos(X+1,Y),cout<<"  ";Setpos(X-1,Y-1),cout<<"  ";Setpos(20,Y-1);cout<<"======";}
        }
        if(a==0){
            if(Boss==1||Boss==6){if(Bwhat1==5)Color(5),Setpos(Bx1,By1),cout<<"█",Color(0);else if(Bwhat1==4&&Bgo1[1]>6&&Bgo1[1]<11)Color(4),Setpos(Bgo1[5]-1,Bgo1[6]),cout<<"︻",Setpos(Bgo1[5],Bgo1[6]-1),cout<<"【",Setpos(Bgo1[5],Bgo1[6]+1),cout<<"】",Setpos(Bgo1[5]+1,Bgo1[6]),cout<<"︼",Color(0);else{Setpos(Bx1-1,By1-0.5),Color(0),cout<<"●●";Setpos(Bx1,By1-1);if(Bwhat1==2&&Bgo1[1]<=5)Color(1);else if(Bwhat1==3&&Bgo1[1]<=5)Color(5);else if(Bwhat1==6&&Bgo1[1]<=5)Color(8); else Color(4);if(Bwhat1==4) Setpos(Bx1,By1-0.5),cout<<"██(";else cout<<")██(";Setpos(Bx1+1,By1-0.5),cout<<"……";Color(0);}}
            if(Boss==2||Boss==6){Setpos(Bx2-1,By2-1);Color(0),cout<<"\\ ";Color(0);cout<<"●";Setpos(Bx2,By2-1);Color(3);cout<<"◥";Color(5),cout<<"JJJ";Color(0),cout<<">";Color(3);Setpos(Bx2+1,By2-1),cout<<"◢█◣";Color(0);}
            if(Boss==3||Boss==6){Setpos(Bx3-1,By3-0.5);if(Bwhat3==3||Bwhat3==9) Color(1);else if(Bwhat3==4||Bwhat3==10) Color(4);else if(Bwhat3==5||Bwhat3==11) Color(5);if(Bwhat3==11)cout<<' ';else if(Bwhat3==6) Color(3);else Color(2);cout<<"●-";Setpos(Bx3,By3);if(Bwhat3==11)cout<<"/";else cout<<"┃";Color(0);Setpos(Bx3+1,By3-1),cout<<"●●●";}
            if(X<0)return;if(Ren==2) Color(12);if(Ren==3) Color(1);if(Ren==4) Color(3);if(Ren==5) Color(4);if(Ren==6) Color(2);if(Drug!=0&&T%5!=0) Color(11);if(Drug!=0&&T%5==0) Color(11);if(Ice!=0) Color(6);if(b==1) Color(8);if(Li!=0) Color(5);if(Ren==1&&Killb>0&&T%4<2) Color(13);if(Wind>0&&T%4<=1) Color(1);if(Wind>0&&T%4>=2) Color(0);if(Thun>0&&T%4<=1) Color(1);if(Thun>0&&T%4>=2) Color(6);
            if(X>=17&&X<=19){Setpos(X-1,Y);cout<<"●";Setpos(X,Y-1);cout<<"━/";if(T%10<3) Setpos(X+1,Y-1),cout<<"┛╲";else if(T%10<6) Setpos(X+1,Y-1),cout<<"┦ ";else Setpos(X+1,Y-1),cout<<"╯>";if(Wind>0&&T%3==0) Setpos(X+1,Y-1),cout<<"┛╲";else if(Wind>0&&T%3==1) Setpos(X+1,Y-1),cout<<"┦ ";else if(Wind>0&&T%3==2)Setpos(X+1,Y-1),cout<<"╯>";}else if(X<=23&&X>=21){Setpos(X+1,Y);cout<<"●";Setpos(X,Y-1);cout<<"━\\";if(T%10<3) Setpos(X-1,Y-1),cout<<"┓╱";else if(T%10<6) Setpos(X-1,Y-1),cout<<"┪ ";else Setpos(X-1,Y-1),cout<<"╮>";if(Wind>0&&T%3==0) Setpos(X-1,Y-1),cout<<"┓╱";else if(Wind>0&&T%3==1) Setpos(X-1,Y-1),cout<<"┪ ";else if(Wind>0&&T%3==2)Setpos(X-1,Y-1),cout<<"╮>";}else if(X>23){Setpos(X,Y-1);cout<<"━ ●";Setpos(X-1,Y-0.5),cout<<"│>";}else if(X<17&&Upt!=0){Setpos(X,Y-1);cout<<"━ ●";Setpos(X+1,Y-1.5),cout<<"╱ >";}else if(X<17){Setpos(X,Y-1);cout<<"━ ●";Setpos(X+1,Y-0.5),cout<<"│>";}if(Thun>0){Setpos(X-2,Y-1),cout<<"▄▄";Setpos(X+2,Y-1),cout<<"▄▄";Setpos(X,Y+2),cout<<"▌";Setpos(X,Y-2.5),cout<<"▌";Setpos(X-1,Y+1),cout<<"█";Setpos(X+1,Y+1),cout<<"█";Setpos(X-1,Y-2),cout<<"█";Setpos(X+1,Y-2),cout<<"█";}if(Magne>0&&T%7<2)Setpos(X,Y),Color(5),cout<<"★";if(Wind>1){if(T%6<2)Color(1);else Color(0);if(T%8<=1){Setpos(X+1,Y-5);cout<<"----  --";Setpos(X,Y-5);cout<<"-  --- -";Setpos(X-1,Y-5);cout<<"--- - --";}else if(T%8<=3){Setpos(X+1,Y-5);cout<<"------  ";Setpos(X,Y-5);cout<<" --  ---";Setpos(X-1,Y-5);cout<<"----- - ";}else if(T%8<=5){Setpos(X+1,Y-5);cout<<"  ------";Setpos(X,Y-5);cout<<"-- --  -";Setpos(X-1,Y-5);cout<<"- ----- ";}else if(T%8<=7){Setpos(X+1,Y-5);cout<<"--  ----";Setpos(X,Y-5);cout<<" --- -- ";Setpos(X-1,Y-5);cout<<"- - ----";}}if(Water!=0){Color(1);if(T%20<5){Setpos(X+2,Y-3);cout<<"■";Setpos(X+1,Y-3.5);cout<<"■";Setpos(X-1,Y-2.5);cout<<"■";Setpos(X-2,Y-3);cout<<"■";}else if(T%20<10||T%20>=15){Setpos(X+2,Y-3);cout<<"■";Setpos(X,Y-4);cout<<"■■";Setpos(X-2,Y-3);  cout<<"■";}else if(T%20<15){Setpos(X+2,Y-3.5);cout<<"■";Setpos(X+1,Y-3);cout<<"■";Setpos(X-1,Y-3.5);cout<<"■";Setpos(X-2,Y-3);cout<<"■";}}if(Fire!=0){if(T%6<3)Color(4);else Color(5);if(Fir>=1)Setpos(X,Y+1),cout<<"●";if(Fir>=2)Setpos(X+1,Y),cout<<"●";if(Fir>=3)Setpos(X-1,Y-1),cout<<"●";}
        }
        if(a==1||a==3){
            if(B[b].what==1){Nor;Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].How<=1) Color(13);else Color(4);cout<<"●";if(a==1) Pan(1,B[b].x,B[b].y,b);}}
            if(B[b].what==2){Nor;Setpos(B[b].x-1,B[b].y-1);if(ti(B[b].x-1)==20)cout<<"======";else cout<<"      ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";Setpos(B[b].x+1,B[b].y-1);if(ti(B[b].x+1)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);Color(5);if(B[b].How==0){Setpos(B[b].x-1,B[b].y),cout<<"↑";Setpos(B[b].x,B[b].y-1),cout<<"←┼ →";Setpos(B[b].x+1,B[b].y),cout<<"↓";}else if(B[b].How==1){Setpos(B[b].x-1,B[b].y-1),cout<<"↖  ↗";Setpos(B[b].x,B[b].y),cout<<"╳";Setpos(B[b].x+1,B[b].y-1),cout<<"↙  ↘";} if(a==1) Pan(2,B[b].x,B[b].y,b);}}
            if(B[b].what==3||B[b].what==5){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;Setpos(B[b].x,B[b].y);if(B[b].How==1) Color(5);else Color(4);cout<<"◎";}}
            if(B[b].what==4){Nor;Setpos(B[b].x,fmax((float)0,B[b].y-8));if(ti(B[b].x)==20){for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"==";}else {for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"  ";}if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,fmax((float)0,B[b].y-8));Color(6); for(int i=max(0,(int)B[b].y-8);i<=B[b].y;i++)cout<<"═"; if(a==1) Pan(4,B[b].x,B[b].y,b);}}
            if(B[b].what==6||B[b].what==8||B[b].what==9){Nor;Setpos(B[b].x-1,B[b].y);if(ti(B[b].x)-1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x+1,B[b].y);if(ti(B[b].x)+1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;Setpos(B[b].x,B[b].y-1);if(B[b].what==6){if(B[b].How<=1) Color(1); else Color(6);}if(B[b].what==9){if(B[b].How<=1) Color(4); else Color(8);}if(B[b].what==8)Color(5);Setpos(B[b].x-1,B[b].y);cout<<"︹";Setpos(B[b].x+1,B[b].y);cout<<"︺";Setpos(B[b].x,B[b].y-1);if(B[b].How%2==1) cout<<"〔●〕"; else cout<<"﹝○﹞"; if(a==1) Pan(6,B[b].x,B[b].y,b);}}
            if(B[b].what==7){Nor;Setpos(B[b].x,B[b].y);if(B[b].How<0) for(int i=19;i>=20+B[b].How;i--) {Setpos(i,B[b].y);cout<<"  ";}if(B[b].How>0) for(int i=21;i<=20+B[b].How;i++) {Setpos(i,B[b].y);cout<<"  ";}if(B[b].life!=0){B[b].y-=B[b].vy;if(B[b].How<0) for(int i=19;i>=20+B[b].How;i--) {Setpos(i,B[b].y);cout<<"║"; if(a==1) Pan(7,i,B[b].y,b);}if(B[b].How>0) for(int i=21;i<=20+B[b].How;i++) {Setpos(i,B[b].y);cout<<"║"; if(a==1) Pan(7,i,B[b].y,b);}}}
            if(B[b].what==10||B[b].what==11||B[b].what==12){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(B[b].life!=0){B[b].x-=B[b].vx;B[b].y-=B[b].vy;if(B[b].How==1){B[b].vy-=0.2;}else B[b].vx-=0.35;if(B[b].x>=25) B[b].x=25,B[b].vx*=-0.8;if(B[b].what==11&&B[b].y<=1) B[b].y=1,B[b].vy*=-1;if(B[b].what==12&&B[b].y<=1) B[b].y=1,B[b].vx=0,B[b].vy=-0.5,B[b].How=1;Setpos(B[b].x,B[b].y);if(B[b].what==11)Color(1);else if(B[b].what==12)Color(5);else Color(0);if(B[b].t%4<2)cout<<"▃";else cout<<"▍";if(a==1) Pan(B[b].what,B[b].x,B[b].y,b);}}
            if(B[b].what>=13&&B[b].what<=17){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"====";else cout<<"    ";if(B[b].life!=0){B[b].x-=B[b].vx;B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].what==14) Color(1);else if(B[b].what==15) Color(4);else if(B[b].what==16) Color(5);else if(B[b].what==17) Color(3);else Color(2);cout<<"●";if(B[b].what==14)cout<<"*";if(B[b].what==15)cout<<"";if(B[b].what==16)cout<<"<";if(B[b].what==17)cout<<"X";} if(a==1) Pan(1,B[b].x,B[b].y,b);}
            if(B[b].what==98&&B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(ti(B[b].x==20))cout<<"==";else cout<<"  ";if(B[b].y<=3)B[b].life=0;} 
            if(B[b].what>=99){if(B[b].y<=3)B[b].life=0;if(B[b].life!=0){B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);Color(5);if(B[b].what==99)cout<<"█";if(B[b].what>=100&&B[b].what<200){if(B[b].what%5==0)cout<<"我";if(B[b].what%5==1)cout<<"是";if(B[b].what%5==2)cout<<"最";if(B[b].what%5==3)cout<<"强";if(B[b].what%5==4)cout<<"的";}if(B[b].what>=200&&B[b].what<300){if(B[b].what%6==0)cout<<"神";if(B[b].what%6==1)cout<<"级";if(B[b].what%6==2)cout<<"怪";if(B[b].what%6==3)cout<<"物";if(B[b].what%6==4)cout<<"之";if(B[b].what%6==5)cout<<"光";}if(B[b].what>=300&&B[b].what<400){if(B[b].what%8==0)cout<<"颤";if(B[b].what%8==1)cout<<"抖";if(B[b].what%8==2)cout<<"吧";if(B[b].what%8==3)cout<<"无";if(B[b].what%8==4)cout<<"能";if(B[b].what%8==5)cout<<"的";if(B[b].what%8==6)cout<<"人";if(B[b].what%8==7)cout<<"类";}if(B[b].what>=400&&B[b].what<500){if(B[b].what%8==0)cout<<"还";if(B[b].what%8==1)cout<<"不";if(B[b].what%8==2)cout<<"快";if(B[b].what%8==3)cout<<"跪";if(B[b].what%8==4)cout<<"倒";if(B[b].what%8==5)cout<<"在";if(B[b].what%8==6)cout<<"朕";if(B[b].what%8==7)cout<<"前";}if(B[b].what>=500&&B[b].what<600){if(B[b].what%8==0)cout<<"看";if(B[b].what%8==1)cout<<"懂";if(B[b].what%8==2)cout<<"这";if(B[b].what%8==3)cout<<"句";if(B[b].what%8==4)cout<<"话";if(B[b].what%8==5)cout<<"的";if(B[b].what%8==6)cout<<"是";if(B[b].what%8==7)cout<<"猪";} if(a==1) Pan(1,B[b].x,B[b].y,b);}}
            if(B[b].what==-1){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(Boss==0) B[b].life=0;else if(((Boss==1&&abs(B[b].x-Bx1)+abs(B[b].y-By1)<1.5)||(Boss==2&&abs(B[b].x-Bx2)+abs(B[b].y-By2)<1.5)||(Boss==3&&abs(B[b].x-Bx3)+abs(B[b].y-By3)<1.5)||(B[b].t==10))&&B[b].life==1) Bblo-=8+Lv*2,B[b].life=0;if(B[b].life!=0){if(Boss==1)B[b].x=B[b].x+(Bx1-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By1-B[b].y)/(10-B[b].t)*1.0;if(Boss==2)B[b].x=B[b].x+(Bx2-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By2-B[b].y)/(10-B[b].t)*1.0;if(Boss==3)B[b].x=B[b].x+(Bx3-B[b].x)/(10-B[b].t)*1.0,B[b].y=B[b].y+(By3-B[b].y)/(10-B[b].t)*1.0;Setpos(B[b].x,B[b].y);Color(7);if(B[b].t%2==0) cout<<"+";else cout<<"×";}}
            if(B[b].what<=-2&&B[b].what>=-9){Nor;Setpos(B[b].x-1,B[b].y);if(ti(B[b].x)-1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x+1,B[b].y);if(ti(B[b].x)+1==20)cout<<"==";else cout<<"  ";Setpos(B[b].x,B[b].y-1);if(ti(B[b].x)==20)cout<<"======";else cout<<"      ";if(B[b].life!=0){B[b].y-=B[b].vy;B[b].x-=B[b].vx;if(B[b].what<=-3&&B[b].what>=-7){if(B[b].x<=7)B[b].x=7;if(B[b].x>=28)B[b].x=28;else if(B[b].x>=B[b].a+1&&B[b].How==1)B[b].How=0;else if(B[b].x<=B[b].a-1&&B[b].How==0)B[b].How=1;if(B[b].How==1&&B[b].vx>=-1)B[b].vx-=0.2;if(B[b].How==0&&B[b].vx<=1)B[b].vx+=0.2;}if(B[b].what==-2) Color(3);if(B[b].what==-3) Color(4);if(B[b].what==-4) Color(1);if(B[b].what==-5) Color(0);if(B[b].what==-6) Color(6);if(B[b].what==-7) Color(5);if(B[b].what==-8) Color(2);if(B[b].what==-9) Color(14);if(T%7<=1&&B[b].what==-5)Color(1);else if(T%7<=1)Color(0);Setpos(B[b].x-1,B[b].y);cout<<"︹";Setpos(B[b].x+1,B[b].y);cout<<"︺";Setpos(B[b].x,B[b].y-1);if(B[b].what==-2) cout<<"﹝镖﹞";if(B[b].what==-3) cout<<"﹝火﹞";if(B[b].what==-4) cout<<"﹝水﹞";if(B[b].what==-5) cout<<"﹝风﹞";if(B[b].what==-6) cout<<"﹝雷﹞";if(B[b].what==-7) cout<<"﹝磁﹞";if(B[b].what==-8) cout<<"﹝血﹞";if(B[b].what==-9) cout<<"﹝忍﹞"; if(a==1) Pan(-2,B[b].x,B[b].y,b);}}
            if(B[b].what==-11||B[b].what==-12){Nor;Setpos(B[b].x,B[b].y);if(ti(B[b].x)==20)cout<<"==";else cout<<"  ";if(B[b].life!=0){if(Magne>0)B[b].How++,B[b].x=B[b].x+(X-B[b].x)/(10-B[b].How)*1.0,B[b].y=B[b].y+(Y-B[b].y)/(10-B[b].How)*1.0;B[b].y-=B[b].vy;Setpos(B[b].x,B[b].y);if(B[b].what==-10) Color(5);if(B[b].what==-11) Color(7);if(T%7<=1)Color(0);cout<<"◆"; if(a==1) Pan(-1,B[b].x,B[b].y,b);}}
            if(B[b].what==-13){Nor;Setpos(B[b].x,B[b].y-0.5);if(ti(B[b].x)==20)cout<<"===";else cout<<"   ";if(B[b].life!=0){if(B[b].a==13880086){if(Boss==0) B[b].life=0;else if(((Boss==1&&abs(B[b].x-Bx1)+abs(B[b].y-By1)<1.5)||(Boss==2&&abs(B[b].x-Bx2)+abs(B[b].y-By2)<1.5)||(Boss==3&&abs(B[b].x-Bx3)+abs(B[b].y-By3)<1.5)||(B[b].t==5))&&B[b].life==1) Bblo-=8+Lv*2,B[b].life=0;if(B[b].life!=0){if(Boss==1)B[b].x=B[b].x+(Bx1-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By1-B[b].y)/(5-B[b].t)*1.0;if(Boss==2)B[b].x=B[b].x+(Bx2-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By2-B[b].y)/(5-B[b].t)*1.0;if(Boss==3)B[b].x=B[b].x+(Bx3-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(By3-B[b].y)/(5-B[b].t)*1.0;}}else{if(B[B[b].a].life==0) B[b].life=0;else if((abs(B[b].x-B[B[b].a].x)+abs(B[b].y-B[B[b].a].y)<1.5||(B[b].t==5))&&B[b].life==1) Exp+=2,B[B[b].a].life=B[b].life=0;if(B[b].life!=0){B[b].x=B[b].x+(B[B[b].a].x-B[b].x)/(5-B[b].t)*1.0,B[b].y=B[b].y+(B[B[b].a].y-B[b].y)/(5-B[b].t)*1.0;}}Setpos(B[b].x,B[b].y-0.5);if(T%6<3)Color(5);else Color(4);cout<<"●";}}
        }if(br<bl) {br=-1,bl=0;memset(B,0,sizeof(B));}Color(0);
    }
    void Move(){
        if(X<3) X=3;if(Y<1) Y=1,Vy=0;if(Y>29) Y=29,Vy=0;
        if(Ice!=0){X-=Vx/2.0;Y+=Vy/2.0;Vy=fmax(Vy-0.025,(float)0);if(T%6==0&&Up==0&&Y<Ding) Y+=0.25;if(T%6==3&&Up==0&&Y>=Ding) Y-=0.25;if(Up==0&&Y<=Ding-1.25) Vy=0.25;if(Up==0&&Y>=Ding+1.25&&Wind==0) Vy=-0.25;if(Up==0&&Down==0&&Vx>0&&X<=18) Up=0,Down=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2&&X<=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up==0&&Down==1&&Vx<0&&X>=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up>0&&Down==0&&X>18) Up=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2) Vx+=0.175;else if(Up>0&&Upt==0) Vx-=0.175;else if(Up>0&&Upt>0) {Vx=fmax(Vx-0.125,(float)0);if(Upt==1&&T%2==0)Map(-1,0);if(T%2==0)Upt--;}}
        else{X-=Vx;Y+=Vy;Vy=fmax(Vy-0.05,(float)0);if(Wind==0){if(T%6==0&&Up==0&&Y<Ding) Y+=0.5;if(T%6==3&&Up==0&&Y>=Ding) Y-=0.5;}else{if(T%2==0&&Up==0&&Y<Ding) Y+=0.5;if(T%2==1&&Up==0&&Y>=Ding) Y-=0.5;}if(Up==0&&Y<=Ding-1.25) Vy=0.5;if(Up==0&&Y>=Ding+1.25&&Wind==0) Vy=-0.5;if(Up==0&&Down==0&&Vx>0&&X<=18) Up=0,Down=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2&&X<=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up==0&&Down==1&&Vx<0&&X>=22) Up=0,Down=1,Vx=0,Vy=0,X=22,Setpos(20,Y-2.5),cout<<"==========";else if(Up>0&&Down==0&&X>18) Up=0,Vx=0,Vy=0,X=18,Setpos(20,Y-2.5),cout<<"==========";else if(Down==2) Vx+=0.35;else if(Up>0&&Upt==0) Vx-=0.35;else if(Up>0&&Upt>0) {Vx=fmax(Vx-0.25,(float)0);if(Upt==1)Map(-1,0); Upt--;}}
        for(int i=bl;i<=br;i++){
            if(B[i].what<98)if(B[i].x-B[i].vx<=5||B[i].x-B[i].vx>=30||B[i].y-B[i].vy<=0||B[i].y-B[i].vy>=30){B[i].life=0;Map(1,i);}
            for(int j=0;j<20;j++)if(B[i].what>0&&B[i].life!=0&&abs(B[i].x-I[j][0])<2&&B[i].y-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;B[i].life=0;Exp+=2;}
            if(B[i].t>=100)B[i].life=0;if(B[i].life==0&&i==bl) bl++;
            Map(1,i);if(B[i].life==0) continue;
            else{B[i].t++;
                if(B[i].what==1){if(B[i].y<=25&&B[i].How==0) B[i].vy=0,B[i].How=1;if(B[i].t==30) B[i].y+=1.5,B[i].How=2;if(B[i].t==35) B[i].vy=1.5,B[i].How=3;}
                if(B[i].what==2){if(B[i].t%3==0) B[i].How=!B[i].How;} 
                if(B[i].what==3||B[i].what==5){if(B[i].what==3&&B[i].y<=20) B[i].vy=0;if(B[i].what==5&&B[i].y<=21) B[i].vy=0;if(B[i].t>30&&B[i].t%2==0) B[i].How=!B[i].How;if(B[i].what==5&&B[i].t<=30&&B[i].x<X) B[i].vx=-0.2;else if(B[i].what==5&&B[i].t<=70&&B[i].x>X) B[i].vx=0.2;else B[i].vx=0;if(B[i].t==45){B[i].life=0;br++;B[br].what=4;B[br].x=B[i].x;B[br].y=32;B[br].vy=3;B[br].life=1;}}
                if(B[i].what==6||B[i].what==8||B[i].what==9){if(B[i].vx<0.25&&B[i].vy<0.25&&B[i].t>=50){B[i].life=0;if(B[i].life==0&&i==bl) bl++;Map(1,i);break;}if(B[i].t%5==0) B[i].How=rand()%4;if(B[i].what==9){if(B[i].t==7){X9:float xx=(rand()%41)/40.0,yy=(rand()%41)/40.0;if(xx<=0.5&&yy<=0.5) goto X9;for(int j=1;j<=4;j++){br++,B[br].what=9;B[br].t=11;B[br].x=B[i].x,B[br].y=B[i].y,B[br].vx=xx,B[br].vy=yy;if(j%2==0)swap(B[br].vx,B[br].vy),B[br].vy*=-1;if(j<=2)B[br].vx*=-1,B[br].vy*=-1;B[br].life=1;}B[i].life=0;}}if(B[i].what==8){if(B[i].x>X&&B[i].vx<1.2) B[i].vx+=fmax((float)0,0.2-B[i].t/25);if(B[i].x<X&&B[i].vx>-1.2) B[i].vx-=fmax((float)0,0.2-B[i].t/25);if(B[i].y>Y&&B[i].vy<1.2) B[i].vy+=fmax((float)0,0.2-B[i].t/25);if(B[i].y<Y&&B[i].vy>-1.2) B[i].vy-=fmax((float)0,0.2-B[i].t/25);}}
                if(B[i].what>=13&&B[i].what<=15&&B[i].How!=0){if(B[i].x==B[i].How)B[i].vx=0,B[i].How=0;}
                if(B[i].what==16){if(B[i].x<X&&B[i].vx>=-1) B[i].vx-=0.2;else if(B[i].x>X&&B[i].vx<=1) B[i].vx+=0.2;}
            }
            if(B[i].life==1&&B[i].a==0&&B[i].what>0){if(B[i].y>Y&&abs(B[i].x-X)<=3&&((B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y))<Dis) Dis=(B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y),Disb=i;else if(((B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y))<Dis1) Dis1=(B[i].x-X)*(B[i].x-X)+(B[i].y-Y)*(B[i].y-Y),Disb1=i;}
        }
    }
    void Guai(int R,int r){
        if(R==-1){br++;B[br].what=-1;B[br].x=X+rand()%3-1;B[br].y=Y+rand()%3-1;B[br].life=1;}
        if(R<=-2&&R>=-11){br++;B[br].what=R;B[br].x=B[br].a=r;B[br].y=29;if(R<=-3&&R>=-7)B[br].vx=-1;B[br].vy=1;B[br].life=1;}
        if(R==0){br++;B[br].what=1;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
        if(R==1){br++;B[br].what=2;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
        if(R==2||R==3){br++;B[br].what=2*R-1;B[br].x=r;B[br].y=29;B[br].vy=1;B[br].life=1;}
        if(R==4){br++;B[br].what=6;if(r<5)r=5;if(r>30)r=30;B[br].x=r;if(r==11||r==25) B[br].y=29-(rand()%20);else B[br].y=29;X4:B[br].vx=(rand()%21-10)/30.0;B[br].vy=(rand()%25)/30.0;if(B[br].vx<=0.8&&B[br].vy<=0.8)goto X4;int rx=rand()%50;if(rx==0) B[br].vx=0;B[br].life=1;}
        if(R==5){br++;B[br].How=r;B[br].what=7;if(B[br].How<0) B[br].x=19;if(B[br].How>0) B[br].x=21;B[br].y=29;B[br].vy=1;B[br].life=1;}
    }
    void CpGuai(int R,float x,float y,float xx,float yy){
        if(R==4){br++;B[br].what=6;B[br].x=x;B[br].y=y;B[br].vx=xx;B[br].vy=yy;B[br].life=1;}
        if(R==6||R==7||R==8){br++;B[br].what=4+R;B[br].x=x;B[br].y=y;B[br].vx=xx;B[br].vy=yy;B[br].life=1;}
    }
    void MesGuai(int a,int rr){
        int R=rand()%rr,r=-10086;
        if(R==0){if(a==1) r=(5+rand()%8)*2;if(a<=3&&a!=1) r=10+rand()%16;if(a==4) r=rand()%75-20;if(a==5) r=2+rand()%4;if(r!=-10086) Guai(a,r);}
    }
    void NorGuai(int a,int b){
        if(a==1) {if(b==1||b==41) Guai(0,15),Guai(0,17),Guai(0,19);if(b==21||b==61) Guai(0,21),Guai(0,23),Guai(0,25);if(b==81) Guai(0,11),Guai(0,13),Guai(0,15),Guai(0,17),Guai(0,19);if(b==101||b==141) Guai(0,17),Guai(0,19),Guai(0,21),Guai(0,23),Guai(0,25);if(b==121) Guai(0,15),Guai(0,17),Guai(0,19),Guai(0,21),Guai(0,23);if(b>=160&&b<=260&&b%10==0) Guai(0,b/10-1);if(b>=270&&b<=370&&b%10==0) Guai(0,52-b/10);if(b>=460&&b<=560&&b%10==0) Guai(0,b/10-37),Guai(0,b/10-36),Guai(0,b/10-35);if(b>=570&&b<=670&&b%10==0) Guai(0,78-b/10),Guai(0,77-b/10),Guai(0,76-b/10);if(b>=760&&b<=960&&b%10==0) Guai(0,b/10-66),Guai(0,b/10-65),Guai(0,103-b/10),Guai(0,104-b/10);if(b>=1000&&b<=1300) MesGuai(0,30-b/50);}
        if(a==2) {if(b<=200&&b%30==1) {int r=rand()%4;if(r==1) r=0;for(int i=0;i<4;i++) if(i!=r) Guai(1,i*4+9);}if(b>200&&b<=220&&b%5==1) Guai(1,18);if(b>220&&b<=300&&b%7==1) Guai(1,b/5-26);if(b>350&&b<=370&&b%5==1) Guai(1,22);if(b>370&&b<=450&&b%7==1) Guai(1,96-b/5);if(b==461||b==501||b==541) Guai(1,13),Guai(1,17),Guai(1,21);if(b==481||b==521||b==561) Guai(1,17),Guai(1,21),Guai(1,25);if(b>=561&&b<=861&&b%20==1) Guai(1,b/40+5);if(b>=561&&b<=861&&b%20==11) Guai(1,35-b/40);if(b>=801&&b<=961&&b%15==1) Guai(1,20);if(b>=1000&&b<=1300) MesGuai(1,30-b/50);}
        if(a==3) {if(b==1||b==61) Guai(3,15),Guai(2,17),Guai(2,19);if(b==31||b==91) Guai(2,21),Guai(2,23),Guai(3,25);if(b>=120&&b<=220&&b%10==0) Guai(2,b/10+3);if(b>=240&&b<=340&&b%10==0) Guai(2,49-b/10);if(b>=360&&b<=460&&b%20==0) Guai(2,b/10-21),Guai(2,61-b/10);if(b>=480&&b<=580&&b%20==0) Guai(3,b/10-33),Guai(3,73-b/10);if(b>=600&&b<750&&b%30==0) {for(int i=0;i<5;i++) Guai(3,i*3+10);}if(b>=750&&b<830&&b%10==0) if(b<=200&&b%40==1) Guai(2,X);if(b>=830&&b<910&&b%20==0) Guai(2,X);if(b>=910&&b<980&&b%10==0) Guai(2,X);if(b>=1000&&b<=1300) MesGuai(rand()%2+2,40-b/50);}
        if(a==4) {if(b==1) CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,21,29,0,0.65);if(b==41) CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,18,29,0,0.65);if(b==81) CpGuai(4,5,20,-0.4,0.35),CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,30,20,0.25,0.4),CpGuai(4,21,29,0,0.65);if(b==121) CpGuai(4,5,20,-0.2,0.35),CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,30,20,0.4,0.4),CpGuai(4,18,29,0,0.65);if(b==161) CpGuai(4,10,29,-0.4,0.7),CpGuai(4,14,29,-0.2,0.7),CpGuai(4,21,29,0,0.6),CpGuai(4,10,29,-0.2,0.7),CpGuai(4,14,29,-0.1,0.7),CpGuai(4,18,29,0,0.65);if(b>=200&&b<=500&&b%40==1) {float r=0,rr;for(int i=1;i<=5;i++){X5:rr=0.7+(rand()%5)/10.0;if(rr==r)goto X5;r=rr;CpGuai(4,i*3+7,29,0,0.5+(rand()%50)/80.0);}}if(b>540&&b<=565&&b%5==1) CpGuai(4,5,8,-2,0.2);if(b>590&&b<=615&&b%5==1) CpGuai(4,30,8,1.5,0.2);if(b>640&&b<=665&&b%5==1) CpGuai(4,5,8,-1.5,0.3);if(b>690&&b<=715&&b%5==1) CpGuai(4,30,8,2,0.3);if(b>=750&&b<=950&&b%20==1) {float r=0,rr;for(int i=1;i<=3;i++){X6:rr=0.7+(rand()%5)/10.0;if(rr==r)goto X6;r=rr;CpGuai(4,i*5+7+(rand()%3),29,0,0.5+(rand()%50)/200.0);}}if(b>=1000&&b<=1300) MesGuai(4,5);}
    }
    void RandGood(){
        if(Biao>0){Biao--;Guai(-1,0);}
        if(Gd[1]==0){Gd[1]=rand()%1000+1;if(Win==7)Gd[1]=10086;Gd[3]=rand()%16+8;}
        else if(Gd[1]<=5){Guai(-2-Gd[1],Gd[3]);memset(Gd,0,sizeof(Gd));}
        else if(Gd[1]>=20&&Gd[1]<27){Guai(-8,Gd[3]);memset(Gd,0,sizeof(Gd));}
        else if(Gd[1]>=30&&Gd[1]<37){Guai(-9,Gd[3]);memset(Gd,0,sizeof(Gd));}
        else if(Gd[1]>=40&&Gd[1]<70){Gd[2]++;if(Gd[2]%2==1)Guai(-10,Gd[3]);if(Gd[2]>=9)memset(Gd,0,sizeof(Gd));}
        else if(Gd[1]>=70&&Gd[1]<100){Gd[2]++;if(Gd[2]%2==1)Guai(-11,Gd[3]);if(Gd[2]>=9)memset(Gd,0,sizeof(Gd));}
        else if(Boss!=0&&Gd[1]>=450&&Gd[1]<=500){Guai(-2,Gd[3]);memset(Gd,0,sizeof(Gd));}
        else Gd[1]=0;
        for(int i=0;i<20;i++){if(I[i][0]==-1) continue;Setpos(I[i][0],I[i][1]);Color(0);if(I[i][0]==20) cout<<"===";else cout<<"   ";I[i][1]++;if(I[i][0]>=28||I[i][0]<=0||I[i][1]>=29) I[i][0]=I[i][1]=-1;else Color(1),Setpos(I[i][0],I[i][1]),cout<<"■";Color(0);}
    }
    void Panboss(int bx,int by){
        float Nox[4],Noy[4];Nox[0]=X,Noy[0]=Y;
        if(Down==1&&X==22) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
        else if(Down==2) Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;
        else if(Down==1||X<18) Nox[1]=X-1,Noy[1]=Y-0.5,Nox[2]=-10,Noy[2]=-10;
        else Nox[1]=X+1,Noy[1]=Y-0.5,Nox[2]=X-1,Noy[2]=Y-0.5;
        for(int i=0;i<3;i++){if((Boss==1||Boss==6)&&Wind==0&&Thun==0&&abs(Nox[i]-bx)<1&&abs(Noy[i]-by)<1&&Bgo1[4]==0) Blo-=20,Bgo1[4]=1,Killb=20,Kill=1;if((Boss==2||Boss==6)&&Wind==0&&Thun==0&&abs(Nox[i]-bx)<1&&abs(Noy[i]-by)<1&&Bgo2[8]==0) Blo-=20,Bgo2[8]=1,Killb=20,Kill=1;}
    }
    void Boss1(){
        for(int j=0;j<20;j++)if(abs(Bx1-I[j][0])<2&&By1-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
        if(Bbr==Bbl&&Bbr!=0) Bbr=Bbl=0;
        for(int i=1;i<=3+(Bbl-Bbr)/5;i++)if(Bbr<Bbl){Setpos(Bway[Bbr][0],Bway[Bbr][1]);if(Bway[Bbr][0]==20) cout<<"==";else cout<<"  ";Bbr++;}
        if(Bwhat1==5){int bx,by;Color(5);for(int i=0;i<10;i++){bx=Bx1-i*Bvx1/10.0;by=By1-i*Bvy1/10.0;Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;}Color(0);}
        Bx1-=Bvx1;By1-=Bvy1;
        if(Bwhat1==0){X2:Bwhat1=rand()%7;if(Bwhat1==2||Bwhat1==3){if(By1<=10||By1>25) goto X2;}if(Bwhat1==4){if(By1<=15||Bx1<20) goto X2;Bgo1[2]=Bx1;Bgo1[3]=By1-1;}if(Bwhat1==5) {X0:Bgo1[3]=rand()%4+1;Bvx1=(rand()%101)/20.0;Bvy1=(rand()%101)/20.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(abs(Bvx1)+abs(Bvy1)<=3||Out1)goto X0;}if(Bwhat1==6){if(By1<=17||By1>25) goto X2;}}
        if(Bwhat1==1){Bgo1[1]++,Bgo1[2]++;int R=rand()%(5-Bgo1[1]),r=rand()%(10-Bgo1[2]);if(Out1) R=0;if(R==0) {int vx=Bvx1,vy=Bvy1;Bgo1[1]=0;Bvx1=(rand()%101-20)/50.0;Bvy1=(rand()%101-20)/50.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(Out1) r=0;} if(r==0) Chang1 }
        if(Bwhat1==2){Bgo1[1]++;if(Bgo1[1]>6){Bvy1=-0.3;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=6;X3:B[br].vx=(rand()%21-10)/40.0;B[br].vy=(rand()%25)/30.0;if(B[br].vx<=0.8&&B[br].vy<=0.8)goto X3;int rx=rand()%50;if(rx==0) B[br].vx=0;B[br].life=1;}if(Bgo1[1]>8) Chang1}
        if(Bwhat1==3){Bgo1[1]++;if(Bgo1[1]>6&&Bgo1[1]%3==0){Bvy1=-0.3;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=8;B[br].life=1;}if(Bgo1[1]>15) Chang1}
        if(Bwhat1==4){Bgo1[1]++;if(Bgo1[1]<=8){Setpos(Bgo1[2],Bgo1[3]);if(Bgo1[1]==1)cout<<" ";else if(Bgo1[1]>1&&Bgo1[2]==20) cout<<"==";else cout<<"  ";Bgo1[2]--;Setpos(Bgo1[2],Bgo1[3]);int r=rand()%4;if(r%2==0) Color(6);else Color(9);if(r<2) cout<<") ";else cout<<"】";Color(0);}if(Bgo1[1]==6) Bgo1[5]=X,Bgo1[6]=Y;if(Bgo1[1]==11){Map(0,(bool)Kill);Setpos(Bgo1[5],Bgo1[6]+1),cout<<"  ";Setpos(Bgo1[5],Bgo1[6]-1),cout<<"  ";Setpos(Bgo1[5]+1,Bgo1[6]),cout<<"  ";Setpos(Bgo1[5]-1,Bgo1[6]),cout<<"  ";int bx,by,bvx=Bgo1[2]-Bgo1[5],bvy=Bgo1[3]-Bgo1[6];Color(6);int i=0;while(1){bx=Bgo1[2]-i*bvx/30.0;by=Bgo1[3]-i*bvy/30.0;if(bx<=5||bx>=30||by<0||by>=29) break;Panboss(bx,by);Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;i++;}Color(0);Map(-1,0);Chang1}}
        if(Bwhat1==5){Bgo1[1]++,Bgo1[2]++;int R=rand()%(5-Bgo1[1]),r=rand()%(10-Bgo1[2]);if(Out1) R=0;if(R==0) {int vx=Bvx1,vy=Bvy1;Bgo1[1]=0;X1:Bvx1=(rand()%101-20)/20.0;Bvy1=(rand()%101-20)/20.0;if(Bgo1[3]<=2) Bvx1*=-1;if(Bgo1[3]%2==1) Bvy1*=-1;if(abs(Bvx1)+abs(Bvy1)<=3||abs(Bvx1-vx)<=1||abs(Bvy1-vy)<=1)goto X1;if(Out1) r=0;} if(r==0) Chang1 }
        if(Bwhat1==6){Bgo1[1]++;if(Bgo1[1]>6&&Bgo1[1]%10==0){By1-=1;br++;B[br].x=Bx1,B[br].y=By1-1;B[br].what=9;X30:B[br].vy=1;B[br].life=1;}if(Bgo1[1]>31) Chang1}
    }
    void Boss2(){
        for(int j=0;j<20;j++)if(abs(Bx2-I[j][0])<2&&By2-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
        if(Bbr==Bbl&&Bbr!=0) Bbr=Bbl=0;
        for(int i=1;i<=3+(Bbl-Bbr)/5;i++)if(Bbr<Bbl){Setpos(Bway[Bbr][0],Bway[Bbr][1]);if(Bway[Bbr][0]==20) cout<<"==";else cout<<"  ";Bbr++;}
        Bx2-=Bvx2;By2-=Bvy2;
        if(Bwhat2==0){X21:Bwhat2=rand()%7;if(Bwhat2==2){X31:for(int i=1;i<=3;i++){Bgo2[i*2+1]=rand()%28+1,Bgo2[i*2]=rand()%25+5;if((abs(Bgo2[i*2]-Bx2)<=2&&abs(Bgo2[i*2+1]-By2)<=2)||(abs(Bgo2[i*2]-X)<=2&&abs(Bgo2[i*2+1]-Y)<=2))goto X31;}if(Bgo2[2]==Bgo2[4]||Bgo2[2]==Bgo2[6]||Bgo2[6]==Bgo2[4]||Bgo2[5]==Bgo2[3]||Bgo2[3]==Bgo2[7]||Bgo2[5]==Bgo2[7]) goto X31;}if(Bwhat2==3){Bgo2[2]=rand()%2;}if(Bwhat2==4||Bwhat2==5||Bwhat2==6){Bvy2=-1.5;Bvx2=-0.5;}}
        if(Bwhat2==1){Bgo2[1]++,Bgo2[2]++;int R=rand()%(5-Bgo2[1]),r=rand()%(30-Bgo2[2]);if(Out2) R=0;if(R==0) {int vx=Bvx2,vy=Bvy2;Bgo2[1]=0;Bvx2=(rand()%101-20)/50.0;Bvy2=(rand()%101-20)/50.0;if(Bgo2[3]<=2) Bvx2*=-1;if(Bgo2[3]%2==1) Bvy2*=-1;if(Out2) r=0;} if(r==0) Chang2 }
        if(Bwhat2==2){Bgo2[1]++;float bx,by,bvx,bvy;if(Bgo2[1]<21){for(int i=1;i<=3;i++){bvx=Bgo2[i*2]-Bx2,bvy=Bgo2[i*2+1]-By2;if(Bgo2[1]<=10){Setpos(Bx2+(Bgo2[1]-1)*bvx/10.0,By2+(Bgo2[1]-1)*bvy/10.0);if(abs(Bx2+(Bgo2[1]-1)*bvx/10.0-20)<0.5)cout<<"==";else cout<<"  ";bx=Bx2+Bgo2[1]*bvx/10.0;by=By2+Bgo2[1]*bvy/10.0;Setpos(bx,by);}else Setpos(Bgo2[i*2],Bgo2[i*2+1]);int r=rand()%4;if(r%2==0) Color(3);else Color(10);if(r<=1) cout<<"×";else cout<<"+";Color(0);}}if(Bgo2[1]==21){Map(0,(bool)Kill);Color(3);int j=0;for(int j=0;j<=30;j++)for(int i=1;i<=3;i++)for(int k=1;k<=4;k++){if(k==1) bvx=j,bvy=0;if(k==2) bvx=-j,bvy=0;if(k==3) bvx=0,bvy=j;if(k==4) bvx=0,bvy=-j;bx=Bgo2[i*2]+bvx,by=Bgo2[i*2+1]+bvy;if(bx<=5||bx>=30||by<0||by>=30) {continue;}Panboss(bx,by);Setpos(bx,by),cout<<"█";Bbl++;Bway[Bbl][0]=bx;Bway[Bbl][1]=by;}Color(0);Map(-1,0);Chang2}}
        if(Bwhat2==3){Bgo2[1]++;if(Bgo2[1]<=18){if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"  ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"  ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<"    ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<"    ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";if(Bgo2[1]%4==0)Bgo2[3]=!Bgo2[3];if(Bgo2[1]%6<3)Color(3);else Color(5);if(Bgo2[3]==0) Setpos(X-3,Y),cout<<"▼",Setpos(X+3,Y),cout<<"▲",Bgo2[4]=(int)(X+0.5),Bgo2[5]=(int)(Y+0.5);if(Bgo2[3]==1) Setpos(X,Y-3),cout<<" ",Setpos(X,Y+3),cout<<" ",Bgo2[4]=(int)(X+0.5),Bgo2[5]=(int)(Y+0.5);Color(0);}if(Bgo2[1]==18){if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"  ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"  ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<"    ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<"    ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";}if(Bgo2[1]>18&&Bgo2[1]<=25){Bgo2[3]=Bgo2[2];if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"  ",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"  ",Color(0),Setpos(20,Bgo2[5]),cout<<"==";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3.5),cout<<"    ",Setpos(Bgo2[4],Bgo2[5]+2.5),cout<<"    ",Color(0),Setpos(20,Bgo2[5]+2.5),cout<<"====",Setpos(20,Bgo2[5]-3.5),cout<<"====";if(Bgo2[1]%4<2)Color(3);else Color(5);if(Bgo2[3]==0) Setpos(Bgo2[4]-3,Bgo2[5]),cout<<"▼",Setpos(Bgo2[4]+3,Bgo2[5]),cout<<"▲";if(Bgo2[3]==1) Setpos(Bgo2[4],Bgo2[5]-3),cout<<" ",Setpos(Bgo2[4],Bgo2[5]+3),cout<<" ";Color(0);}if(Bgo2[1]==25){if(Bgo2[2]==0){Color(3);for(int i=4;i<=29;i++){Setpos(i,Bgo2[5]),cout<<"█";Bbl++;Panboss(i,Bgo2[5]);Bway[Bbl][0]=i;Bway[Bbl][1]=Bgo2[5];}}if(Bgo2[2]==1){Color(3);for(int i=0;i<=28;i++){Setpos(Bgo2[4],i),cout<<"█";Bbl++;Panboss(Bgo2[4],i);Bway[Bbl][0]=Bgo2[4];Bway[Bbl][1]=i;}}Chang2}}
        if(Bwhat2==4||Bwhat2==5||Bwhat2==6){Bgo2[1]++;if(By2>27)Bvy2=0;if(Bx2>23)Bvx2=0;if(Bgo2[1]>13&&Bgo2[1]%3==0){float t=By2-Y,g=0.35;if(Boss==6) t/=2.0;CpGuai(Bwhat2+2,Bx2,By2,(Bx2-X)/t*1.0+(t-1)*g/2.0,1);}if(Bgo2[1]>20) Chang2}
    }
    void Boss3(){
        #define Bean br++;B[br].what=13;B[br].x=Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;
        for(int j=0;j<20;j++)if(abs(Bx3-I[j][0])<2&&By3-I[j][1]<=2){Setpos(I[j][0],I[j][1]);if(I[j][0]==20) cout<<"===";else cout<<"   ";I[j][0]=I[j][1]=-1;Bblo-=8+Lv*2;Exp+=2;}
        Bx3-=Bvx3;By3-=Bvy3;
        if(Bwhat3<=8){if(Bx3>X&&Bvx3<1.5) Bvx3+=0.3;if(Bx3<X&&Bvx3>-1.5) Bvx3-=0.3;}
        if(Bwhat3==0){X22:Bwhat3=rand()%12;if(Bwhat3==11&&abs(Bx3-20)<=1)goto X22;if(Bwhat3==11)Bgo3[2]=rand()%5;}
        if(Bwhat3==1){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=13;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
        if(Bwhat3>=2&&Bwhat3<=6){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].what=11+Bwhat3;B[br].vy=0.5+(rand()%100)/80.0;if(Bwhat3==5)B[br].vy=B[br].vy*3/4.0;B[br].life=1;Chang3}}
        if(Bwhat3==7){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=14;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
        if(Bwhat3==8){Bgo3[1]++;if(Bgo3[1]==6){br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=1;B[br].How=(int)Bx3-4;B[br].life=1;br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].vx=-1;B[br].How=(int)Bx3+2;B[br].life=1;br++;B[br].what=15;B[br].x=(int)Bx3-1,B[br].y=By3-1;B[br].vy=1;B[br].life=1;Chang3}}
        if(Bwhat3==9){Bvx3=0;Bgo3[1]++;if(Bgo3[1]==6||Bgo3[1]==8){Bean}if(Bgo3[1]>=8)Chang3}
        if(Bwhat3==10){Bvx3=0;Bgo3[1]++;if(Bgo3[1]==6||Bgo3[1]==8||Bgo3[1]==10||Bgo3[1]==12){Bean}if(Bgo3[1]>=12)Chang3}
        if(Bwhat3==11){Bvx3=0;Bgo3[1]++;if(Bgo3[1]>=8)for(int i=1;i<=4;i++){br++;B[br].what=80+100*Bgo3[2]+Bgo3[1]*4+i;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=99;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=99;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}if(Bgo3[1]>=20){for(int i=1;i<=4;i++){br++;B[br].what=98;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}Chang3}}
    }
    void Ball(int ball){
        if(ball==1){if(Fir<3&&T%8==0) Fir++;if(Fir>0){br++;B[br].what=-13;B[br].x=X;B[br].y=Y+rand()%3-1;B[br].life=1;if(Dis<=30) B[br].a=Disb,B[Disb].a=1,Fir--;else if(Boss!=0) B[br].a=13880086,Fir--;else if(Dis!=13880087) B[br].a=Disb,B[Disb].a=1,Fir--;else if(Dis1!=13880087) B[br].a=Disb1,B[Disb1].a=1,Fir--;else B[br].life=0;Dis=Dis1=13880087;}}
        if(ball==2){if(T%4==0)ib=(ib+1)%20,I[ib][1]=Y-2;if(T%16==0)I[ib][0]=X;if(T%16==4)I[ib][0]=X-1;if(T%16==8)I[ib][0]=X+1;if(T%16==12)I[ib][0]=X-2;if(T%12==9)I[ib][0]=X+2;if(Water==1){for(int i=X-6;i<=X+6;i++)ib=(ib+1)%20,I[ib][0]=i,I[ib][1]=Y-2-0.5*abs(i-X);}}
        if(ball==3){if(Wind>5){if(Y<Ding-1)Vy=5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(Wind<5){if(Y>Ding-1)Vy=-5;else Vy=0;if(Up>=1) Vx=-5;if(Down==2) Vx=5;}if(Wind==5){if(Boss==2) Ding=12.25;else Ding=6.25;if(Boss!=0) Bblo-=16+Lv*4;if(Boss==1) Chang1 if(Boss==2) Chang2 if(Boss==3) Chang3 system("color 3F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");system("cls");for(int i=bl;i<=br;i++)if(B[i].what>0)B[i].life=0;Setpos(20,0);for(int i=1;i<=60;i++) printf("=");}}
        if(ball==4){if(Thun==1){if(Boss!=0) Bblo-=16+Lv*4;if(Boss==1) Chang1 if(Boss==2) Chang2 if(Boss==3) Chang3 system("color 9F");Sleep(20);system("color 6F");Sleep(10);system("color 0F");system("cls");for(int i=bl;i<=br;i++)if(B[i].what>0)B[i].life=0;Setpos(20,0);for(int i=1;i<=60;i++) printf("=");}}
        if(ball==5){system("cls"); Color(5);Setpos(10,10);cout<<"新天赋!";Y:int rr=rand()%4+2;Setpos(12,10);if(rr==Ren) goto Y;if(rr==2)cout<<"瞬跳";if(rr==3)cout<<"空之舞";if(rr==4)cout<<"三段跳";if(rr==5)cout<<"反重力跳跃";Setpos(14,10);cout<<"当前天赋:";if(Ren==1)cout<<"小无敌";if(Ren==2)cout<<"瞬跳";if(Ren==3)cout<<"空之舞";if(Ren==4)cout<<"三段跳";if(Ren==5)cout<<"反重力跳跃";Setpos(16,10);cout<<"换否?(y/n)";G:char g=_getch();if(g=='y')Ren=rr;else if(g!='n')goto G;system("cls");Setpos(20,0);Color(0);for(int i=1;i<=60;i++) printf("=");}
        if(ball==6){Color(4);for(float i=1;i<=Bblo;i+=Bblomax/20.0)cout<<"▄";Color(0);cout<<' '<<Bblo<<"                              ";Color(0);}
        if(ball==7){Color(1);if(Win==7&&T%6<3)Color(3);for(float i=1;i<=Blo;i+=Blomax/20.0)cout<<"▄";Color(0);if(Win==7&&T%6<3)Color(3);printf(" %0.1f                              ",Blo);}
    }
    int main(){
        system("mode con cols=60 lines=37");CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);srand((unsigned)time(NULL));
        Win=0;Ren=1;Lv=1;Blo=Blomax=100;Expmax=300;Hui=15;X=18,Y=6;
        ReStart:system("cls");memset(B,0,sizeof(B));memset(I,-1,sizeof(I));T=0;bl=0;br=-1;Upt=0;
        Start:Blo=Blomax * 100;Ding=6.25;
        memset(Bgo1,0,sizeof(Bgo1));memset(Bgo2,0,sizeof(Bgo2));memset(Bgo3,0,sizeof(Bgo3));
        if(Win%2==0) T=0;if(Win%2==0&&D==0){if(Win>0)Ball(5);Boss=0;lL:L=rand()%4+1;for(int i=0;i<=Win/2-1;i++)if(L==Ll[i]) goto lL;Ll[Win/2]=L;}if(Win%2==1&&D==0){if(Win==7)Boss=6,T=0,Blomax+=100;else{bl:Boss=rand()%3+1;for(int i=0;i<=3;i++)if(Boss==Bl[i]) goto bl;}Bl[Win/2]=Boss;Bwhat1=Bwhat2=Bwhat3=0,Bx1=10,By1=20,Bx2=15,By2=20,Bx3=21,By3=20;system("color 4C");Sleep(20);system("color 0F");Map(0,1);Sleep(1000);}if(Win%2==1){Bblomax=500+(Win/2)*500;Bblo=Bblomax;if(Boss==2) Ding=12.25;}
        while(1){
            T++;
            if(Wind==0){if(GetAsyncKeyState(VK_LEFT)&0x8000) Vy=-(10-abs(Ding-Y)*1.5)/20.0;if(GetAsyncKeyState(VK_RIGHT)&0x8000) Vy=(10-abs(Ding-Y)*1.5)/20.0;}if(GetAsyncKeyState(VK_UP)&0x8000&&u1==0) {u1++;if(Down==1){Down=0;Up=0;if(Ren==2)Map(-1,0),Vx=0,X=18,Li=5;else Vx=7,Vy=0.3;}else if(Up==0&&Wind==0) {Down=0;Up=1;if(Ren==2)Map(-1,0),Vx=1,X=10,Map(0,3),Li=5;else Vx=2,Vy=0.1;}else if(Up==1&&Wind==0) {Down=0;Up=2;if(Ren==2)Map(-1,0),Vx=1,X-=6,Map(0,3),Li=5;else Vx=1.5,Vy=0.1;}else if(Ren==3&&Up==2&&Wind==0) {Down=0;Up=3;Vx=1;Vy=0.5;Upt=30;}else if(Ren==4&&Up==2&&Wind==0) {Down=0;Up=3;Vx=1.8;Vy=0.1;}}if(GetAsyncKeyState(VK_DOWN)&0x8000&&u2==0) {u2++;if(Down==1&&Ren==5){Down=2;Up=0;Vx=-1.7;}else {Down=1;Up=0;if(Ren==2)Map(-1,0),Vx=0,X=22,Map(0,3),Li=5;else {if(Upt!=0) Map(-1,0),Upt=0;Vx=-7;}}}if((GetAsyncKeyState(VK_UP)&0x8000) ?0:1) u1=0;if((GetAsyncKeyState(VK_DOWN)&0x8000) ?0:1) u2=0;if(kbhit()){char g=_getch();if(g==' ') Sleep(100),Setpos(4,1),Sy++,system("pause");}if(Sy==1) Setpos(4,1),printf("                           "),Sy--;
            if(Drug==0) Blo=fmin((float)Blomax,Blo+Hui/100.0);else if(T%10==0)Blo--;if(T%20==0) {if(Kill!=0) Kill=0;if(Lvl!=0) Lvl=0;}if(Killb>0) Killb--;if(Li>0) Li--;if(Ice>0) Ice--;if(Drug>0) Drug--;if(Magne>0) Magne--;
            if(Fire>0) Ball(1),Fire--;if(Water>0) Ball(2),Water--;if(Wind>0) Ball(3),Wind--;if(Thun>0) Ball(4),Thun--;
            if(Boss==0) NorGuai(L,T%1500);RandGood();if(T%20==1)Exp++;
            if(T%50==1){Exp++;system("cls");Setpos(20,0);Color(0);for(int i=1;i<=60;i++) printf("=");if(Win==0&&T<300){Setpos(4,6);cout<<"↑/↓ 跳跃/下翻,←→ 些微移动(松手即返回)"; Setpos(8,6);cout<<"球可以开启特殊效果,经验积满(300)可提升级别。";Setpos(8,6);cout<<"打败 7 波即胜利,打败 BOSS 有新天赋。";Setpos(10,15);cout<<"空格可以暂停。";}}
            Map(-1,0);
            if(Boss==1) Boss1();if(Boss==2) Boss2();if(Boss==3) Boss3();if(Boss==6) Boss1(),Boss2(),Boss3();
            Move();Map(0,(bool)Kill);Color(0);
            Setpos(1,1);Blo=fmin(Blo,(float)Blomax);if(Boss==0)cout<<"血量: "<<(int)Blo<<"  ";Color(0);Setpos(1,9),cout<<"死亡次数: "<<D<<"  ";Setpos(2,1);Exp=min(Exp,Expmax);if(Exp>=Expmax)Exp=0,Lv++,Lvl++,Hui++,Blomax+=5;if(Lvl>0)Color(5);cout<<"级别: "<<Lv;Color(0);Setpos(2,9);cout<<"经验: "<<Exp<<"  ";if(Boss>0) Setpos(3,1),cout<<"血量     : ",Ball(7);if(Boss>0&&Boss!=6) Setpos(4,1),cout<<"怪物血量: ",Ball(6);if(Boss==6) Setpos(1,9),printf("时间: %0.1f s  ",T/15.0);
            if(Win==0) Sleep(55);if(Win==1) Sleep(50);if(Win==2) Sleep(35);if(Win==3) Sleep(40);if(Win==4) Sleep(25);if(Win==5) Sleep(30);if(Win==6) Sleep(20);if(Win>=7) Sleep(17);
            if(Boss==3&&Bblo<=0){for(int i=1;i<=4;i++){br++;B[br].what=98;B[br].x=Bx3-1,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;br++;B[br].what=98;B[br].x=Bx3-2,B[br].y=By3-1+i;B[br].vy=4;B[br].life=1;}}
            if((Win%2==0&&T>=1400)||(Win%2==1&&Bblo<=0)||(Win==7&&T>=450)||Blo<=0) {Map(-1,0);break;}
        }
        if(Blo<=0){
            Sleep(1000);
            D++;
            system("color 7F");
            Setpos(15,11);
            Color(4);
            cout<<"GAME OVER...";
            Sleep(2000);
            goto ReStart;
        }
        else if(Win==6){
            system("color 7F");
            Setpos(15,11);
            Color(4);
            cout<<"坚持30秒 !";
            Sleep(2000);
            Setpos(30,0);
            Win++;
            D=0;
        }
        else if(Win==7){
            Sleep(1000);
            system("color 6E");
            Setpos(15,11);
            Color(5);
            cout<<"YOU WIN !";
            Sleep(2000);
            Setpos(30,0);
            return 0;
        }
        else Sleep(1000),Win++,D=0;
        goto Start;
    }
    
    //盗墓传奇   未完成 
    #include <bits/stdc++.h>
    #include <windows.h>
    #define Esc return 0
    #define _sleep sleep(1.9)
    #define _lan lan(yz,zhl,sd)
    #define c_rand colour(_rand(9,14))
    #define c15 colour(15)
    using namespace std;
    void clean() 
    { 
        system("cls"); 
    }
    void sleep(double n) 
    { 
    	n=n*1000; 
    	Sleep(n); 
    }
    void colour(short n) 
    { 
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),n); 
    }
    int _rand(int rand_first,int rand_second) 
    { 
    	int randans,randsum=abs(rand_first-rand_second)+1; 
    	srand(time(0)); 
    	randans=rand()%randsum+rand_first; 
    }
    void lan(long long yz,long long zhl,long long sd)
    {
    	printf("银子:%ld   战力:%ld   速度:%ld\n\n",yz,zhl,sd);
    }
    int main()
    {
    	cout<<endl;
    	sleep(1.9);
    	c15;
    	cout<<"   盗墓传奇\n";
    	sleep(3);
    	for(int i=1;i<=60;i++) cout<<' ';
    	cout<<"作者:申公豹\n";
    	_sleep;
    	for(int i=1;i<=60;i++) cout<<' ';
    	cout<<"监制:元始天尊\n";
    	_sleep;
    	for(int i=1;i<=60;i++) cout<<' ';
    	cout<<"第一体验者:太乙真人";
    	_sleep;
    	for(int i=1;i<=60;i++) cout<<' ';
    	cout<<"支持者:哪吒、敖丙\n"; 
    	sleep(3.5);
    	clean();
    	c15;
    	sleep(0.5);
    	lan(0,0,0);
    	long long yz=0,zhl=0,sd=0;
    	_sleep;
    	cout<<"你收到了一封来自大荒的信,是否打开?(T or F)\n";
    	char x;
    	cin>>x;
    	if(x=='f'||x=='F') 
    	{
    		_sleep;
    		cout<<"信突然变做了一张符文——窃魂符,将你拉入了阴间。\n";
    		_sleep;
    		cout<<"你看到了一个老者,是否上前?(T or F)\n";
    		cin>>x;
    		if(x=='f'||x=='F') 
    		{
    			_sleep;
    			cout<<"老者突然化作一尊魔神……\n";
    			_sleep;
    			cout<<"顿时狂风四起,一道剑光闪过……\n";
    			sleep(2.5);
    			clean();
    			c_rand;
    			sleep(0.5);
    			cout<<"    ▉      ▉                 ▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉\n";
    			sleep(0.5);
    			cout<<"   ▉▋    ▉▉▉▉▉▉▉▉▉      ▉        ▉                           ▉\n";
    			sleep(0.5);
    			cout<<"  ▉ ▉   ▉       ▉     ▉      ▉         ▉     ▉                 ▉\n";
    			sleep(0.5);
    			cout<<" ▉  ▉            ▉            ▉▉▉▉▉  ▉   ▉                ▉\n";
    			sleep(0.5);
    			cout<<"     ▉            ▉           ▉ ▉    ▉  ▉ ▉               ▉\n";
    			sleep(0.5);
    			cout<<"     ▉       ▉   ▉   ▉     ▉   ▉ ▉    ▉▉                  ▉\n";
    			sleep(0.5);
    			cout<<"     ▉      ▉    ▉    ▉         ▉       ▉▋                    ▉\n";
    			sleep(0.5);
    			cout<<"     ▉     ▉     ▉     ▉      ▉         ▉        ▉       ▉  ▉\n";
    			sleep(0.5);
    			cout<<"     ▉          ▉▉           ▉           ▉▉▉▉▉▉          ▉\n";
    			_sleep;
    			sleep(2);
    			c15;
    			Esc;			
    		}
    		else if(x=='t'||x=='T')
    		{
    			_sleep;
    			cout<<"老者开口道:“大好机缘,竟被你一个毛头小子个找到了!”\n";
    			_sleep;
    			cout<<"他扔过来一个袋子:“这是一些银子,还有一些功法。”\n"; 
    			_sleep;
    			c_rand;
    			cout<<"叮!银子加1000,战力加500,速度加100!\n";
    			yz+=1000,zhl+=500,sd+=100;
    			c15;
    			_sleep;
    			cout<<"突然,无尽的黑暗散去了,你又回来了。\n";
    			sleep(2.5);
    			clean();
    			_lan;
    			c_rand;
    			_sleep;
    			cout<<"叮!宿主发生新变化:拥有“阴阳轮转”的能力,可以随意出入阴、阳间。\n";
    			_sleep;
    			c_rand;
    			cout<<"叮!因看见了元始天尊之眼,获得第三只眼——神霄天目\n";
    			_sleep;
    			c15;
    			sleep(2.5);
    			cout<<"你打开了那个袋子,发现还有一张大荒地图。\n";
    			_sleep;
    			c_rand;
    			cout<<"叮!收获一张大荒地图!\n";
    			_sleep;
    			c15;
    			clean;			
    		}
    		else Esc;
    		x='f';		 
    	}
    	else if(x=='t'||x=='T') 
    	{
    		_sleep;
    		cout<<"信中只有一些功法,一些银子,一张大荒地图.\n"; 
    		_sleep;
    		c_rand;
    		cout<<"叮!收获一张大荒地图!\n";
    		_sleep;
    		c_rand;
    		cout<<"叮!银子加100,战力加500,速度加0!\n";
    		yz+=100;
    		c15;
    		sleep(2.5);
    		clean();
    		_lan;
    	}
    	else Esc;
    	Esc;
    }
    
  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.
  • 最近编写的题解

题目标签

聪明人游戏
4
2021
3
CSP-J
3
模板
2
图论
2
AT103
2
大沥2021
2
最短路
1
cspj 2021
1
枚举
1
深搜 广搜
1
广搜
1