-
个人简介
- 倒计时
c++小游戏
#include<bits/stdc++.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> #include<cmath> #define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0) using namespace std; int m[35][35],n[35][35]; 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);//木 if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//铁 if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY); if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|BACKGROUND_GREEN); if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|BACKGROUND_GREEN); if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_GREEN); if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_BLUE); } void SetPos(int x,int y) { COORD pos; pos.X=y*2,pos.Y=x+3; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos); } int X,Y,gx,gy,gunT,gunZ,T,G[10],F[30]; int Win,Lev,Blood,Dun,Bmax,Dmax,WuDi,Gguai,Bo,Boo,sy,bu; int Bx,By,Bblood,Bsi,Bjiao,Bdu,Bfang,Bxz,Byz; void Map(int x); void Jian(int x) { if(WuDi>0) return; if(Dun>x) Dun-=x; else if(Dun<=0) Blood-=x; else if(Dun>0&&Dun<=x) { if(F[13]==0) Blood-=x-Dun; if(F[13]==1) WuDi=20; if(F[17]==1) Boo=3; Dun=-1; } } bool CanGo(int x,int y,int q) //0为自己 1其他 2激光怪 3激光枪 4子弹怪 5爆毒 6子弹 7 BOSS { if(abs(Bx-x)<=1&&abs(By-y)<=1&&q==1) return 0; if(m[x][y]==2||m[x][y]==3) return 0; if((q==0||q==1)&&n[x][y]==1) return 0; if(m[x][y]==0) return 1; if(m[x][y]>=4&&m[x][y]<=8) return 1; if(m[x][y]>=84&&m[x][y]<=88) return 1; if(m[x][y]>=9&&m[x][y]<=31) return 1; if(m[x][y]>=59&&m[x][y]<=81) return 1; if((q==2||q==3||q==5)&&m[x][y]==1) return 1; if((q==2||q==3)&&m[x][y]>=100&&m[x][y]<250) return 1; if((q==0||q==3||q==5)&&m[x][y]>=50&&m[x][y]<55) return 1; if((q==4||q==7)&&m[x][y]/100==1) return 1; return 0; } void CoutMe() { if(gx<0&&CanGo(X-1,Y,0)) X--;if(gx>0&&CanGo(X+1,Y,0)) X++;if(gy<0&&CanGo(X,Y-1,0)) Y--;if(gy>0&&CanGo(X,Y+1,0)) Y++; int r;Color(0);if(WuDi>0) r=rand()%5+1,Color(r); if(gunT!=1) SetPos(X-1,Y),cout<<"︹";if(gunT!=5) SetPos(X+1,Y),cout<<"︺";if(gunT!=7) SetPos(X,Y-1),cout<<"﹝";if(gunT!=3) SetPos(X,Y+1),cout<<"﹞"; if(gunT==1) SetPos(X-1,Y),cout<<"↑";if(gunT==2) SetPos(X-1,Y+1),cout<<"↗";if(gunT==3) SetPos(X,Y+1), cout<<"→";if(gunT==4) SetPos(X+1,Y+1),cout<<"↘"; if(gunT==5) SetPos(X+1,Y),cout<<"↓";if(gunT==6) SetPos(X+1,Y-1),cout<<"↙";if(gunT==7) SetPos(X,Y-1), cout<<"←";if(gunT==8) SetPos(X-1,Y-1),cout<<"↖"; SetPos(X,Y),cout<<"●";Color(0); if(WuDi>0) Map(4); if(m[X][Y]>=50&&m[X][Y]<55) Jian(5),system("color 4F"),Sleep(30),system("color 0F"),Map(4); if(m[X][Y]>=4&&m[X][Y]<=7&&F[12]==0) Jian(3),system("color 4F"),Sleep(30),system("color 0F"),Map(4); if(m[X][Y]>=4&&m[X][Y]<=7&&F[12]==1) Jian(1),system("color 4F"),Sleep(30),system("color 0F"),Map(4); if(m[X][Y]>=59&&m[X][Y]<=80&&F[4]==0) Jian(1),system("color 4F"),Sleep(30),system("color 0F"),Map(4); if(m[X][Y]==2&&F[4]==0) Jian(3),system("color 4F"),Sleep(30),system("color 0F"),Map(4); m[X][Y]=0,gx=gy=0; } int Cout(int x,int i,int j) { int Guai=0; if(m[i][j]==0&&x==2) SetPos(i,j),cout<<" "; if(m[i][j]==1) SetPos(i,j),Color(7),cout<<"■",Color(0);//木 if(n[i][j]==0&&m[i][j]==2) SetPos(i,j),Color(8),cout<<"■",Color(0);//铁 if(n[i][j]==10&&m[i][j]==0) SetPos(i,j),cout<<" ",Color(0); if(n[i][j]==31&&m[i][j]==0) SetPos(i,j),cout<<" ",Color(0); if(m[i][j]==32) m[i][j]=0;//怪子弹灰 if(n[i][j]>=20&&n[i][j]<22&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▁",Color(0);//木 if(n[i][j]>=22&&n[i][j]<24&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▂",Color(0);//木 if(n[i][j]>=24&&n[i][j]<26&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▄",Color(0);//木 if(n[i][j]>=26&&n[i][j]<28&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▆",Color(0);//木 if(n[i][j]>=28&&n[i][j]<30&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"▆",Color(0);//木 if(n[i][j]>45&&n[i][j]<=50&&m[i][j]==2) SetPos(i,j),Color(4),cout<<"▲",Color(0);//刺 if(m[i][j]==3) SetPos(i,j),Color(5),cout<<"〓",Color(0);//箱 if(m[i][j]>=4&&m[i][j]<=7) SetPos(i,j),Color(5),cout<<"█",Color(0),m[i][j]++;//烟 if(m[i][j]==8) SetPos(i,j),cout<<" ",m[i][j]=0;//烟尘 if(m[i][j]>=84&&m[i][j]<=87) SetPos(i,j),Color(5),cout<<"█",Color(0),m[i][j]++;//烟 if(m[i][j]==88) SetPos(i,j),cout<<" ",m[i][j]=0;//烟尘 if(m[i][j]>=10&&m[i][j]<=30) SetPos(i,j),Color(10),cout<<"@ ",Color(0),m[i][j]++;//毒 if(m[i][j]>=60&&m[i][j]<=80) SetPos(i,j),Color(11),cout<<"@ ",Color(0),m[i][j]++;//怪毒 if(m[i][j]==9||m[i][j]==59) SetPos(i,j),Color(12),cout<<"@ ",Color(0),m[i][j]++;//金毒 if(m[i][j]==31||m[i][j]==81) SetPos(i,j),cout<<" ",m[i][j]=0;//毒尘 if(n[i][j]==1) SetPos(i,j),Color(13),cout<<"~ ",Color(0);//水 if(m[i][j]==50) SetPos(i,j),Color(1),cout<<"●",Color(0),Guai++;//怪 if(m[i][j]==51) SetPos(i,j),Color(10),cout<<"●",Color(0),Guai++;//怪 if(m[i][j]==52) SetPos(i,j),Color(3),cout<<"●",Color(0),Guai++;//怪 if(m[i][j]==53) SetPos(i,j),Color(4),cout<<"●",Color(0),Guai++;//怪 if(m[i][j]==54) SetPos(i,j),Color(5),cout<<"●",Color(0),Guai++;//怪 if(m[i][j]/100==1) { if((m[i][j]%100)/10<=1) SetPos(i,j),cout<<"☉"; if((m[i][j]%100)/10==2) SetPos(i,j),Color(4),cout<<"◎",Color(0); if((m[i][j]%100)/10==3) SetPos(i,j),Color(1),cout<<"◎",Color(0); if((m[i][j]%100)/10==4) m[i][j]=4; if((m[i][j]%100)/10==5) SetPos(i,j),Color(3),cout<<"◎",Color(0); if((m[i][j]%100)/10==6) SetPos(i,j),Color(2),cout<<"¤",Color(0); if((m[i][j]%100)/10>=7&&(m[i][j]%100)/10<=9) SetPos(i,j),Color(2),cout<<"◎",Color(0); } if(m[i][j]/100==2) if((m[i][j]%100)/10==1) SetPos(i,j),Color(3),cout<<"☉",Color(0); return Guai; } void Boss() { SetPos(Bx-1,By-1),cout<<" ";SetPos(Bx,By-1),cout<<" ";SetPos(Bx+1,By-1),cout<<" "; int mov=rand()%30+1,R=rand()%300,ms; if(mov==1&&CanGo(Bx-1,By-2,1)&&CanGo(Bx,By-2,1)&&CanGo(Bx+1,By-2,1)) By--; if(mov==2&&CanGo(Bx-1,By+2,1)&&CanGo(Bx,By+2,1)&&CanGo(Bx+1,By+2,1)) By++; if(mov==3&&CanGo(Bx-2,By-1,1)&&CanGo(Bx-2,By,1)&&CanGo(Bx-2,By+1,1)) Bx--; if(mov==4&&CanGo(Bx+2,By-1,1)&&CanGo(Bx+2,By,1)&&CanGo(Bx+2,By+1,1)) Bx++; if(mov==5&&Bsi==0) Bsi+=rand()%3+1; if(mov==6&&Bjiao==0) Bjiao+=rand()%3+1;if(mov==7&&Bdu==0) Bdu+=5; if(mov==8&&Bxz==0) Bxz+=rand()%20-10;if(mov==9&&Byz==0) Byz+=rand()%20-10; if(Byz<0) {Byz++; if(By-2>1) By--;}if(Byz>0) {Byz--; if(By+2<28) By++;}if(Bxz<0) {Bxz++; if(Bx-2>1) Bx--;}if(Bxz>0) {Bxz--; if(Bx+2<28) Bx++;} if(R<15&Gguai<=5) Bfang++; else if(R<5&&Gguai<=10) Bfang++; else if(R==0) Bfang++; SetPos(Bx-1,By-1),Color(0),cout<<" ●● "; SetPos(Bx,By-1) ,Color(4),cout<<")██("; SetPos(Bx+1,By-1),Color(4),cout<<" …… ";Color(0); if(abs(Bx-X)<=1&&abs(By-Y)<=1) Jian(50);int I,J; if(Bsi>0) {Bsi--;I=Bx-2,J=By+rand()%3-1;if(CanGo(I,J,7)) m[I][J]=211;I=Bx+rand()%3-1,J=By+2;if(CanGo(I,J,7)) m[I][J]=213;I=Bx+2,J=By+rand()%3-1;if(CanGo(I,J,7)) m[I][J]=215;I=Bx+rand()%3-1,J=By-2;if(CanGo(I,J,7)) m[I][J]=217;} if(Bjiao>0) {Bjiao--;I=Bx-2,J=By+2;if(CanGo(I,J,7)) m[I][J]=212;I=Bx+2,J=By+2;if(CanGo(I,J,7)) m[I][J]=214;I=Bx+2,J=By-2;if(CanGo(I,J,7)) m[I][J]=216;I=Bx-2,J=By-2;if(CanGo(I,J,7)) m[I][J]=218;} if(Bdu>0) {if(Bdu>0) Bdu--;for(int i=Bx-4;i<=Bx+4;i++) for(int j=By-4;j<=By+4;j++) if(CanGo(i,j,2)&&abs(Bx-X)>1&&abs(By-Y)>1&&i>0&&j>0) m[i][j]=59;} if(Bfang>0) {Bfang--;I=Bx+rand()%5-2,J=By+rand()%5-2;int rr=rand()%6-1;if(rr==-1) rr=0; if(((rr<3&&Lev<5)||(Lev>5))&&(CanGo(I,J,7))) m[I][J]=50+rr;} if(Lev==4) ms=3;if(Lev==9) ms=5;if(Lev==14) ms=10;if(Lev==19) ms=15;if(Lev==24) ms=20; if(T%50==0&&Bblood<ms*12) Bblood++,Map(3); for(int i=Bx-1;i<=Bx+1;i++) for(int j=By-1;j<=By+1;j++) { int du=0; if(m[i][j]/100==1) Bblood-=1,Bsi+=rand()%3+1,Map(3); if(m[i][j]/10==15) Bblood-=2,Map(3); if(m[i][j]<50||m[i][j]>55) m[i][j]=0; if(m[i][j]>=84&&m[i][j]<=87) Bblood-=1,Bsi+=rand()%3+1,Map(3); if(du==0&&m[i][j]>=9&&m[i][j]<=30) Bblood-=1,du++,Bdu++,Map(3); if(Bblood<=0) {Bblood=0;SetPos(Bx-1,By-1),cout<<" ";SetPos(Bx,By-1),cout<<" ";SetPos(Bx+1,By-1),cout<<" ";} } } void Map(int x)//x=0只输中间 1输全屏 2输身周 2输上方 4 CoutMe中用 5 GuaiQuan中用 { if(x!=4) CoutMe(); int f1,f2,f3,f4,Guai=0; if(x==0) f1=f3=2,f2=f4=28; if(x==1||x==5) f1=f3=1,f2=f4=29; if(x==2) f1=X-1,f2=X+1,f3=Y-1,f4=Y+1; if((x==4||x==3||x==1)&&Win>=0) { SetPos(-3,2),cout<<Lev/5+1<<'-'<<Lev%5+1; SetPos(-2,2),cout<<"枪:"; if(gunZ==1) cout<<"普通枪";if(gunZ==2) cout<<"分裂枪";if(gunZ==3) cout<<"穿甲枪"; if(gunZ==4) cout<<"激光枪";if(gunZ==5) cout<<"爆炸枪";if(gunZ==6) cout<<"毒气枪";if(gunZ==7) cout<<"弹跳枪"; cout<<" 子弹数:";if(gunZ==1) cout<<"∞";else cout<<G[gunZ]<<" "; SetPos(-1,2),cout<<"血量:";Color(4);int r; if(WuDi>0) r=rand()%5+1,Color(r); for(int i=1;i<=Blood;i++) cout<<"█";Color(0);for(int i=Blood;i<Bmax;i++) cout<<"█"; Color(0);SetPos(-1,18),cout<<" "; SetPos(0,2),cout<<"盾牌:";Color(9); if(Dun!=0) for(int i=1;i<=Dun;i++) cout<<"█";Color(0);for(int i=max(1,Dun);i<Dmax;i++) cout<<"█"; if(Bblood>0) { int ms; if(Lev==4) ms=5; if(Lev==9) ms=10; if(Lev==14) ms=14; if(Lev==19) ms=17; if(Lev==24) ms=20; SetPos(-1,15),cout<<" "; SetPos(-1,15),cout<<"Boss:";Color(4);for(int i=1;i<=(Bblood-1)%12+1;i++) cout<<"█"; SetPos(-1,24),Color(3);cout<<(Bblood-1)/12+1; } } if(x==5) { Color(0); SetPos(-3,2),cout<<" ↑ W 开箱(当有箱子在旁时) 开局无敌3秒"; SetPos(-2,2),cout<<"← →移动 A/D 顺/逆时针转枪 空格 暂停"; SetPos(-1,2),cout<<" ↓ S 发射子弹 清除所有怪进下一关 盾会恢复"; SetPos(0,2), cout<<" 每五关可获得一个天赋 完成 5-5 通关 ",Color(3),cout<<"按 y 进第一关"; for(int i=f1;i<=f2;i++) for(int j=f3;j<=f4;j++) Cout(x,i,j); } if(x!=3&&x!=4) { for(int i=f1;i<=f2;i++) for(int j=f3;j<=f4;j++) Guai+=Cout(x,i,j); if(x!=2) { int Rr=rand()%3; if(Guai<Gguai&&Guai!=0&&F[15]==1&&Rr==0&&Lev%5==4) Dun=min(Dmax,Dun+1),Map(3); Gguai=Guai; } if(Guai==0&&x==0&&Win==0&&Bblood<=0) { if(Lev!=24) { system("color 6E"),Color(5); SetPos(2,2),cout<<"You! Win!!!";Sleep(500); SetPos(3,2),cout<<"Please point 'y' to Play AGain.",Sleep(1000); system("color 0F");Map(1); } Win++,Lev++; } } } void Fan(int i,int j,int M) { if(M%10==1||M%10==3) m[i][j]=M+4; if(M%10==5||M%10==7) m[i][j]=M-4; if(M%10==2) { if(m[i][j+1]!=0||m[i-2][j+1]!=0) m[i][j]=M+6; else if(m[i-1][j]!=0||m[i-1][j+2]!=0) m[i][j]=M+2; else m[i][j]=M+4; } if(M%10==4) { if(m[i+1][j]!=0||m[i+1][j+2]!=0) m[i][j]=M-2; else if(m[i][j+1]!=0||m[i+2][j+1]!=0) m[i][j]=M+2; else m[i][j]=M+4; } if(M%10==6) { if(m[i][j-1]!=0||m[i+2][j-1]!=0) m[i][j]=M-2; else if(m[i+1][j]!=0||m[i+1][j-2]!=0) m[i][j]=M+2; else m[i][j]=M-4; } if(M%10==8) { if(m[i][j-1]!=0||m[i-2][j-1]!=0) m[i][j]=M-6; else if(m[i-1][j]!=0||m[i-1][j-2]!=0) m[i][j]=M-2; else m[i][j]=M-4; } } void Light(int i,int j,int M,int x) { if(M%10==1) for(int k=1;CanGo(i-k,j,x);k++) {if(x==3) m[i-k][j]=84; else m[i-k][j]=4;} if(M%10==2) for(int k=1;CanGo(i-k,j+k,x);k++){if(x==3) m[i-k][j+k]=84; else m[i-k][j+k]=4;} if(M%10==3) for(int k=1;CanGo(i,j+k,x);k++) {if(x==3) m[i][j+k]=84; else m[i][j+k]=4;} if(M%10==4) for(int k=1;CanGo(i+k,j+k,x);k++){if(x==3) m[i+k][j+k]=84; else m[i+k][j+k]=4;} if(M%10==5) for(int k=1;CanGo(i+k,j,x);k++) {if(x==3) m[i+k][j]=84; else m[i+k][j]=4;} if(M%10==6) for(int k=1;CanGo(i+k,j-k,x);k++){if(x==3) m[i+k][j-k]=84; else m[i+k][j-k]=4;} if(M%10==7) for(int k=1;CanGo(i,j-k,x);k++) {if(x==3) m[i][j-k]=84; else m[i][j-k]=4;} if(M%10==8) for(int k=1;CanGo(i-k,j-k,x);k++){if(x==3) m[i-k][j-k]=84; else m[i-k][j-k]=4;} } void Move() { bool nx[32][32]; memset(nx,0,sizeof(nx)); for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) { if(m[i][j]==50&&nx[i][j]==0&&T%2==0)//无脑怪 { int r,I=i,J=j,rr=rand()%5,rrr=rand()%2; if(rrr==0) {if(X<i) r=1;if(X>i) r=4;} if(rrr==1) {if(Y>j) r=2;if(Y<j) r=3;} if(rr==0) r=rand()%4+1; if(r==1) I=i-1,J=j;if(r==2) I=i,J=j+1;if(r==3) I=i,J=j-1;if(r==4) I=i+1,J=j; if(CanGo(I,J,1)) m[i][j]=0,m[I][J]=50,SetPos(i,j),cout<<" ",SetPos(I,J),cout<<"●",nx[I][J]=1; } if(m[i][j]==51&&nx[i][j]==0)//毒怪 { int R=rand()%10; int r,I=i,J=j,rr=rand()%30,rrr=rand()%2,mr=rand()%15; if(rrr==0) {if(X<i) r=1;if(X>i) r=4;} if(rrr==1) {if(Y>j) r=2;if(Y<j) r=3;} if(rr!=0) r=rand()%4+1; if(r==1) I=i-1,J=j;if(r==2) I=i,J=j+1;if(r==3) I=i,J=j-1;if(r==4) I=i+1,J=j; if(mr==0) {for(int k=I-2;k<=I+2;k++) for(int l=J-2;l<=J+2;l++) if(k>1&&l>1&&k<=28&&l<=28&&(CanGo(k,l,1)||m[k][l]==1)) m[k][l]=59;} if(CanGo(I,J,1)||m[I][J]==1) m[i][j]=59,m[I][J]=51,SetPos(i,j),cout<<" ",SetPos(I,J),cout<<"●",nx[I][J]=1; } if(m[i][j]==52&&nx[i][j]==0)//散弹怪 { int R=rand()%10; if(R==0) { int I,J,r,rn=0; int rr=rand()%8,Rn=rand()%3+1; Xr: rr=rand()%8,rn++; if(rr==0) {r=1,I=i-1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==1) {r=3,I=i,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==2) {r=5,I=i+1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==3) {r=7,I=i,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==4) {r=2,I=i-1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==5) {r=4,I=i+1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==6) {r=6,I=i+1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==7) {r=8,I=i-1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;} if(rr==8) {r=rand()%7+2;I=i+1,J=j;if(m[I][J]!=2) m[I][J]=210+r;}nx[I][J]=1; if(rn<Rn) goto Xr; } else if(R<=2) { int r=rand()%4+1,Ie,Je; if(r==1) Ie=i-1,Je=j;if(r==2) Ie=i,Je=j+1;if(r==3) Ie=i,Je=j-1;if(r==4) Ie=i+1,Je=j; if(CanGo(Ie,Je,1)) m[i][j]=0,m[Ie][Je]=52,SetPos(i,j),cout<<" ",SetPos(Ie,Je),cout<<"●"; } } if(m[i][j]==53&&nx[i][j]==0)//瞄准怪 { int R=rand()%6; if(R==0) { int I,J,r,rr=rand()%5; if(X-i<0&&abs(Y-j)<=2) {r=1,I=i-1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(Y-j>0&&abs(X-i)<=2) {r=3,I=i,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(X-i>0&&abs(Y-j)<=2) {r=5,I=i+1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(Y-j<0&&abs(X-i)<=2) {r=7,I=i,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(X-i<0&&Y-j>0&&abs((i-X)-(Y-j))<=2) {r=2,I=i-1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(X-i>0&&Y-j>0&&abs((X-i)-(Y-j))<=2) {r=4,I=i+1,J=j+1;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(X-i>0&&j-Y>0&&abs((X-i)-(j-Y))<=2) {r=6,I=i+1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(X-i<0&&Y-j<0&&abs((i-X)-(j-Y))<=2) {r=8,I=i-1,J=j-1;if(CanGo(I,J,6)) m[I][J]=210+r;} else if(rr==0) {r=rand()%7+2;I=i+1,J=j;if(CanGo(I,J,6)) m[I][J]=210+r;} } else if(R==1) { int r=rand()%4+1,Ie,Je; if(r==1) Ie=i-1,Je=j;if(r==2) Ie=i,Je=j+1;if(r==3) Ie=i,Je=j-1;if(r==4) Ie=i+1,Je=j; if(CanGo(Ie,Je,1)) m[i][j]=0,m[Ie][Je]=53,SetPos(i,j),cout<<" ",SetPos(Ie,Je),cout<<"●"; } } if(m[i][j]==54&&nx[i][j]==0)//激光怪 { int R=rand()%10; if(R==0) {int r=rand()%4; Light(i,j,231+2*r,2);} else if(R<=3) { int r=rand()%4+1,Ie,Je; if(r==1) Ie=i-1,Je=j;if(r==2) Ie=i,Je=j+1;if(r==3) Ie=i,Je=j-1;if(r==4) Ie=i+1,Je=j; if(CanGo(Ie,Je,1)) m[i][j]=0,m[Ie][Je]=54,SetPos(i,j),cout<<" ",SetPos(Ie,Je),cout<<"●"; } } if(m[i][j]/100==2&&F[3]==1&&T%2==0) nx[i][j]=1; if((m[i][j]/100==1||m[i][j]/100==2)&&nx[i][j]==0)//子弹 { int M=m[i][j],I,J;m[i][j]=0;SetPos(i,j),cout<<" "; if(M%10==1) I=i-1,J=j;if(M%10==2) I=i-1,J=j+1;if(M%10==3) I=i,J=j+1;if(M%10==4) I=i+1,J=j+1; if(M%10==5) I=i+1,J=j;if(M%10==6) I=i+1,J=j-1;if(M%10==7) I=i,J=j-1;if(M%10==8) I=i-1,J=j-1; if(I==X&&J==Y&&M/100==2) {Jian(2),system("color 4F"),Sleep(30);system("color 0F"),m[i][j]=0;Map(4);} else if(I==X&&J==Y&&M/100==1) m[I][J]=0; else if(M/100==2&&m[I][J]/100==1) m[i][j]=32; else if(M/100==2&&m[I][J]<55&&m[I][J]>=50) m[i][j]=0; else if(m[I][J]==2||m[I][J]==3)//石 { if((M%100)/10==0) { int rr=rand()%3; if(rr==0) Fan(i,j,M),m[i][j]+=10; else m[i][j]=84; } if((M%100)/10==1) { m[i][j]=84; int rr=rand()%5; if(rr==0&&F[14]==1&&M/100==1) { for(int ii=i-1;ii<=i+1;ii++) for(int jj=j-1;jj<=j+1;jj++) if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84; } } if((M%100)/10==2) { m[i][j]=84; if(m[i-1][j]!=2&&m[i-1][j]!=3) m[i-1][j]=111; if(m[i-1][j+1]!=2&&m[i-1][j+1]!=3) m[i-1][j+1]=112; if(m[i][j+1]!=2&&m[i][j+1]!=3) m[i][j+1]=113; if(m[i+1][j+1]!=2&&m[i+1][j+1]!=3) m[i+1][j+1]=114; if(m[i+1][j]!=2&&m[i+1][j]!=3) m[i+1][j]=115; if(m[i+1][j-1]!=2&&m[i+1][j-1]!=3) m[i+1][j-1]=116; if(m[i][j-1]!=2&&m[i][j-1]!=3) m[i][j-1]=117; if(m[i-1][j-1]!=2&&m[i-1][j-1]!=3) m[i-1][j-1]=118; } if((M%100)/10==3) {if(m[I][J]==2&&(I!=1&&J!=1&&I!=29&&J!=29)) m[I][J]=84;else m[i][j]=84;} if((M%100)/10==4) m[i][j]=84; if((M%100)/10==5) { for(int ii=i-2;ii<=i+2;ii++) for(int jj=j-2;jj<=j+2;jj++) if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84; } if((M%100)/10==6) { for(int ii=i-1;ii<=i+1;ii++) for(int jj=j-1;jj<=j+1;jj++) if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=9; } if((M%100)/10>=7&&(M%100)/10<9) Fan(i,j,M),m[i][j]+=(rand()%2)*10; if((M%100)/10==9) m[i][j]=84; } else if(!CanGo(I,J,6))//其他 { if((M%100)/10==0) m[I][J]=84,Fan(i,j,M),m[i][j]+=10; if((M%100)/10==1) { if(M/100==2&&m[I][J]==50) m[i][j]=0; else m[I][J]=84; if(F[14]==1&&M/100==1) { for(int ii=I-1;ii<=I+1;ii++) for(int jj=J-1;jj<=J+1;jj++) if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84; } } if((M%100)/10==2) { m[I][J]=84; if(m[I-1][J]!=2&&m[I-1][J]!=3) m[I-1][J]=111; if(m[I-1][J+1]!=2&&m[I-1][J+1]!=3) m[I-1][J+1]=112; if(m[I][J+1]!=2&&m[I][J+1]!=3) m[I][J+1]=113; if(m[I+1][J+1]!=2&&m[I+1][J+1]!=3) m[I+1][J+1]=114; if(m[I+1][J]!=2&&m[I+1][J]!=3) m[I+1][J]=115; if(m[I+1][J-1]!=2&&m[I+1][J-1]!=3) m[I+1][J-1]=116; if(m[I][J-1]!=2&&m[I][J-1]!=3) m[I][J-1]=117; if(m[I-1][J-1]!=2&&m[I-1][J-1]!=3) m[I-1][J-1]=118; } if((M%100)/10==3) m[I][J]=M,nx[I][J]=1; if((M%100)/10==4) Light(i,j,M,3); if((M%100)/10==5) { for(int ii=I-2;ii<=I+2;ii++) for(int jj=J-2;jj<=J+2;jj++) if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=84; } if((M%100)/10==6) { for(int ii=I-1;ii<=I+1;ii++) for(int jj=J-1;jj<=J+1;jj++) if(m[ii][jj]!=2&&m[ii][jj]!=3&&ii<=28&&jj<=28) m[ii][jj]=9; } if((M%100)/10>=7&&(M%100)/10<9) m[I][J]=84,Fan(i,j,M); if((M%100)/10==9) m[I][J]=84; } else//空地 { if((M%100)/10==6) { m[i][j]=9; if(CanGo(i,j-1,5)) m[i][j-1]=9;if(CanGo(i,j+1,5)) m[i][j+1]=9; if(CanGo(i-1,j,5)) m[i-1][j]=9;if(CanGo(i-1,j,5)) m[i+1][j]=9; m[I][J]=M,nx[I][J]=1; } if((M%100)/10==4) m[i][j]=84,m[I][J]=M,i=2,j=2; else m[I][J]=M,nx[I][J]=1; } } } if(Bblood>0) Boss(); } void Bullet() { int I=0,J=0,R=rand()%10,Rr=rand()%3,Rrr,K=0,tg=gunT; Hh:Rrr=rand()%20; if(gunT==1&&m[X-1][Y]!=2&&m[X-1][Y]!=3) I=X-1,J=Y; if(gunT==2&&m[X-1][Y+1]!=2&&m[X-1][Y+1]!=3) I=X-1,J=Y+1; if(gunT==3&&m[X][Y+1]!=2&&m[X][Y+1]!=3) I=X,J=Y+1; if(gunT==4&&m[X+1][Y+1]!=2&&m[X+1][Y+1]!=3) I=X+1,J=Y+1; if(gunT==5&&m[X+1][Y]!=2&&m[X+1][Y]!=3) I=X+1,J=Y; if(gunT==6&&m[X+1][Y-1]!=2&&m[X+1][Y-1]!=3) I=X+1,J=Y-1; if(gunT==7&&m[X][Y-1]!=2&&m[X][Y-1]!=3) I=X,J=Y-1; if(gunT==8&&m[X-1][Y-1]!=2&&m[X-1][Y-1]!=3) I=X-1,J=Y-1; if(I!=0&&J!=0) m[I][J]=100+10*gunZ+gunT; if(K==1) m[I][J]=110+gunT; if(F[2]==1&&gunZ==1) m[I][J]=100+gunT; if(F[8]==1&&R==0&&K==0) {gunT=rand()%8+1;K=1;goto Hh;} if(F[8]==1&&K!=0&&K<Rr) {gunT=rand()%8+1;K++;goto Hh;} if(K>=Rr) gunT=tg; if(Rrr==0&&F[11]==1&&K==0) {m[I][J]=100+10*(rand()%7+1)+gunT;} if(gunZ!=1) {G[gunZ]--; if(G[gunZ]<=0) G[gunZ]=0,gunZ=1;Map(3);} } void OpenBox(int a) { for(int i=X-1;i<=X+1;i++) for(int j=Y-1;j<=Y+1;j++) if(m[i][j]==3) { int r=2;// if(a==1) r=rand()%6+2; if(F[9]==1) r=rand()%12+2; SetPos(i,j);Color(5); if(r==2) cout<<"分裂枪!"; if(r==3) cout<<"穿甲枪!"; if(r==4) cout<<"激光枪!"; if(r==5) cout<<"爆炸枪!"; if(r==6) cout<<"毒气枪!"; if(r==7) cout<<"弹跳枪!"; if(r==8) cout<<"生命药水!",Blood=min(Blood+5,Bmax+2),Map(3); if(r==9) cout<<"盾牌药水!",Dun=min(Dun+5,Dmax+2),Map(3); if(F[9]==1&&r>=8&&r<=13) cout<<"生命药水!",Blood=min(Blood+5,Bmax+2),Map(3); Sleep(1000);m[i][j]=84;if(r<=7&&F[6]==0) gunZ=r,G[r]+=10;if(r<=7&&F[6]==1) gunZ=r,G[r]+=20; SetPos(i,j); cout<<" ";Map(0); } } void Sheng() { memset(m,0,sizeof(m));memset(n,0,sizeof(n)); int q=0,T=0,II=0,JJ=0; Re: q++; int r=rand()%15+1; if(F[19]==1) r=rand()%20+1; if(r==1) {for(int i=5;i<=7;i++)for(int j=5;j<=7;j++) m[i][j]=2;for(int i=23;i<=25;i++)for(int j=5;j<=7;j++) m[i][j]=2;for(int i=5;i<=7;i++)for(int j=23;j<=25;j++) m[i][j]=2;for(int i=23;i<=25;i++)for(int j=23;j<=25;j++) m[i][j]=2;} if(r==2) {for(int i=13;i<=17;i++) for(int j=13;j<=17;j++) m[i][j]=1;} if(r==3) {for(int i=2;i<=28;i++) m[i][6]=m[i][24]=m[6][i]=m[24][i]=1;} if(r==4) {for(int i=2;i<=28;i++) m[i][15]=m[15][i]=1;} if(r==5) {for(int i=2;i<=28;i++) if(abs(i-15)>=3) m[i][15]=m[15][i]=2;} if(r==6) {for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) if(i==j||i+j==30) m[i][j]=1;} if(r==7) {for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) if(abs(i-15)+abs(j-15)==10) m[i][j]=1;} if(r==8) {for(int i=5;i<=25;i++) if(abs(i-15)>=2) m[i][10]=m[i][20]=m[10][i]=m[20][i]=2;} if(r==9) {for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) {int rr=rand()%20; if(rr==0&&m[i][j]==0) m[i][j]=1;}} if(r>=10&&II==0) {T--;int ii=rand()%27+2;int jj=rand()%27+2; for(int i=ii-1;i<=ii+1;i++) for(int j=jj-1;j<=jj+1;j++) if(m[i][j]==0) m[i][j]=1;II=ii,JJ=jj;} if(r>=10&&II!=0) goto Re;if(Lev<=5&&q<2) goto Re; T++;if(T==1) goto Re;if(II!=0) m[II][JJ]=3; r=rand()%15+1; if(r==1) {for(int i=5;i<=25;i++) n[i][4]=n[i][9]=n[i][15]=n[i][21]=n[i][26]=31;} if(r==2) {for(int i=8;i<=22;i++) n[i][8]=n[i][22]=n[8][i]=n[22][i]=31;} if(r==3) {for(int i=1;i<=5;i++) {int ii=rand()%23+4,jj=rand()%23+4;for(int ki=ii-2;ki<=ii+2;ki++)for(int kj=jj-2;kj<=jj+2;kj++) if(abs(ki-X)>2||abs(kj-Y)>2) n[ki][kj]=1;}} if(r==4) {for(int i=1;i<=7;i++) {int ii=rand()%23+4,jj=rand()%23+4;for(int ki=ii-1;ki<=ii+1;ki++)for(int kj=jj-1;kj<=jj+1;kj++) n[ki][kj]=11;}} if(r==5) {for(int i=1;i<=20;i++) {int ii=rand()%23+4,jj=rand()%13+1;jj*=2;for(int ki=ii-1;ki<=ii+1;ki++) n[jj+1][ki]=31;}} if(r==6) {for(int i=2;i<=28;i++) n[i][9]=n[i][10]=n[i][20]=n[i][21]=11;} if(r==7) {for(int i=5;i<=25;i++) n[4][i]=n[9][i]=n[15][i]=n[21][i]=n[26][i]=31;} if(r==8) {for(int i=7;i<=23;i++) for(int j=7;j<=23;j++) if(i==j||i+j==30) n[i][j]=31;} if(r==9) {for(int i=2;i<=28;i++) {if(i!=4&&i!=26&&!(i==Y&&(14<=X&&16>=X))) n[14][i]=n[15][i]=n[16][i]=1; m[14][i]=m[15][i]=m[16][i]=0;}} if(r==10) {for(int i=7;i<=23;i++) if(abs(i-15)>1) n[i][7]=n[i][23]=n[7][i]=n[23][i]=1;} Kk: int k=0,K[35][35]; memset(K,0,sizeof(K)); if(Lev%5!=4) { for(int i=2;i<=28;i++)//怪 for(int j=2;j<=28;j++) { if(Lev<=1) {int r=rand()%150;if(r==0) K[i][j]=50,k++;} else if(Lev<=2) {int r=rand()%200;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r<=1) k++;} else if(Lev<=3) {int r=rand()%300;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r<=2) k++;} else if(Lev<=5) {int r=rand()%400;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r==3) K[i][j]=53;if(r<=3) k++;} else if(Lev<=7) {int r=rand()%350;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r==3) K[i][j]=53;if(r==4) K[i][j]=54;if(r<=4) k++;} else {int r;if(Lev<=10) r=rand()%300;if(Lev<=15) r=rand()%280;if(Lev<=20) r=rand()%250;if(Lev<=25) r=rand()%230;if(r==0) K[i][j]=50;if(r==1) K[i][j]=51;if(r==2) K[i][j]=52;if(r==3) K[i][j]=53;if(r==4) K[i][j]=54;if(r<=4) k++;} }if(k<3) goto Kk;if(k>5&&Lev<=3) goto Kk;if(k<5&&Lev>=10) goto Kk;if(k>10&&Lev<=10) goto Kk;if(k>15&&Lev<=15) goto Kk;if(k<10&&Lev>=20) goto Kk;if(k>20&&Lev<=20) goto Kk; } for(int i=2;i<=28;i++) for(int j=2;j<=28;j++) {if(n[i][j]!=0) m[i][j]=0;if(K[i][j]!=0&&(m[i-1][j]!=2||m[i+1][j]!=2||m[i][j-1]!=2||m[i][j+1]!=2)) m[i][j]=K[i][j];} if(Lev%5==4) {int ms;if(Lev==4) ms=3;if(Lev==9) ms=5;if(Lev==14) ms=10;if(Lev==19) ms=15;if(Lev==24) ms=20;Bx=rand()%23+4,By=rand()%23+4;Bblood=ms*12;for(int i=14;i<=16;i++) for(int j=14;j<=16;j++) m[i][j]=n[i][j]=0;} for(int i=X-1;i<=X+1;i++) for(int j=Y-1;j<=Y+1;j++) if(i!=1&&i!=29&&j!=1&&j!=29) m[i][j]=0; for(int i=1;i<=29;i++) m[1][i]=2,m[29][i]=2; for(int i=1;i<=29;i++) m[i][1]=2,m[i][29]=2;//周围石块 } void TianFu() { int A[4],ss=0; system("cls"); SetPos(5,5),cout<<"选择一个天赋!(数字键选择)"; Tf: int R=rand()%20+1; for(int i=1;i<=3;i++) if(R==A[i]) goto Tf; if(F[R]==1) goto Tf; ss++,A[ss]=R; SetPos(4*ss+5,8),cout<<ss<<"、"; if(R==1) SetPos(4*ss+5,10),cout<<"盾牌恢复速度增加"; if(R==2) SetPos(4*ss+5,10),cout<<"普通子弹有概率弹跳"; if(R==3) SetPos(4*ss+5,10),cout<<"怪物子弹速度变慢"; if(R==4) SetPos(4*ss+5,10),cout<<"免疫地刺和怪物的毒"; if(R==5) SetPos(4*ss+5,10),cout<<"开局无敌时间增加"; if(R==6) SetPos(4*ss+5,10),cout<<"宝箱子弹量增加"; if(R==7) SetPos(4*ss+5,10),cout<<"盾牌上限增加"; if(R==8) SetPos(4*ss+5,10),cout<<"有概率发射散弹"; if(R==9) SetPos(4*ss+5,10),cout<<"宝箱抽出生命水概率增加"; if(R==10) SetPos(4*ss+5,10),cout<<"每次开局有概率增加生命"; if(R==11) SetPos(4*ss+5,10),cout<<"有概率发射特殊子弹"; if(R==12) SetPos(4*ss+5,10),cout<<"激光伤害减半"; if(R==13) SetPos(4*ss+5,10),cout<<"盾牌爆后无敌一段时间"; if(R==14) SetPos(4*ss+5,10),cout<<"普通子弹有概率爆炸"; if(R==15) SetPos(4*ss+5,10),cout<<"杀死怪有几率加盾(BOSS关除外)"; if(R==16) SetPos(4*ss+5,10),cout<<"出场释放冲击波"; if(R==17) SetPos(4*ss+5,10),cout<<"盾牌爆后释放冲击波"; if(R==18) SetPos(4*ss+5,10),cout<<"有概率在身周放毒"; if(R==19) SetPos(4*ss+5,10),cout<<"刷出宝箱概率增加"; if(R==20) SetPos(4*ss+5,10),cout<<"每次开局获得一把枪"; if(ss<3) goto Tf; tF: char c=_getch(); if(c>='1'&&c<='3') F[A[c-'0']]=1; else goto tF; if(A[c-'0']==7) Dmax+=3; } void GuaiQuan() { X=3,Y=3;Win=-1;system("cls");Color(0); memset(m,0,sizeof(m));memset(n,0,sizeof(n)); for(int i=1;i<=29;i++) m[1][i]=2,m[29][i]=2; for(int i=1;i<=29;i++) m[i][1]=2,m[i][29]=2;//周围石块 for(int i=4;i<=12;i++) m[i][4]=m[i][12]=m[4][i]=m[12][i]=m[i][18]=m[i][26]=m[18][i]=m[26][i]=2; for(int i=18;i<=26;i++) m[i][4]=m[i][12]=m[4][i]=m[12][i]=m[i][18]=m[i][26]=m[18][i]=m[26][i]=2; for(int i=11;i<=19;i++) m[i][11]=m[i][19]=m[11][i]=m[19][i]=2; for(int i=6;i<=10;i++) for(int j=13;j<=17;j++) m[i][j]=1; m[8][8]=50;m[8][21]=51;m[15][15]=52;m[21][8]=53;m[21][21]=54;m[16][23]=3;Map(5); SetPos(3,5);cout<<"←你";SetPos(4,14);cout<<"木箱↓";SetPos(17,4);cout<<"铁块↓";SetPos(17,21);cout<<"宝箱↑"; SetPos(13,5);cout<<"无脑小怪↑";SetPos(14,21);cout<<"剧毒小怪↑"; SetPos(20,13);cout<<"散弹小怪↑";SetPos(27,5);cout<<"狙击小怪↑";SetPos(27,21);cout<<"激光小怪↑"; while(1) { if(bu>0) bu--; if(GetAsyncKeyState(VK_UP)&0x8000) Map(2),gx--; else if(GetAsyncKeyState(VK_DOWN)&0x8000) Map(2),gx++; else if(GetAsyncKeyState(VK_LEFT)&0x8000) Map(2),gy--; else if(GetAsyncKeyState(VK_RIGHT)&0x8000) Map(2),gy++; if(kbhit()) { char g=_getch(); if(g=='a') {Map(2); if(gunT!=1) gunT--;else gunT=8;} if(g=='d') {Map(2); if(gunT!=8) gunT++;else gunT=1;} if(g=='w') OpenBox(1); if(g=='s'&&bu<=2) Bullet(),bu+=2; if(g==' ') Sleep(100),SetPos(-1,18),sy++,system("pause"); if(g=='y'&&Win<0) {break;} } if(sy==1) SetPos(-1,18),cout<<" ",sy--; Move(); Map(0); Sleep(50); }Lev=0;Blood=10,Dun=10,Bmax=10,Dmax=10; } void Start() { Color(5); SetPos(2,3);cout<<" ■■■■■■ ■ "; SetPos(3,3);cout<<" ■■■■■■■■ "; SetPos(4,3);cout<<" ■ "; SetPos(5,3);cout<<" ■■■■■■■■■■ ■ ■■■■■■ "; SetPos(6,3);cout<<" ■ ■ "; SetPos(7,3);cout<<" ■ ■ ■■■■■■■ "; SetPos(8,3);cout<<" ■ ■ ■ ■ "; SetPos(9,3);cout<<" ■■ ■■■ ■ "; SetPos(10,3);cout<<" ■ ■ "; SetPos(11,3);cout<<" 小 ■■■■ "; SetPos(13,3);cout<<" 2.0版本: "; SetPos(14,3);cout<<" ■■■ ■ "; SetPos(15,3);cout<<" 新增BOSS!Crab-Dave! ■ ■ ■ "; SetPos(16,3);cout<<" ■■■ ■ ■ "; SetPos(17,3);cout<<" 水,生木块,地刺加入战场! ■ ■ ■■■■■"; SetPos(18,3);cout<<" ■ ■ "; SetPos(19,3);cout<<" 身周不会刷出石和水了! ■■■ ■■■■ "; SetPos(20,3);cout<<" ■ ■ ■ ■ "; SetPos(21,3);cout<<" BUG修正于小优化!努力通关吧! ■ ■ ■ ■ "; SetPos(22,3);cout<<" ■■ ■ ■■■■ "; SetPos(25,4);Color(1);cout<<"按 y 开始游戏!"; SetPos(29,3);Color(3);cout<<"注意!这里 绝对不能是拼音输入法!"; A:char y=_getch(); if(y=='y') return; else goto A; } void Bling() { for(int i=0;i<=3;i++) { system("color 1A");Sleep(10); system("color 2B");Sleep(10); system("color 3C");Sleep(10); system("color 4D");Sleep(10); system("color 5D");Sleep(10); system("color 6E");Sleep(10); system("color 7F");Sleep(10); }system("color 0F");system("cls"); } void BaoBo(int B) { for(int i=X-B;i<=X+B;i++) if(CanGo(i,Y-B,3)&&i>0&&Y-B>0) m[i][Y-B]=86,m[i][Y-B+1]=8; for(int i=X-B;i<=X+B;i++) if(CanGo(i,Y+B,3)&&i>0&&Y+B>0) m[i][Y+B]=86,m[i][Y+B-1]=8; for(int j=Y-B;j<=Y+B;j++) if(CanGo(X+B,j,3)&&j>0&&X+B>0) m[X+B][j]=86,m[X+B-1][Y]=8; for(int j=Y-B;j<=Y+B;j++) if(CanGo(X-B,j,3)&&j>0&&X-B>0) m[X-B][j]=86,m[X-B+1][Y]=8; } void Ci() { for(int i=1;i<=29;i++) for(int j=1;j<=29;j++) { if(n[i][j]>=10&&n[i][j]<50&&n[i][j]!=30) n[i][j]++; if(n[i][j]==50) {n[i][j]=31;if(m[i][j]==2) m[i][j]=0;} if(n[i][j]==45&&!(m[i][j]>=50&&m[i][j]<55)&&!(abs(Bx-i)<=1&&abs(By-i)<=1)) m[i][j]=2; if(n[i][j]>20&&n[i][j]<=30&&m[i][j]==0) n[i][j]=10; if(n[i][j]==20&&m[i][j]==0&&!(abs(Bx-i)<=1&&abs(By-i)<=1)) m[i][j]=1; } } int main() { system("mode con cols=62 lines=34"); CONSOLE_CURSOR_INFO cursor_info={1,0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); srand((unsigned)time(NULL)); SSt: Start();Bling(); X=4,Y=8,gx=gy=0,gunT=1,gunZ=1,Lev=0,T; Blood=10,Dun=10,Bmax=10,Dmax=10; memset(G,0,sizeof(G)); memset(F,0,sizeof(F)); GuaiQuan(); St: Win=0;Bo=Boo=0; memset(m,0,sizeof(m)); if(Lev%5==0&&Lev!=0) TianFu(); Bling();T=0;Sheng();Map(1);int rr=rand()%3; if(F[5]==1) WuDi=60;else WuDi=30; if(rr==0&&F[10]==1) Blood=min(Blood+1,Bmax); if(F[16]==1) Bo=4; if(F[20]==1) {int Q=rand()%7+2;gunZ=Q,G[Q]=5;} while(Win<=0&&Blood>0&&Lev<25) { T++; if(bu>0) bu--; if(WuDi>0) WuDi--; if(WuDi==1) WuDi--,Map(4); if(Bo>0) BaoBo(5-Bo),Bo--; if(Boo>0) BaoBo(4-Boo),Boo--; if(F[18]==1) { int Rrr=rand()%30; if(Rrr==0) for(int i=X-2;i<=X+2;i++) for(int j=Y-2;j<=Y+2;j++) if(CanGo(i,j,5)&&i>0&&j>0) m[i][j]=9; } if(Dun<Dmax) { if(F[1]==1&&T%30==0) Dun++,Map(3); if(F[1]==0&&T%70==0) Dun++,Map(3); } if(GetAsyncKeyState(VK_UP)&0x8000) Map(2),gx--; else if(GetAsyncKeyState(VK_DOWN)&0x8000) Map(2),gx++; else if(GetAsyncKeyState(VK_LEFT)&0x8000) Map(2),gy--; else if(GetAsyncKeyState(VK_RIGHT)&0x8000) Map(2),gy++; if(kbhit()) { char g=_getch(); if(g=='a') {Map(2); if(gunT!=1) gunT--;else gunT=8;} if(g=='d') {Map(2); if(gunT!=8) gunT++;else gunT=1;} if(g=='w') OpenBox(0); if(g=='s'&&bu<=2) Bullet(),bu+=2; if(g==' ') Sleep(100),SetPos(-1,18),sy++,system("pause"); } if(sy==1) SetPos(-1,18),cout<<" ",sy--; if(T%2==0) Ci(); Move();Map(0);Sleep(50); } if(Win==0&&Blood<=0&&Lev<25) { system("color 7F"),Color(4);Lev=0;Blood=Dun=Bmax=Dmax=10; Bblood=Bsi=Bjiao=Bdu=Bfang=0; memset(G,0,sizeof(G)); memset(F,0,sizeof(F)); SetPos(2,2);cout<<"You! Die!!!",Sleep(1000); SetPos(3,2);cout<<"Please point 'y' to Play AGain."; } if(Lev<25) { A:char e=_getch();if(e=='y') goto St;else goto A;} if(Lev==25) { system("color 6E"),Color(5); SetPos(2,2),cout<<"You! Pass All The Level!!!";Sleep(3000); system("color 0F");system("cls");goto SSt; } return 0; }
动态规划 Dynamic Programming:最优化问题 核心思想:枚举 枚举优化(记忆化思想):记录过程值,下次直接使用 1.阶段划分:项数 2.定义状态:dp[长度] dp[i] 3.状态转移方程:dp[i]=dp[i-1]+dp[i-2]
图
图(多对多) 图的定义:一个图G由一组顶点V和它 们之间的边E组成图的阶数:图中顶点的数量 没带箭头:无向图;反之有向图 有权图:边上有权值,表示两个点之间的联系程度 无权图: 反之,表示两个点之间的联系程度 度:顶点在图中有多少关联的边 在无向图中,所有顶点度的和等于边数的两倍 在有向图中,出度以该结点为终点的边 路径:图中依次首尾相连的边
树
树的基本概念 1.什么是树? 树是由n(n>=0)个结点组成的有限集 n=0时,是一颗空树 n!=0时,是一颗非空树,非空树的根是唯一的 2.度 结点的度:该结点子结点的数量 树的度:该树子结点的最大值 3.父,子,兄弟结点 4.层次 规定根为第一层 其他结点的层次为父结点的层次加1 一棵树最大的层次为一棵树的深度
二叉树
/*二叉树 叶子结点:度为0的结点 1.概念:每个结点最多有2个子结点 2.二叉树的性质: 第i层最多有2的(i-1)次方个结点 深度为h的二叉树最多有2的h次方减1个:(2^h)-1 在任意二叉树中,n0表示叶子结点的数量,n2表示度为2的结点数量,必定有n0=n2+1 n0+n1+n2=n 0+n1+n2*2=n-1 特殊二叉树:满二叉树,完全二叉树,哈夫曼树 满二叉树:每一层都是结点都是满的二叉树 完全二叉树:只有最后一层不满,叶子结点只出现在最下层(必须集中在左边)和次下层 具有n个结点的完全二叉树的深度为log2N向下取整加1 对于一个n个结点的完全二叉树,根结点的编号为1,对于任意结点i,他的父节点i/2,他的左子结点是2*i,右子结点是2*i+1 哈夫曼树是贪心的思想 */
动态数组
#include <bits/stdc++.h> #include <vector> using namespace std; /* 动态数组 vector 1.添加元素到末尾 push_back() 2.删除最后一个元素 pop_back() 3.返回第一个元素 front() 4.返回最后一个元素 back() 5.清空 clear() 6.判空 empty() 7.获取元素个数 size() //二维数组的定义 vector<int> vec[10]; vector<vector<int>> vec; */ int main(){ vector<int> vec1;//默认定义 vector<int> vec2(5); //初始化5个元素的一维数组 vector<int> vec3(5,2);// vector<int> vec4(vec3);//拷贝,把一个vector赋值给另一个vector //把数组赋值给vector int a[5]={1,2,3,4,5}; vector<int> vec5(a+2,a+5); for(int i=1;i<=10;i++){ vec1.push_back(i); } //vec1[0]=18; 以赋值方式修改元素 //vector的遍历(数组形式) for(int i=0;i<vec5.size();i++){ cout<<vec5[i]<<" "; } cout<<endl; //用迭代器遍历 vector<int>::iterator it=vec1.begin();//it是一个指针,指向首元素地址 while(it!=vec1.end()) { cout<<*it<<" "; it++; } return 0; }
队列加栈操作
//stack<int> sta;//创建一个栈 //sta.push(a);//入栈 //int a=sta.top();//返回栈顶元素 //sta.pop();//出栈 //sta.empty();//判断栈是否为空 1为空,0为非空 //sta.clear();//清空 //queue<int> que;//创建一个队列 //que.push(a);//入队 //int a=que.front();//返回队头元素 //que.pop();//出队 //que.empty();//判断队列是否为空 1为空,0为非空 //que.clear();//清空
vector的使用
#include<bits/stdc++.h> using namespace std; int arr[100005]; int main(){ //文件输入输出 freopen("random.in","r",stdin); freopen("random.out","w+",stdout); vector<int> v1;//这是开启一个空的vector但是,无法跟数组一样直接访问 v1.push_back(2);//这与我们将元素放入栈与队列中相似,将元素2放入v1中,实现动态数组长度 // v1[1] = 1;//这样是不行的,因为没开启!!!! // cout<<v1[1]<<endl; vector<int> v2(5);//与数组基本相同,可以进行直接访问 vector<int> v3(100000,1); v2[4] = 1; v2[3] = 0;//由于v2提前分配了5个空间,所以可以访问v2[0]到v2[4] cout<<v2[4]<<" "<<v2[3]<<endl; //我们可以通过v2.begin() v2.end()查看首尾元素迭代器 //由于我们只开辟了空间,所以v2的首元素是默认的0,而尾元素为1 sort(v2.begin(),v2.end()); cout<<v2.size()<<endl; //与栈和队列相同 访问容器内元素个数 输出发现个数为5 因为前面分配了5个空间 for(int i = 0;i < v2.size();i ++) { cout<<v2[i]; } //与数组一样 遍历容器内元素 注意i从0开始 小于v2.size() v1.pop_back();//删除我们v1最后一个元素 v1.clear();//删除v1所有元素 v1.empty();//判断v1是否为空 }
set的使用
#include<bits/stdc++.h> using namespace std; int main(){ freopen("random.in","r",stdin); freopen("random.out","w+",stdout); set<int>s; s.size();// 跟vector stack queue一样 s.insert(20);//放入s的集合里,并且自动去重 s.find(30);//查询是否存在30这个数存在里面,如果存在我们这个集合里,返回迭代器 s.erase(20);//删除集合里所有值为20的数,返回值是删除了多少个这个值 s.erase(iter);//iter为迭代器 删除迭代器所在地方的数 s.erase(l,r);//删除[l,r)这个范围的数 s.clear();//清空s所有数 s.empty();//判断是否为空 for(set<int>::iterator it=s.begin();it!=s.end();it++){ //根据迭代器 顺序访问空间 因为内部自动排序 所以说直接顺序就行 cout<<*it<<" "; } }
- 不再受极域电子教室控制:
简介
本软件研发目的就是为了对抗极域电子教室,如果您的学校机房使用极域电子教室来控制学生电脑的话,本软件很可能会帮到你。
讲师讲课无聊啰嗦缓慢?
想自己试试操作,却被该死的全屏广播控制,什么都不能干?
拔掉网线后虽然自由了但是又看不到老师的演示了?
如果你被以上问题困扰,本软件可能是您非常想要的。
这是一个可以使 极域电子教室全屏广播失效 的软件,也就是说,在被老师全屏广播时,会将其自动调整为窗口模式,你不仅可以自由操作电脑,也还可以看老师的演示,自由+学习两不误,这不是很爽的事情吗?其还可以防止被老师控制(有点狠),以及自动关闭 “黑屏安静” 这种东西;由于本软件是将全屏调整为窗口,因此老师并不会发现你断线或是进行了非法操作。
如果你喜欢这个软件,不妨向你的好友推荐一下吧!
功能
- 在不影响极域正常运行的情况下将 全屏的广播 转为 窗口广播 模式,您不仅可自己操作,也可看老师讲解课程。
- 内置强杀、启停极域 StudentMain.exe 进程功能,无需依赖其他软件。
- 内置破解极域解锁卸载密码功能,支持新版极域。
- 反监视功能,经测试,开启反监视,教师端就无法监视您所用的电脑。
- 防控制功能,防止教师通过极域控制您所用的电脑。
- 监控极域远程执行命令,您可以自由选择是否允许教师端远程执行的命令。
- 通过极域电子教室对同学的电脑远程发送信息或远程执行命令。
下载
- 蓝奏云备份[2021-7-19] https://wwr.lanzoui.com/b02i7ni1a 密码:5e3z
- Github
提示:由于本软件会对极域电子教室进行必要的操作(远程注入、替换模块),某些杀毒软件可能会报毒,您可能需要关闭杀毒软件或添加白名单。
操作方法
本软件专为小白设计,默认情况下,您不需要修改任何参数,直接运行exe,并最小化即可,软件会自动进行操作。
附加说明:本软件不依赖任何运行库,您只需复制一个 JiYuTrainer.exe 至目标电脑即可运行,本软件已将需要的DLL打包,它会自动进行安装。
一些提示
Q: 教师端限制了U盘,要怎么把 JiYuTrainer 复制到电脑上运行?
A: 你可以先卸载掉极域的驱动再插入U盘。具体操作方法如下:
-
先以管理员身份运行cmd:
-
输入以下命令卸载TDFileFilter驱动:|
1 2
| COPY
sc stop TDFileFilter sc delete TDFileFilter
| | --------------- | ------------------------------------------------------------- |
然后再插入U盘,就没有限制了,可以直接运行JiYuTrainer。Q: 教师端限制了网络,要怎么办?
A: JiYuTrainer 可以自动卸载网络驱动,这可能有效,如果该方法无效, 可尝试下载PCHunter软件,该软件有最强力的方法删除驱动(也可用它来杀死任何进程)
- 如图打开PCHunter软件,打开“驱动模块”页面。
- 找到极域的网络驱动“TDNetFilter.sys”,并选择卸载驱动。
- 稍等一下,刷新网页,此时网络即可正常访问。
- 最好你也可顺便把极域的其他进程一并杀死,防止它因为驱动卸载掉还操作而导致系统蓝屏。
已测试极域电子教室版本:
- 2010版 (5.01.64.942 / 5.01 Baseline)
- 2015豪华版
- 2016豪华版 (2.07.0.13488 / 2.07 CMPC)
操作系统版本:
- 系统版本要求: Win7/Win8/Win8.1/Win10
抱歉:因为最近一次做了较大改动,一些功能XP适配不了了,所以此后JiYuTrainer都不再支持WindowXP了,> 如果您要在WindowXP上使用JiYuTrainer,只能使用旧版。
编译以及生成
支持的编译工具: Visual Studio 2019 (推荐) gcc 4.7+ (需要自己配置环境) (不推荐) 如果需要编译驱动模块,您还需要安装: WDK8 或以上 构建步骤:
- 使用Visual Studio打开项目JiYuTrainer.sln
- 在顶部工具栏选择配置为Release,平台为x86.
- 在解决方案资源管理器中右键“JiYuTrainer”项目,点击“生成”。
- 等待生成完毕。不用理会JiYuTrainerDriver的编译错误,因为无须生成驱动,源码里已经有生成好的驱动了。
- 在项目目录/Release下就有构建完成的程序了。
使用的第三方库
第三方库已经包含在项目中,不需要您自己安装
- Jiyu_udp_attack (由ht0Ruial大佬提供UDP攻击的原理代码)
- curl (用于自动更新模块)
- mhook (用于 JiYu HOOKER 模块)
- MemoryModule
- XZip-XUnZip
其他
这个项目大致功能目标已经完成了, 如果你喜欢这个项目,
不妨推荐给你的好友吧😉
MC指令: /lingtning(雷击,若不输入名字则雷会劈到你的光标所指处)
/locate(寻找遗迹或村庄)
sqrt()(c++开方)
- 英语不及格,说明我爱国;
- 语文不及格,恋爱没资格;
- 物理不及格,电死不负责;
- 化学不及格,硫酸也喝得;
- 政治不及格,老师没道德;
- 信息不及格,网吧要打折;
- 数学不及格,突出我性格;
- 历史不及格,社会要改革;
- 全科不及格,老妈动真格!
语文老师一回头,此地空余黄鹤楼。
数学老师一回头,二次函数对称轴。
英语老师一回头,搜瑞加上三克油。
化学老师一回头,二氧化碳变汽油。
物理老师一回头,一跟杠杆撬地球。
生物老师一回头,试管婴儿水中游。
地理老师一回头,大陆版块乱漂流。
历史老师一回头,秦始皇来推铅球。
劳技老师一回头,破铜烂铁来走秀。
政治老师一回头,布什改行卖豆油。
美术老师一回头,蒙娜丽莎也风流。
体育老师一回头,奥运取消打篮球。
电脑老师一回头,学生全成阿Q友。
全体老师一回头,世界人民没自由!
#include<bits/stdc++.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> #include #define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0) using namespace std; char x; int z=0,c=0; void r() { x=_getch(); system("cls"); } void s() { cout<<"你不甘心地倒了下去,"<<endl; cout<<"你死了。"; } int y(int a,int b) { cout<<"你遇到了"<<a<<"只丧尸,需要消耗"<<b<<"颗子弹"<<endl; if(z>=b) { z-=b; cout<<"你打败了丧尸"<<endl; return 1; } else { s(); } } void x11() { if(y(3,5)!=0) { cout<<"你获得了10包食物"<<endl; //x21(); } } void x12() { cout<<"你遇到了一位女幸存者,她邀请你与她同行"<<endl; cout<<"你选择:"<<endl; cout<<"1.与她同行 2.拒绝她"<<endl; r(); if(x=='1') { cout<<"她笑着朝你走来,你现在才发现,她的“条件”极好"<<endl; cout<<"你选择:"<<endl; cout<<"1.向她靠近 2.转身就走"<<endl; r(); } if(x=='2') { cout<<"她瞬间疯狂起来,拿着一把枪朝你冲来"<<endl; cout<<"你选择:"<<endl; cout<<"1.作战 2.逃跑"<<endl; r(); if(x=='1') { if(z>=10) { cout<<"你杀了她,并在之后的战斗中百战百胜,可始终是孤身一人"<<endl; cout<<"你获得了称号:风雨中的孤行者"; } else { s(); } } if(x=='2') { cout<<"女幸存者冷笑一声,在你身后开了一枪……"<<endl; s(); } } } int main() { cout<<"末日来临,丧尸病毒爆发,你此时还在家里呼呼大睡"<<endl; cout<<"你:呼~呼~(睡觉中…………)"<<endl; cout<<"新闻:末日来临,丧尸病毒爆发——啊……(主持人被丧尸吃了)"<<endl; cout<<"你猛然睁眼"<<endl; cout<<"你选择:"<<endl; cout<<"1.继续睡觉 2.立马起床出门 3.立马起床上楼"<<endl; r(); if(x=='1') { cout<<"丧尸突然破门而入,你被丧尸抓住"<<endl; s(); return 0; } if(x=='2') { cout<<"你捡到了一把里面有15发子弹的枪与8块面包"<<endl; z+=15; c+=10; cout<<"你现在要:"<<endl; cout<<"1.进入小巷子 2.走大道 3.上山"<<endl; r(); if(x=='1') { x11(); } if(x=='2') { x12(); } if(x=='3') { cout<<"你来到山上,发现有一座寺庙"<<endl; cout<<"你选择:"<<endl; cout<<"1.静观其变 2.进入寺庙"; r(); } } if(x=='3') { cout<<"你发现了一把带20发子弹的枪与10块面包"<<endl; z+=20; c+=10; cout<<"你出门了"<<endl; cout<<"你选择:"<<endl; cout<<"1.进入小巷子 2.走大道 3.上山"<<endl; r(); if(x=='1') { x11(); } if(x=='2') { x12(); } if(x=='3') { cout<<"你来到山上,发现有一座寺庙"<<endl; cout<<"你选择:"<<endl; cout<<"1.静观其变 2.进入寺庙"; r(); } } return 0; }
- 倒计时
-
通过的题目
-
最近活动
题目标签
- 初窥门径
- 44
- 顺序结构
- 36
- 略有小成
- 13
- 一维数组
- 12
- 驾轻就熟
- 12
- 搜索
- 8
- 枚举
- 8
- 字符串
- 7
- 电子学会三级
- 7
- 循环嵌套
- 7
- 模拟
- 6
- 分支结构
- 4
- 循环结构
- 4
- 电子学会二级
- 4
- 202303
- 1
- 蓝桥杯
- 1
- 融会贯通
- 1
- 进制转换
- 1
- GESP四级
- 1
- GESP一级
- 1