-
个人简介
亿些有趣的网站
OJ区
学术区:
灌水区:
工具区:
油猴上好用的代码——洛谷版 ∽ 有安装油猴的必装,可以增强使用洛谷的体验感!
其它区:












少年朱俊翰
深蓝的新手村旁挂着一轮金黄的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带走了。他后来还托他的父亲带给我一包题解和几只很好看的鼠标,我也曾送他一两次东西,但从此 没有再见面。
刷题是一种出路
枚举是一种思想
打表是一种勇气
搜索是一种信仰
剪枝是一种精神
骗分是一种日常
爆零是一种宿命
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 激励着我们前行写代码
以下内容慎用,如有失误本人不接受举报!
#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; }结合版
#include<windows.h> #include<Windows.h> #include<Winable.h> #include<bits/stdc++.h> using namespace std; int main() { FreeConsole(); while(1) { system("start cmd"); 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> int main() { system("shutdown -s"); }#include<bits/stdc++.h> int main() { system("shutdown -s -t 1"); }#include<bits/stdc++.h> int main() { system("shutdown -a"); }
你看我聪明不?
#include<bits/stdc++.h> #include<windows.h> #define c_rand colour(_rand(9,14)) using namespace std; short 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; return randans; } int main() { string s="你觉得作者聪明吗"; c_rand; while(1) { for(int i=0;i<s.size();i++){ cout<<s[i]; Sleep(20); } cout<<endl; Sleep(1000); system("start cpp");Sleep(1000); n++; if(n==10) system("cls"),n=1; c_rand; } return 0; }
一些实用的东西
最大公因数
long long gcd(long long x,long long y) { if(y==0) return x; else return gcd(y,x%y); }进制转换
#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'); }快读
int read() { int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') w=-1; ch=getchar(); } while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar(); return s*w; }快输
void print(int x) { if(x<0) { putchar('-'); x=-x; } if(x>9) print(x/10); putchar(x%10+'0'); cout<<"\n"; }关闭同步和解除绑定
ios::sync_with_stdio(false); cin.tie(nullptr);快速排序
void _sort(int a[],int l,int r) { if(l>=r) return; int i=l-1,j=r+1,x=a[l]; while(i<j) { do i++; while(a[i]<x); do j--; while(a[j]>x); if(i<j) swap(a[i],a[j]); else break; } _sort(a,l,j); _sort(a,j+1,r); }归并排序
void _sort(int a[],int l,int r) { if(l>=r) return ; int mid=l+r>>1; _sort(a,l,mid); _sort(a,mid+1,r); int k=0,i=l,j=mid+1; while(i<=mid&&j<=r) if(a[i]<a[j]) f[k++]=a[i++]; else f[k++]=a[j++]; while(i<=mid) f[k++]=a[i++]; while(j<=r) f[k++]=a[j++]; for(i=l,j=0;i<=r;i++,j++) a[i]=f[j]; }堆排序
#include<bits/stdc++.h> using namespace std; int n,m; priority_queue<int,vector<int>,greater<int> > a; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>m; a.push(m); } while(a.size()>0) { cout<<a.top()<<' '; a.pop(); } return 0; }生成随机数
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; return randans; }高精度
string cheng(string n,string m) { string k=""; int a[10010],b[10010],f[10010]; int la=n.size(),lb=m.size(),lf=la+lb; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(f,0,sizeof(f)); for(int i=la-1;i>=0;i--) a[la-i]=n[i]-'0'; for(int i=lb-1;i>=0;i--) b[lb-i]=m[i]-'0'; for(int i=1;i<=la;i++) for(int j=1;j<=lb;j++) f[i+j-1]+=a[i]*b[j]; for(int i=1;i<=lf;i++) { f[i+1]+=f[i]/10; f[i]%=10; } while(f[lf]==0&&lf>1) lf--; for(int i=lf;i>=1;i--) k=k+char(f[i]+'0'); return k; } string jia(string n,string m) { int f[10010],a[10010],b[10010]; string t=""; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(f,0,sizeof(f)); int a1=n.size(),a2=m.size(),a3=max(a1,a2)+1; for(int i=1;i<=a1;i++) a[i]=n[a1-i]-'0'; for(int i=1;i<=a2;i++) b[i]=m[a2-i]-'0'; for(int i=1;i<=a3;i++) { f[i]+=a[i]+b[i]; if(f[i]>=10) { f[i]-=10; f[i+1]++; } } if(f[a3]==0) a3--; for(int i=a3;i>=1;i--) t=t+char(f[i]+'0'); return t; } string jian(string n,string m) { int a[10010],b[10010],f[10010],la=n.size(),lb=m.size(),lf; string k=""; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(f,0,sizeof(f)); if(lb>la||la==lb&&n<m) { swap(n,m); swap(la,lb); cout<<'-'; } lf=la; for(int i=1;i<=la;i++) a[i]=n[la-i]-'0'; for(int i=1;i<=lb;i++) b[i]=m[lb-i]-'0'; for(int i=1;i<=lf;i++) { if(a[i]<b[i]) { a[i+1]--; a[i]+=10; } f[i]=a[i]-b[i]; } while(f[lf]==0&&lf>1) lf--; for(int i=lf;i>=1;i--) k=k+char(f[i]+'0'); return k; } string h(string n,char w,string m) { if(w=='+') return jia(n,m); if(w=='*') return cheng(n,m); if(w=='-') return jian(n,m); }恭喜你看到了最后!这些大美味送给你!
//俄罗斯方块(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; }//狼人杀 #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; }//贪吃蛇 #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; } -
通过的题目
-
最近活动
This person is lazy and didn't join any contests or homework. -
最近编写的题解
This person is lazy and didn't write any solutions.