人机打怪小游戏(非常人机)
按q攻击 按箭头进行控制 玩家是@ 怪是* 攻击是^
#include<bits/stdc++.h>
#include<Windows.h>
#include<conio.h>
#define fr(i,a,b) for(int i=a;i<=b;i++)
#define rd(a,b) rand()%(b-a+1)+a
using namespace std;
int x=16,y=21,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1},timeand,defe,times_q;
int b[2][1100000],q1=1,z1,times,vik[1100000];
int c[2][1100000],q2=1,z2,vis[1100000];
const int N=30,M=40;
void color(int clr)
{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),clr);
}
void gb_close()
{CONSOLE_CURSOR_INFO cur;cur.dwSize=1;cur.bVisible=FALSE;HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorInfo(handle,&cur);
}
void gb_jump(int x,int y)
{gb_close();COORD pos;pos.X=x;pos.Y=y;HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(handle,pos);gb_close();
}
void print()
{color(11);for(int i=1;i<=M+1;i++){gb_jump(i,1);printf("_");}for(int i=2;i<=N+1;i++){gb_jump(1,i);printf("|");gb_jump(M+1,i);printf("|");}for(int i=2;i<=M;i++){gb_jump(i,N+1);printf("_");}gb_jump(50,15);printf("得分:%d",defe); color(7);
}
void make()
{b[0][++z1]=2;b[1][z1]=rd(2,40);
}
void make2()
{c[0][++z2]=x-1;c[1][z2]=y;
}
void KO()
{system("cls");color(4);printf(" | / _____ \n");printf(" | / / \\ \n");printf(" | / / \\ \n");printf(" | / | | \n");printf(" | / | | \n");printf(" | / | | \n");printf(" | / | | \n");printf(" |/ | | 得分:%d \n",defe/30);printf(" |\\ | | \n");printf(" | \\ | | \n");printf(" | \\ | | \n");printf(" | \\ | | \n");printf(" | \\ | | \n");printf(" | \\ \\ / \n");printf(" | \\ \\ / \n");printf(" | \\ \\____/ \n");color(0);Sleep(100000);exit(0);
}
int main()
{system("mode con cols=3000 lines=200");srand(time(NULL));system("pause");system("cls");printf("选择难度:\n1.入门 2.普通 3.较难 4.地狱\n");int qjqjq;scanf("%d",&qjqjq);if(qjqjq==1){timeand=2e4;}else if(qjqjq==2){timeand=1e4;}else if(qjqjq==3){timeand=5e3;}else if(qjqjq==4){timeand=2e3;}else{system("cls");return 0;}system("cls");printf("开始");Sleep(3000);system("cls");print();gb_jump(y,x);color(6);printf("@");color(7);while(true){if(times_q>=100){system("cls");color(4);printf("吃屎吧!!!!!!!!!!!!!");Sleep(10000000);return 0; }while(!kbhit()){times++;if(times>=timeand){color(6);gb_jump(y,x);printf("@");color(7);defe++;color(11);gb_jump(50,15);printf("得分:%d",defe/30);color(7);times=0;make();for(int i=q1;i<=z1;i++){if(vik[i]){continue;}if(b[0][i]>=N){q1++;gb_jump(b[1][i],b[0][i]);printf(" ");continue;}gb_jump(b[1][i],b[0][i]);printf(" ");b[0][i]++;gb_jump(b[1][i],b[0][i]);if(b[0][i]==x&&b[1][i]==y){KO();}bool flag=0;for(int j=q2;j<=z2;j++){if(vis[j]==0&&b[0][i]==c[0][j]&&b[1][i]==c[1][j]){vik[i]=1;vis[j]=1;flag=1;gb_jump(c[1][j],c[0][j]);printf(" ");break;}}if(!flag){color(13);gb_jump(b[1][i],b[0][i]);printf("*");color(7);}}for(int i=q2;i<=z2;i++){if(vis[i]){continue;}if(c[0][i]<=2){q2++;gb_jump(c[1][i],c[0][i]);printf(" ");continue;}gb_jump(c[1][i],c[0][i]);printf(" ");c[0][i]--;gb_jump(c[1][i],c[0][i]);bool flag2=0;for(int j=q1;j<=z1;j++){if(vik[j]==0&&b[0][j]==c[0][i]&&b[1][j]==c[1][i]){vik[j]=1;vis[i]=1;flag2=1;gb_jump(b[1][i],b[0][i]);printf(" ");break;}}if(!flag2){color(10);printf("^");color(7);}}}}char tsg=getch();if(tsg=='a'){char lk=getch();while(lk!='a'){lk=getch();}continue;}if(tsg=='q'){times_q++;make2();continue;}char k=getch();if(k!=72&&k!=75&&k!=77&&k!=80&&k!='a'&&k!='q'){continue;}gb_jump(y,x);printf(" ");if(k==72){if(x>2){x--;}}if(k==75){if(y>2){y--;}}if(k==77){if(y<M){y++;}}if(k==80){if(x<N){x++;}}gb_jump(y,x);color(6);printf("@");color(7);}return 0;
}