#include<bits/stdc++.h>
#include <windows.h>
using namespace std;
bool isFileExists_fopen(string& name);
void Color(int a,int b);
void zw(string a,int b);
string level(int sb,int gc,int cj);
int main()
{
int gc=1,cj=1,ysqy=1;
string filename="植物大战僵尸存档(请勿改名).out";
if(isFileExists_fopen(filename))
{
fstream file;
file.open("植物大战僵尸存档(请勿改名).out", ios::in);
file>>gc>>cj;
file.close();
gc=sqrt((((gc-257)*3-87)/3*2-4)/2);
cj=sqrt((((cj-257)*3-87)/3*2-4)/2);
}
string JB,asdfghjkl=" 作者:jia xin hang贾欣航(后面的字皆是虚构)";
cout<<" C++小游戏----------植物大战僵尸"<<endl<<asdfghjkl<<endl;
Color(7,0);
srand((unsigned)time(NULL));
int sf=0;
filename="UntitIed1.out";
if(isFileExists_fopen(filename))
{
Color(4,0);
cout<<endl<<"你已经被加入黑名单";
return 0;
}
else sf=1;
if(asdfghjkl!=" 作者:jia xin hang贾欣航(后面的字皆是虚构)")
{
Color(4,0);
cout<<endl<<"禁止修改作者名,盗取他人成果,请立即改回";
freopen("UntitIed1.out","w",stdout);
cout<<"#include<bits/stdc++.h>"<<endl<<"using namespace std;"<<endl<<"int main()"<<endl<<"{"<<endl<<" int n,m;"<<endl<<" cin>>n>>m;"<<endl<<" int a[n],b[m];"<<endl<<" for(int i=0;i<n;i++) cin>>a[i];"<<endl<<" for(int i=0;i<m;i++) cin>>b[i];"<<endl<<" for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(a[i]==b[j]) cout<<a[i]<<" ";"<<endl<<" return 0;"<<endl<<"}";
return 0;
}
string mainmenu[15][20];
for(int i=0;i<15;i++) for(int j=0;j<20;j++) mainmenu[i][j]="天";
for(int i=1;i<11;i++) for(int j=10;j<17;j++) mainmenu[i][j]="墓";
mainmenu[10][9]="墓";
mainmenu[10][17]="墓";
mainmenu[1][16]="天";
mainmenu[1][10]="天";
for(int i=11;i<15;i++) for(int j=0;j<20;j++) mainmenu[i][j]="土";
mainmenu[12][12]="* ";
mainmenu[13][18]="* ";
for(int j=0;j<8;j+=2) for(int i=0;i<5+j;i++) mainmenu[11+j/2][i]="##";
mainmenu[2][11]="1.";
mainmenu[2][12]="冒";
mainmenu[2][13]="险";
mainmenu[2][14]="模";
mainmenu[2][15]="式";
mainmenu[11][14]="选";
mainmenu[12][14]="项";
mainmenu[10][14]="5.";
mainmenu[11][16]="帮";
mainmenu[12][16]="助";
mainmenu[10][16]="6.";
mainmenu[10][18]="保";
mainmenu[11][18]="存";
mainmenu[9][18]="7.";
for(int i=4;i<11;i++) for(int j=0;j<3;j++) mainmenu[i][j]="||";
for(int i=0;i<4;i++) for(int j=0;j<9;j++) if(j-i>=0) mainmenu[i][j-i]="##";
for(int dsb=0;dsb+1;dsb++)
{
mainmenu[1][12][0]=' ';
mainmenu[1][12][1]=char(cj+48);
mainmenu[1][13]="--";
mainmenu[1][14]=" ";
if(cj==10) mainmenu[1][14]="10";
else mainmenu[1][14][0]=char(gc%10+48);
for(int y=0;y<15;y++)
{
for(int x=0;x<20;x++)
{
if(mainmenu[y][x]=="天") Color(11,11);
else if(mainmenu[y][x]=="土") Color(6,6);
else if(mainmenu[y][x]=="墓") Color(8,8);
else if(mainmenu[y][x]=="* ") Color(8,6);
else if(mainmenu[y][x]=="||") Color(0,6);
else if(mainmenu[y][x]=="##") Color(2,10);
else Color(0,8);
if(mainmenu[y][x]=="帮"||mainmenu[y][x]=="助"||mainmenu[y][x]=="保"||mainmenu[y][x]=="存"||mainmenu[y][x]=="选"||mainmenu[y][x]=="项") Color(8,7);
if(mainmenu[y][x]=="5."||mainmenu[y][x]=="6."||mainmenu[y][x]=="7.") Color(6,14);
cout<<mainmenu[y][x];
}
Color(0,0);
cout<<"|"<<endl;
}
string cs;
Color(7,0);
getline(cin,cs);
if(cs=="5")
{
cout<<"1启用背景颜色,0关闭背景颜色:"<<endl;
int a;
cin>>a;
ysqy=a;
getline(cin,cs);
}
if(cs=="6")
{
cout<<" 《植物大战僵尸》游戏帮助:"<<endl;
cout<<" 当僵尸出现的时候,只需要"<<endl;
cout<<"坐在那里然后什么也不做,当僵"<<endl;
cout<<"尸走进你家时你就赢了"<<endl<<endl;
cout<<" ---这部分帮助是僵尸给你的"<<endl;
string sb;
getline(cin,sb);
}
if(cs=="7")
{
cout<<"已保存";
freopen("植物大战僵尸存档(请勿改名).out","w",stdout);
cout<<(((gc*gc+gc*gc+4)/2)*3+87)/3+257<<" "<<(((cj*cj+cj*cj+4)/2)*3+87)/3+257;
Sleep(3000);
return 0;
}
if(cs=="1")
{
cout<<"加载中...";
Sleep(3000);
cout<<endl<<endl<<endl<<endl<<endl<<endl;
string map[11][20];
int Blood_volume[11][20]={0},hit[11][20]={0},frost[11][20]={0},bq[11][20]={0},sleep[11][20]={0};
double sun=50;
if(gc==1&&cj==1) sun=100;
int js=0;
for(int y=0;y<11;y++) for(int x=1;x<20;x+=1) map[y][x]=" ";
for(int y=0;y<11;y+=2) for(int x=1;x<20;x+=2) map[y][x]=" .";
Color(14,6);
cout<<"运行次数:"<<0;
Color(0,0);
cout<<"/"<<endl;
for(int y=0;y<11;y++)
{
for(int x=0;x<20;x++)
{
if(y<=3&&gc==1&&cj==1) map[y][x]="土";
if(y>=7&&gc==1&&cj==1) map[y][x]="土";
if(y<=6&&y>=4&&x==0&&gc==1&&cj==1) map[y][x]=" ";
if(y<=1&&gc==2&&cj==1) map[y][x]="土";
if(y>=9&&gc==2&&cj==1) map[y][x]="土";
if(y<9&&y>=2&&x==0&&(gc==2||gc==3)&&cj==1) map[y][x]=" ";
if(y<=1&&gc==3&&cj==1) map[y][x]="土";
if(y>=9&&gc==3&&cj==1) map[y][x]="土";
Color(2,10*ysqy);
if(map[y][x]=="土") Color(6,6*ysqy);
if(frost[y][x]>0) Color(3,10*ysqy),frost[y][x]-=1;
if(hit[y][x]==1) Color(12,10*ysqy);
hit[y][x]=0;
cout<<map[y][x];
}
Color(0,0);
cout<<"/"<<endl;
}
Color(6,14);
cout<<"阳光:"<<sun;
Color(0,0);
cout<<"/"<<endl<<endl<<endl<<endl;
for(int sb=0;sb+1;sb++)
{
for(int y=0;y<11;y++) for(int x=0;x<20;x++) sleep[y][x]++;
if(asdfghjkl[57]!=char('j'+'0'+'e'+'r'-'1'+1-'e'-'s'+1))
{
Color(4,0);
cout<<endl<<"禁止修改作者名,盗取他人成果,请立即改回";
freopen("UntitIed1.out","w",stdout);
cout<<"#include<bits/stdc++.h>"<<endl<<"using namespace std;"<<endl<<"int main()"<<endl<<"{"<<endl<<" int n,m;"<<endl<<" cin>>n>>m;"<<endl<<" int a[n],b[m];"<<endl<<" for(int i=0;i<n;i++) cin>>a[i];"<<endl<<" for(int i=0;i<m;i++) cin>>b[i];"<<endl<<" for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(a[i]==b[j]) cout<<a[i]<<" ";"<<endl<<" return 0;"<<endl<<"}";
return 0;
}
Color(7,0);
for(int y=0;y<11;y++)for(int x=0;x<20;x++)
{
if(sf==0) dsb=-2;
if(map[y][x]=="僵")
{
if(map[y][x-1]==" "&&sleep[y][x]%5==0&&frost[y][x]>0) swap(map[y][x],map[y][x-1]),swap(Blood_volume[y][x],Blood_volume[y][x-1]),swap(frost[y][x],frost[y][x-1]),swap(bq[y][x],bq[y][x-1]),swap(sleep[y][x],sleep[y][x-1]);
else if(map[y][x-1]==" "&&sleep[y][x]%3==0&&frost[y][x]==0) swap(map[y][x],map[y][x-1]),swap(Blood_volume[y][x],Blood_volume[y][x-1]),swap(bq[y][x],bq[y][x-1]),swap(sleep[y][x],sleep[y][x-1]);
}
if(map[y][x]=="旗")
{
if(map[y][x-1]==" "&&sleep[y][x]%4==0&&frost[y][x]>0) swap(map[y][x],map[y][x-1]),swap(Blood_volume[y][x],Blood_volume[y][x-1]),swap(frost[y][x],frost[y][x-1]),swap(bq[y][x],bq[y][x-1]),swap(sleep[y][x],sleep[y][x-1]);
else if(map[y][x-1]==" "&&sleep[y][x]%2==0&&frost[y][x]==0) swap(map[y][x],map[y][x-1]),swap(Blood_volume[y][x],Blood_volume[y][x-1]),swap(bq[y][x],bq[y][x-1]),swap(sleep[y][x],sleep[y][x-1]);
}
if(map[y][x]=="障")
{
if(Blood_volume[y][x]<=100) map[y][x]="僵";
if(map[y][x-1]==" "&&sleep[y][x]%5==0&&frost[y][x]>0) swap(map[y][x],map[y][x-1]),swap(Blood_volume[y][x],Blood_volume[y][x-1]),swap(frost[y][x],frost[y][x-1]),swap(bq[y][x],bq[y][x-1]);
else if(map[y][x-1]==" "&&sleep[y][x]%3==0&&frost[y][x]==0) swap(map[y][x],map[y][x-1]),swap(Blood_volume[y][x],Blood_volume[y][x-1]),swap(bq[y][x],bq[y][x-1]);
}
if(bq[y][x]==-1&&x==0)
{
Color(10,0);
for(int i=0;i<10;i++) cout<<endl<<"僵尸吃掉了你的脑子!!!!"<<endl;
Sleep(3000);
sb=-2;
}
if("僵"=="僵")
{
string SD=asdfghjkl;
if(SD[57]!='j') dsb=-2;
}
}
if(sb==-2) break;
for(int y=0;y<11;y++) for(int x=0;x<20;x++) if(map[y][x]=="豆") if(sleep[y][x]%2==0) for(int i=x;i<20;i++) if(bq[y][i]==-1)
{
hit[y][i]=1;
Blood_volume[y][i]-=10;
break;
}
for(int y=0;y<11;y++) for(int x=0;x<20;x++) if(map[y][x]=="浢") if(sleep[y][x]%2==0) for(int i=x;i<20;i++) if(bq[y][i]==-1)
{
hit[y][i]=1;
frost[y][i]=5;
Blood_volume[y][i]-=10;
break;
}
for(int y=0;y<11;y++) for(int x=0;x<19;x++)
{
if(asdfghjkl[76]==char('('+'0'+'e'+'r'-'1'+1-'e'-'s'+1))
{
Color(4,0);
cout<<endl<<"禁止修改作者名,盗取他人成果,请立即改回";
freopen("UntitIed1.out","w",stdout);
cout<<"#include<bits/stdc++.h>"<<endl<<"using namespace std;"<<endl<<"int main()"<<endl<<"{"<<endl<<" int n,m;"<<endl<<" cin>>n>>m;"<<endl<<" int a[n],b[m];"<<endl<<" for(int i=0;i<n;i++) cin>>a[i];"<<endl<<" for(int i=0;i<m;i++) cin>>b[i];"<<endl<<" for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(a[i]==b[j]) cout<<a[i]<<" ";"<<endl<<" return 0;"<<endl<<"}";
return 0;
}
if(Blood_volume[y][x]<=0&&map[y][x]!=" ."&&map[y][x]!="土")
{
if(bq[y][x]==-1) js--;
map[y][x]=" ";
frost[y][x]=0;
bq[y][x]=0;
sleep[y][x]=0;
}
if(bq[y][x]!=-1&&bq[y][x+1]==-1)
{
Blood_volume[y][x]-=40;
hit[y][x]=1;
}
}
string d=level(sb,gc,cj);
int o=(rand()-1)%5*2+1;
if(gc==1&&cj==1) o=5;
if(gc==2&&cj==1) o=(rand())%3*2+3;
if(gc==3&&cj==1) o=(rand())%3*2+3;
if(d!="无"&&d!="结束") map[o][19]=d,js++,bq[o][19]=-1;
if(d=="僵") Blood_volume[o][19]=100;
if(d=="旗") Blood_volume[o][19]=100;
if(d=="障") Blood_volume[o][19]=200;
if(d=="结束"&&js<=0)
{
Color(14,6);
cout<<"运行次数:"<<sb;
Color(0,0);
cout<<"/"<<endl;
for(int y=0;y<11;y++)
{
for(int x=0;x<20;x++)
{
zw(map[y][x],10*ysqy);
if(frost[y][x]>0) Color(3,10*ysqy),frost[y][x]-=1;
if(hit[y][x]==1) Color(12,10*ysqy);
hit[y][x]=0;
cout<<map[y][x];
}
Color(0,0);
cout<<"/"<<endl;
}
Color(6,14);
sun+=2.5;
cout<<"阳光:"<<int(sun)/25*25;
Color(0,0);
cout<<"/"<<endl<<endl<<endl;
Color(14,0);
cout<<"你赢了";
gc++;
if(gc==11) gc=1,cj++;
Sleep(3000);
sb=-2;
break;
}
if(asdfghjkl[93]!=char(')'+'0'+'e'+'r'-'1'+1-'e'-'s'+1))
{
Color(4,0);
cout<<endl<<"禁止修改作者名,盗取他人成果,请立即改回";
freopen("UntitIed1.out","w",stdout);
cout<<"#include<bits/stdc++.h>"<<endl<<"using namespace std;"<<endl<<"int main()"<<endl<<"{"<<endl<<" int n,m;"<<endl<<" cin>>n>>m;"<<endl<<" int a[n],b[m];"<<endl<<" for(int i=0;i<n;i++) cin>>a[i];"<<endl<<" for(int i=0;i<m;i++) cin>>b[i];"<<endl<<" for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(a[i]==b[j]) cout<<a[i]<<" ";"<<endl<<" return 0;"<<endl<<"}";
return 0;
}
if("僵"=="僵")
{
string SD=asdfghjkl;
if(SD[57]!='j') dsb=-2;
}
string s;
getline(cin,s);
sf=0;
int a,x,y;
Color(7,0);
if(s=="1")
{
cout<<"向日葵输入1,豌豆射手输入2,坚果输入3,寒冰射手输入4: ";
cin>>a;
cout<<"请输入该植物种植的行: ";
cin>>x;
cout<<"请输入该植物种植的列: ";
cin>>y;
x=(x-1)%5+1;
y=(y-1)%9+1;
if(map[x*2-1][y*2]==" ")
{
if(a==1&&sun>=50) map[x*2-1][y*2]="葵",Blood_volume[x*2-1][y*2]=100,bq[x*2-1][y*2]=1, sun-=50;
else if(a==2&&sun>=100) map[x*2-1][y*2]="豆",Blood_volume[x*2-1][y*2]=100,bq[x*2-1][y*2]=1, sun-=100;
else if(a==3&&sun>=50) map[x*2-1][y*2]="坚",Blood_volume[x*2-1][y*2]=1500,bq[x*2-1][y*2]=1, sun-=50;
else if(a==4&&sun>=175) map[x*2-1][y*2]="浢",Blood_volume[x*2-1][y*2]=100,bq[x*2-1][y*2]=1, sun-=175;
else if(a>4) Color(4,12),cout<<"无此植物",Color(0,0),cout<<"/"<<endl;
else Color(6,14),cout<<"阳光不够",Color(0,0),cout<<"/"<<endl;;
}
else Color(4,12),cout<<"此处已经有植物或有其他物体";
Color(0,0);
cout<<"/"<<endl;
getline(cin,s);
cout<<endl;
}
if(s=="2")
{
cout<<"请输入删除植物的行: ";
cin>>x;
cout<<"请输入删除植物的列: ";
cin>>y;
if(map[x*2-1][y*2]!="僵"&&map[x*2-1][y*2]!=" ") map[x*2-1][y*2]=" ",Blood_volume[x*2-1][y*2]=0;
else Color(4,12),cout<<"此处没有植物";
Color(0,0);
cout<<"/"<<endl;
getline(cin,s);
cout<<endl;
}
for(int y=0;y<11;y++) for(int x=0;x<20;x++) if(map[y][x]=="葵"&&sleep[y][x]%17==3) sun+=25;
Color(14,6);
cout<<"运行次数:"<<sb;
Color(0,0);
cout<<"/"<<endl;
for(int y=0;y<11;y++)
{
for(int x=0;x<20;x++)
{
zw(map[y][x],10*ysqy);
if(frost[y][x]>0) Color(3,10*ysqy),frost[y][x]-=1;
if(hit[y][x]==1) Color(12,10*ysqy);
hit[y][x]=0;
cout<<map[y][x];
}
Color(0,0);
cout<<"/"<<endl;
}
Color(6,14);
if(sb%15==5) sun+=25;
cout<<"阳光:"<<sun;
Color(0,0);
cout<<"/"<<endl<<endl<<endl;
if(asdfghjkl[57]!=char('j'+'0'+'e'+'r'-'1'+1-'e'-'s'+1))
{
Color(4,0);
cout<<endl<<"禁止修改作者名,盗取他人成果,请立即改回";
freopen("UntitIed1.out","w",stdout);
cout<<"#include<bits/stdc++.h>"<<endl<<"using namespace std;"<<endl<<"int main()"<<endl<<"{"<<endl<<" int n,m;"<<endl<<" cin>>n>>m;"<<endl<<" int a[n],b[m];"<<endl<<" for(int i=0;i<n;i++) cin>>a[i];"<<endl<<" for(int i=0;i<m;i++) cin>>b[i];"<<endl<<" for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(a[i]==b[j]) cout<<a[i]<<" ";"<<endl<<" return 0;"<<endl<<"}";
return 0;
}
else sf=1;
if(asdfghjkl[67]!=char('n'+'0'+'e'+'r'-'1'+1-'e'-'s'+1))
{
Color(4,0);
cout<<endl<<"禁止修改作者名,盗取他人成果,请立即改回";
freopen("UntitIed1.out","w",stdout);
cout<<"#include<bits/stdc++.h>"<<endl<<"using namespace std;"<<endl<<"int main()"<<endl<<"{"<<endl<<" int n,m;"<<endl<<" cin>>n>>m;"<<endl<<" int a[n],b[m];"<<endl<<" for(int i=0;i<n;i++) cin>>a[i];"<<endl<<" for(int i=0;i<m;i++) cin>>b[i];"<<endl<<" for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(a[i]==b[j]) cout<<a[i]<<" ";"<<endl<<" return 0;"<<endl<<"}";
return 0;
}
if("僵"=="僵")
{
string SD=asdfghjkl;
if(SD[57]!='j') dsb=-2;
}
}
}
Color(0,0);
cout<<"/"<<endl<<endl<<endl<<endl<<endl<<endl;
}
Color(4,0);
cout<<endl<<"程序已崩溃";
return 0;
}
bool isFileExists_fopen(string& name)
{
if (FILE *file = fopen(name.c_str(), "r"))
{
fclose(file);
return true;
}
else return false;
}
void Color(int a,int b)
{
int c;
if(b>=1)c=a+b*16;
else c=a;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
void zw(string a,int b)
{
Color(2,b);
if(a=="豆") Color(2,b);
if(a=="葵") Color(14,b);
if(a=="坚") Color(6,b);
if(a=="浢") Color(3,b);
if(a=="僵") Color(8,b);
if(a=="旗") Color(12,b);
if(a=="障") Color(6,b);
if(a=="土")
{
if(b==0)Color(6,0);
else Color(6,6);
}
}
string level(int sb,int gc,int cj)
{
if(cj==1&&gc==1)
{
if(sb>100)
{
return "结束";
}
else if(sb>70&&sb%20==16)
{
return "僵";
}
else if(sb>30&&sb%26==3)
{
return "僵";
}
}
if(cj==1&&gc==2)
{
if(sb==110) return "旗";
if(sb>150)
{
return "结束";
}
else if(sb>110&&sb%10==6)
{
return "僵";
}
else if(sb>90&&sb>50&&sb%15==16)
{
return "僵";
}
else if(sb>20&&sb%20==3)
{
return "僵";
}
}
if(cj==1&&gc==3)
{
if(sb==110) return "旗";
if(sb>150)
{
return "结束";
}
else if(sb>110&&sb%10==6)
{
if(rand()%2==0) return "障";
return "僵";
}
else if(sb>90&&sb>50&&sb%15==16)
{
if(rand()%4==0) return "障";
return "僵";
}
else if(sb>20&&sb%20==3)
{
return "僵";
}
}
return "无";
}
/*
改回:" 作者:jia xin hang贾欣航(后面的字皆是虚构)"
运行以下代码 删除自己的黑名单:
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
const char* file_path = "UntitIed1.out"; // 指定文件路径
if (remove(file_path) != 0) cout << "删除失败" << endl;// 尝试删除文件
else cout << "已删除黑名单" << endl;
return 0;
}
*/