目录

俄罗斯方块(上下左右键控制)

Fly bird

贪吃蛇

吃豆人

迷宫(随机)

打方块

狼人杀(人机)


俄罗斯方块(上下左右键控制)

//上下左右键控制#include#includeint a[24][17],i,j,tim=800,ti=800,shape=0,b,bn,ta[4][4],turn[4][4],nex[4][4],nextshape,add=0,score=0,speed=1,ok=1,mouse=0,best=0;void Place(const int x, const int y){COORD PlaceCursorHere;PlaceCursorHere.X = y;PlaceCursorHere.Y = x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), PlaceCursorHere);return;}void color(int x){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);}void appear(){for(i=3; i<=22; i++) for(j=1; j<=15; j++) if(a[i][j]!=0){Place(i-2,2*j);printf("■");}}void disappear(){for(i=3; i<=22; i++) for(j=1; j=x0&&pt.y>=y0&&pt.x<=x&&pt.y<=y){if(mouse!=0){Sleep(100);return 2;}else return 1;}else return 0;}void button(int x){int m=x*10;if(x<3){Place(22,m);printf("┌┄┄┄┐");Place(23,m);{if(x==0){if(ok!=0) printf("┆开始 ┆");else printf("┆暂停 ┆");}if(x==1) printf("┆重置 ┆");if(x==2) printf("┆退出 ┆");}Place(24,m);printf("└┄┄┄┘");}else{Place(9,m-33);printf("┌┄┄┐");Place(10,m-33);{if(x==4) printf("┆是┆");else printf("┆否┆");}Place(11,m-33);printf("└┄┄┘");}}void menu(int x){int k,l;if(x==0){if(ok!=0){ok=0;return;}else while(1){mouse=GetAsyncKeyState(VK_LBUTTON);Place(9,13);printf("暂停");if(search(7,360,71,390)==2) break;Sleep(50);}Place(9,12);for(j=1; j<=6; j++) printf(" "); //appear();}else{for(i=1; i<=20; i++) for(j=2; j<=30; j++){Place(i,j);printf(" ");}Place(7,2);for(i=1; i<=15; i++) printf("┄");Place(12,2);for(i=1; i<=15; i++) printf("┄");Place(8,6);printf("你想要 ");if(x==1) printf("重置?");if(x==2) printf("exit?");button(4);button(5);while(1){mouse=GetAsyncKeyState(VK_LBUTTON);for(i=0; i<=1; i++){k=search(63+i*80,150,110+i*80,180);if(k!=2){if(k==1) color(15);else color(7);button(i+4);}else{for(l=7; l<=12; l++) for(j=2; j<=30; j++){Place(l,j);printf(" ");}if(i==0){if(x==1) ok=2;else exit(0);}return;}}Sleep(50);}}}void click(){for(i=0; i=speed*100){speed++;ti=ti-200;if(ti<0) ti=0;else{for(i=1; i<=4; i++){Place(9,12);printf("加速!");Sleep(70);Place(9,12);for(j=1; j<=9; j++) printf(" ");Sleep(70);}Sleep(200);}}if(best<score) best=score;appear();Place(12,39);printf("%d",speed);Place(15,39);printf("%d",best);}void replace(){for(i=1; i<=20; i++) for(j=2; j<=30; j++){Place(i,j);printf(" ");}for(i=0; i<=22; i++) for(j=1; j<=15; j++) a[i][j]=0;for(i=1; i<=15; i++) a[23][i]=1;for(i=1; i<=23; i++){a[i][0]=1;a[i][16]=1;}ss();tim=800;ti=800;shape=0;add=0;score=0;speed=1;}void change(int x){int q=0,l;for(l=1; l<=x; l++){for(j=0; j=0; i--){turn[j][q]=ta[i][j];q++;if(q>2+add) q=0;}}for(i=0; i<=3; i++) for(j=0; j1){x--;add=1;}for(i=0; i<=2+add; i++) for(j=x; j2+add) q=0;}add=0;}void next(){srand(time(NULL));b=rand()%7;nextshape=rand()%4;add=0;for(i=3; i<=6; i++) for(j=37; j<=45; j++){Place(i,j);printf(" ");}for(i=0; i<=3; i++) for(j=0; j0&&b!=6){change(nextshape);for(i=0; i<=3; i++) for(j=0; j<=3; j++){nex[i][j]=turn[i][j];if(nex[i][j]==2){Place(i+3,j*2+37);printf("■");}}}else{for(i=0; i<=3; i++) for(j=0; j<=3; j++){nex[i][j]=ta[i][j];if(nex[i][j]==2){Place(i+3,j*2+37);printf("■");}}}}void clear(){int c=0,f=0,l[23],s=0,k;for(i=3; i<=22; i++){l[i]=0;for(j=1; j<=15; j++) c=a[i][j]+c;if(c==15){for(j=1; j=2; k--) for(j=1; j1){score=score+f*5;f--;}f=0;while(s>0){for(i=22; i>=3; i--) if(l[i]==1){Place(i-2,2);for(j=1; j=3; i--) if(l[i]==1){Place(i-2,2);for(j=1; j<=30; j++) printf(" ");}Sleep(70);s--;}for(i=3; i<=22; i++) for(j=1; j<=15; j++){Place(i-2,2*j);printf(" ");}appear();}void control(){int up,down,right,left,c=0,d=0,x,y,no=0,k,l=0,q=0;k=shape;add=0;up=GetAsyncKeyState(VK_UP);down=GetAsyncKeyState(VK_DOWN);right=GetAsyncKeyState(VK_RIGHT);left=GetAsyncKeyState(VK_LEFT);if(down!=0){tim=0;}if(left!=0||right!=0){Sleep(100);disappear();for(i=0; i<=22; i++) for(j=1; j<=15; j++){if(a[i][j]==2&&a[i][j-1]!=1) c++;if(a[i][j]==2&&a[i][j+1]!=1) d++;}for(i=0; i<=22; i++) for(j=1; j<=15; j++) if(left!=0&&c==4&&a[i][j]==2){a[i][j-1]=a[i][j];a[i][j]=0;}for(i=0; i=1; j--) if(right!=0&&d==4&&a[i][j]==2){a[i][j+1]=a[i][j];a[i][j]=0;}appear();}if(up!=0&&bn!=6){Sleep(150);disappear();for(i=0; i<=22; i++){for(j=1; j<=15; j++) if(a[i][j]==2){x=i;no=1;break;}if(no==1) break;}no=0;for(j=1; j<=15; j++){for(i=0; i<=22; i++) if(a[i][j]==2){y=j;no=1;break;}if(no==1) break;}no=0;if(k==1) y--;if(k==2) x--;add=0;if(bn==5){add=1;if(k==0||k==2) x--;if(k==1||k==3) y--;}for(i=0; i<=3; i++) for(j=0; j=0&&bn<5){if(k==0) ta[2][0]=0;if(k==1) ta[0][0]=0;if(k==2) ta[0][2]=0;if(k==3) ta[2][2]=0;}if(bn==5){if(k==0) ta[0][3]=ta[2][0]=ta[2][1]=ta[3][1]=ta[3][0]=0;if(k==1) ta[0][0]=ta[1][0]=ta[0][1]=ta[1][1]=ta[3][3]=0;if(k==2) ta[3][0]=ta[0][2]=ta[0][3]=ta[1][2]=ta[1][3]=0;if(k==3) ta[0][0]=ta[2][2]=ta[2][3]=ta[3][2]=ta[3][3]=0;}for(i=0; i<=2+add; i++) for(j=0; j<=2+add; j++) if(ta[i][j]!=1) l++;if(l==9+add*7){change(1);for(i=0; i<=22; i++) for(j=1; j<=15; j++) if(a[i][j]==2) a[i][j]=0;for(i=0; i<=2+add; i++) for(j=0; j3) shape=0;appear();}}int main(){int k,start,finish,d;printf("┌");for(i=1; i<=15; i++) printf("┄");printf("┐\n");for(i=1; i<=20; i++) printf("┆\n");printf("└");for(i=1; i<=15; i++) printf("┄");printf("┘");for(i=1; i<=20; i++){Place(i,32);printf("┆\n");}Place(2,37);printf("下一个");Place(8,37);printf("得分");Place(14,37);printf("最高分");Place(11,37);printf("速度");for(i=0; i=tim) break;control();click();if(ok==2) break;}if(ok==2) break;disappear();for(i=22; i>=0; i--) for(j=1; j=0; i--) for(j=1; j=0; i--) for(j=1; j<=15; j++) if(a[i][j]==2) a[i][j]=1;break;}tim=ti;appear();}if(ok==2) break;appear();clear();ss();for(i=1; i<=15; i++) if(a[2][i]==1){ok=1;break;}}if(ok==2){ok=0;continue;}for(i=1; i<=20; i++) for(j=2; j<=30; j++){Place(i,j);printf(" ");}Place(9,12);printf("游戏结束!");while(ok==1) click();}return 0;}

Fly bird

#include#include#define PR_Box printf("■")#define PR_Gold printf("★")#define PR_Ag printf("☆")#define PR_FBird printf("Ю")#define PR_DBird printf("Ф")#define PR_Land printf("┳┳┯")#define PR_Bg_TL printf("╔")#define PR_Bg_TR printf("╗")#define PR_Bg_DL printf("╚")#define PR_Bg_DR printf("╝")#define PR_Bg_X printf("═")#define PR_Bg_Y printf("║")#define PR_Blank printf(" ");int Grade=1,C_Gold=0,C_Ag=0,Score=0,Delay_time=1000,Max_blank=9,Distance=18;struct Birds {int x,y;int condition;};Birds*Bird=(Birds*)malloc(sizeof(Birds));struct Bg {int x,y;int l_blank;int reward[9];Bg*pri;Bg*next;};Bg*Bg1=new Bg[sizeof(Bg)];void Position(int x,int y) {COORD pos= {x-1,y-1};HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(Out,pos);}void CreatBird() {Bird->x=41;Bird->y=10;Bird->condition=0;}void CreatBg() {Bg*Bg2=(Bg*)malloc(sizeof(Bg));Bg1->x=90;Bg1->y=8;Bg2->x=Bg1->x+Distance;Bg2->y=9;Bg1->l_blank=Max_blank-Grade;Bg2->l_blank=Max_blank-Grade;Bg1->next=Bg2;Bg1->pri=Bg2;Bg2->next=Bg1;Bg2->pri=Bg1;}void InsertBg(Bg*p) {int temp;Bg*Bgs=(Bg*)malloc(sizeof(Bg));Bgs->x=p->pri->x+Distance;Bgs->l_blank=Max_blank-Grade;srand((int)time(0));temp=rand();if(temp%2==0) {if((temp%4+p->pri->y+Max_blank-Grade)y=p->pri->y+temp%4;else Bgs->y=p->pri->y;} else {if((p->pri->y-temp%4)>2)Bgs->y=p->pri->y-temp%4;else Bgs->y=p->pri->y;}Bgs->pri=p->pri;Bgs->next=p;p->pri->next=Bgs;p->pri=Bgs;}void Check_Bg(Bg*q) {Bg*p=q;int i=0,temp;while(++ix>-4)p=p->next;else {srand((int)time(0));temp=rand();if(temp%2==0) {if((temp%4+p->y+Max_blank-Grade)y=p->y+temp%4;else p->y=p->y;p->x=p->pri->x+Distance;p->l_blank=Max_blank-Grade;} else {if((p->y-temp%4)>2)p->y=p->y-temp%4;else p->y=p->y;p->x=p->pri->x+Distance;p->l_blank=Max_blank-Grade;}}}}void Loop_Bg(Bg*q) {Bg*p=q;int i=0;while(++ix=p->x-1;p=p->next;if(Bird->x==p->x) {Score+=1;if(Score%4==0&&Grade<4)Grade++;}}}void Prt_Bg(Bg*q) {Bg*p=q;int i=0,k,j;while(++ix>0&&p->x<=78) {for(k=2; ky; k++) {Position(p->x+1,k);PR_Box;PR_Box;PR_Blank}Position(p->x,p->y);PR_Box;PR_Box;PR_Box;PR_Blank;Position(p->x,p->y+p->l_blank);PR_Box;PR_Box;PR_Box;PR_Blank;k=k+p->l_blank+1;for(k; kx+1,k);PR_Box;PR_Box;PR_Blank;}Position(p->x,23);for(k=1; knext;if(p->x==0) {for(j=2; jy; j++) {Position(p->x+1,j);PR_Blank;PR_Blank;}Position(p->x+1,p->y);PR_Blank;PR_Blank;PR_Blank;Position(p->x+1,p->y+Max_blank-Grade);PR_Blank;PR_Blank;PR_Blank;j=j+Max_blank-Grade+1;for(j; jx+1,j);PR_Blank;PR_Blank;}}}}void PrtBg() {int i;Position(1,1);PR_Bg_TL;Position(79,1);PR_Bg_TR;Position(1,24);PR_Bg_DL;Position(79,24);PR_Bg_DR;for(i=3; ix,Bird->y-1);PR_Blank;Position(Bird->x,Bird->y);PR_FBird;Position(38,2);printf("Score:%d",Score);}int CheckYN(Bg*q) {Bg*p=q;int i=0;while(++iy>23)return 0;if(Bird->x==p->x&&Bird->yy)return 0;if((Bird->x==p->x||Bird->x==p->x+1||Bird->x==p->x+2)&&Bird->y==p->y)return 0;if(Bird->x==p->x&&Bird->y>p->y+p->l_blank)return 0;if((Bird->x==p->x||Bird->x==p->x+1||Bird->x==p->x+2)&&Bird->y==p->y+p->l_blank)return 0;p=p->next;}return 1;}void Prtfirst() {printf("══════════════════════════════════════\n");printf(" ■■ ■■\n");printf(" ■■ ■■\n");printf(" ■■ ■■\n");printf(" ■■ ■■\n");printf(" ■■ ■■ C++语言版 Flappy Bird\n");printf(" ■■ ■■ 瞎搞人:侦探鼠\n");printf(" ■■ ■■ 瞎搞日期:2019.7.3\n");printf(" ■■ ■■ 耗时:2.46小时\n");printf(" ■■■ ■■ 游戏说明:\n");printf(" ■■ 1-按上箭头使鸟起飞\n");printf(" ■■ 2-等级越高,难度越大!\n");printf(" Ю ■■■\n");printf("\n");printf(" \n\n\n\n\n\n\n\n");printf(" ┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳\n");system("pause");Position(1,1);int i=0;while(i++y=Bird->y+1;if(GetAsyncKeyState(VK_UP)) {Position(Bird->x,Bird->y-1);PR_Blank;Bird->y=Bird->y-4;}while(i++<500);{Sleep(100);}i=0;}Position(38,10);printf("Game Over!");Position(1,25);system("pause");}

贪吃蛇

#include #include #include #include #include  //停顿:Sleep(); #include  //清屏:system("cls");#include  //1:'◎' 2:'⊙' 3:'▲' 4:'◆' 5:'■'using namespace std;int a[100][100], dir[100][100];//string guo[5]={'▲','◆','■','▼','★'};int fx[4][2] = { {0,-1},{1,0},{0,1},{-1,0} }; //ap来记录奖励块的分 int n, m, ff, f = 1, t = 50, T = 50, ap = 10, egg[2], danshu, headx, heady, endx, endy, point = 0, apple = 0, fangx, stopp = 0, panduan = 0;//ff用来判断panduan 0:中途退出;1:咬到自己;2:重置int lastfx;int zuobi = 0;int fff[110][110];string print[4][4] = { {"═","╔","","╚"},{"╝","║","╚",""},{"","╗","═","╝"},{"╗"," ","╔","║"} };void color(int a)//颜色函数{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);}void gotoxy(int x, int y)//位置函数(行为x 列为y){COORD pos;pos.X = 2 * y;pos.Y = x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);}void reset() {system("cls");color(7); printf(" ★"); color(10); printf("贪吃蛇"); color(11); printf("★\n\n"); color(7);printf("⊙打印若有错位请调整窗口大小或按r重输小点的数⊙\n\n请输入场地大小(格式:行数 列数) 推荐(20 20) \n\n>>");scanf("%d%d", &n, &m);system("cls");color(14);for (int i = 1; i <= m; i++) { gotoxy(0, i); printf("※"); gotoxy(n + 1, i); printf("※"); }for (int i = 1; i = 1005) T = 1005; return; }if (ch == 'e' || ch == '6') { T -= 10; if (T = 1005) T = 1005; return; }if (ch == 'k' || ch == '9') { T -= 1; if (T <= 1) T = 2; return; }if (ch == 'r' || ch == '.') { ff = 2; f = 0; panduan = 0; return; }if (ch == 'h' || ch == '8') {zuobi += 1; zuobi %= 2;if (zuobi) { color(12); gotoxy(12, m + 5); printf("作弊可耻!"); gotoxy(m + 4, 0); printf("做了弊还没路走那就救不了你了,乖乖重来吧......"); color(7); }else { printf(""); gotoxy(m + 4, 0); printf(" "); }}if (ch == 'g' || ch == '+') {gotoxy(n + 50, 0);printf("现在切换到地图编辑模式\n\nq/4 为开始放置模式(光标移动过的痕迹会留下障碍物)\n\ne/6 为取消放置障碍物模式\n\nj/0 为橡皮模式(再按一次退出橡皮模式)\n\n按 h/+ 继续游戏\n\n");printf("\n按任意键开始编辑地图");color(13);int x = 1, y = 1, dfx, moshi = 0;ch = getch(); gotoxy(0, 0); gotoxy(1, 1);while (ch != 'h' && ch != '+') {if (ch == 'a' || ch == '1') dfx = 0;else if (ch == 's' || ch == '2') dfx = 1;else if (ch == 'd' || ch == '3') dfx = 2;else if (ch == 'w' || ch == '5') dfx = 3;else dfx = 5;if (ch == 'q' || ch == '4') moshi = 1;if (ch == 'e' || ch == '6') moshi = 0;if (ch == 'j' || ch == '0') if (moshi - 2) moshi = 2; else moshi = 0;if (dfx  0 && x + fx[dfx][0]  0 && y + fx[dfx][1]  0 && x  0 && y = 200) ap = 200; }else { printf("●"); ap = 10; }apple++; apple = apple % 10;gotoxy(n + 2, 0); printf("距离下一个奖励蛋还有 "); color(11); cout < 10) ap -= 3;if (ap != 10) {gotoxy(egg[0], egg[1]);color(ap % 10);printf("★");color(7);}int x, y;x = (headx + fx[fangx][0] - 1 + n) % (n)+1; y = (heady + fx[fangx][1] - 1 + m) % (m)+1;dir[headx][heady] = fangx;if (x == egg[0] && y == egg[1]) {gotoxy(headx, heady); cout << print[lastfx][fangx];dir[headx][heady] = fangx;headx = x; heady = y; a[x][y] = 0;gotoxy(headx, heady); printf("◎");findegg();}else if (a[x][y]) {gotoxy(headx, heady); cout << print[lastfx][fangx];headx = x; heady = y; a[x][y] = 0;gotoxy(headx, heady); printf("◎");gotoxy(endx, endy); printf(""); a[endx][endy] = 1;x = endx; y = endy;endx += fx[dir[x][y]][0]; endx = (endx - 1 + n) % (n)+1;endy += fx[dir[x][y]][1]; endy = (endy - 1 + m) % (m)+1;dir[x][y] = -1;}else if (!zuobi) { f = 0; ff = 1; }dir[headx][heady] = fangx;lastfx = fangx;return;}int main() {while (1) {srand(time(NULL));reset();egg[0] = (rand() % n - 1) + 2; egg[1] = (rand() % m) + 1;a[egg[0]][egg[1]] = 0;gotoxy(egg[0], egg[1]); if (apple) { printf("★"); ap = 100; }else printf("●");while (f) {if (kbhit()) haha();gotoxy(9, m + 5); printf("吃蛋:%d 个", danshu);gotoxy(8, m + 5); printf("速度: %d ", 1005 - T);//while (stopp) {Sleep(10); if (kbhit()) haha();}Sleep(1); t = (t - 1 + T) % T;if (t == 0 && !stopp) dong();gotoxy(7, m + 5); printf("得分:%d 分", point);gotoxy(12, m + 5);}if (!gg()) return 0;}return 0;}

吃豆人

#include #include #include #include #include  //停顿:Sleep(); #include  //清屏:system("cls");#include  //1:'◎' 2:'⊙' 3:'▲' 4:'◆' 5:'■'using namespace std;int a[100][100], dir[100][100];//string guo[5]={'▲','◆','■','▼','★'};int fx[4][2] = { {0,-1},{1,0},{0,1},{-1,0} }; //ap来记录奖励块的分 int n, m, ff, f = 1, t = 50, T = 50, ap = 10, egg[2], danshu, headx, heady, endx, endy, point = 0, apple = 0, fangx, stopp = 0, panduan = 0;//ff用来判断panduan 0:中途退出;1:咬到自己;2:重置int lastfx;int zuobi = 0;int fff[110][110];string print[4][4] = { {"═","╔","","╚"},{"╝","║","╚",""},{"","╗","═","╝"},{"╗"," ","╔","║"} };void color(int a)//颜色函数{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);}void gotoxy(int x, int y)//位置函数(行为x 列为y){COORD pos;pos.X = 2 * y;pos.Y = x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);}void reset() {system("cls");color(7); printf(" ★"); color(10); printf("贪吃蛇"); color(11); printf("★\n\n"); color(7);printf("⊙打印若有错位请调整窗口大小或按r重输小点的数⊙\n\n请输入场地大小(格式:行数 列数) 推荐(20 20) \n\n>>");scanf("%d%d", &n, &m);system("cls");color(14);for (int i = 1; i <= m; i++) { gotoxy(0, i); printf("※"); gotoxy(n + 1, i); printf("※"); }for (int i = 1; i = 1005) T = 1005; return; }if (ch == 'e' || ch == '6') { T -= 10; if (T = 1005) T = 1005; return; }if (ch == 'k' || ch == '9') { T -= 1; if (T <= 1) T = 2; return; }if (ch == 'r' || ch == '.') { ff = 2; f = 0; panduan = 0; return; }if (ch == 'h' || ch == '8') {zuobi += 1; zuobi %= 2;if (zuobi) { color(12); gotoxy(12, m + 5); printf("作弊可耻!"); gotoxy(m + 4, 0); printf("做了弊还没路走那就救不了你了,乖乖重来吧......"); color(7); }else { printf(""); gotoxy(m + 4, 0); printf(" "); }}if (ch == 'g' || ch == '+') {gotoxy(n + 50, 0);printf("现在切换到地图编辑模式\n\nq/4 为开始放置模式(光标移动过的痕迹会留下障碍物)\n\ne/6 为取消放置障碍物模式\n\nj/0 为橡皮模式(再按一次退出橡皮模式)\n\n按 h/+ 继续游戏\n\n");printf("\n按任意键开始编辑地图");color(13);int x = 1, y = 1, dfx, moshi = 0;ch = getch(); gotoxy(0, 0); gotoxy(1, 1);while (ch != 'h' && ch != '+') {if (ch == 'a' || ch == '1') dfx = 0;else if (ch == 's' || ch == '2') dfx = 1;else if (ch == 'd' || ch == '3') dfx = 2;else if (ch == 'w' || ch == '5') dfx = 3;else dfx = 5;if (ch == 'q' || ch == '4') moshi = 1;if (ch == 'e' || ch == '6') moshi = 0;if (ch == 'j' || ch == '0') if (moshi - 2) moshi = 2; else moshi = 0;if (dfx  0 && x + fx[dfx][0]  0 && y + fx[dfx][1]  0 && x  0 && y = 200) ap = 200; }else { printf("●"); ap = 10; }apple++; apple = apple % 10;gotoxy(n + 2, 0); printf("距离下一个奖励蛋还有 "); color(11); cout < 10) ap -= 3;if (ap != 10) {gotoxy(egg[0], egg[1]);color(ap % 10);printf("★");color(7);}int x, y;x = (headx + fx[fangx][0] - 1 + n) % (n)+1; y = (heady + fx[fangx][1] - 1 + m) % (m)+1;dir[headx][heady] = fangx;if (x == egg[0] && y == egg[1]) {gotoxy(headx, heady); cout << print[lastfx][fangx];dir[headx][heady] = fangx;headx = x; heady = y; a[x][y] = 0;gotoxy(headx, heady); printf("◎");findegg();}else if (a[x][y]) {gotoxy(headx, heady); cout << print[lastfx][fangx];headx = x; heady = y; a[x][y] = 0;gotoxy(headx, heady); printf("◎");gotoxy(endx, endy); printf(""); a[endx][endy] = 1;x = endx; y = endy;endx += fx[dir[x][y]][0]; endx = (endx - 1 + n) % (n)+1;endy += fx[dir[x][y]][1]; endy = (endy - 1 + m) % (m)+1;dir[x][y] = -1;}else if (!zuobi) { f = 0; ff = 1; }dir[headx][heady] = fangx;lastfx = fangx;return;}int main() {while (1) {srand(time(NULL));reset();egg[0] = (rand() % n - 1) + 2; egg[1] = (rand() % m) + 1;a[egg[0]][egg[1]] = 0;gotoxy(egg[0], egg[1]); if (apple) { printf("★"); ap = 100; }else printf("●");while (f) {if (kbhit()) haha();gotoxy(9, m + 5); printf("吃蛋:%d 个", danshu);gotoxy(8, m + 5); printf("速度: %d ", 1005 - T);//while (stopp) {Sleep(10); if (kbhit()) haha();}Sleep(1); t = (t - 1 + T) % T;if (t == 0 && !stopp) dong();gotoxy(7, m + 5); printf("得分:%d 分", point);gotoxy(12, m + 5);}if (!gg()) return 0;}return 0;}

迷宫(随机)

#include #include #include #include #define Height 25 //迷宫的高度,必须为奇数#define Width 25 //迷宫的宽度,必须为奇数#define Wall 1#define Road 0#define Start 2#define End 3#define Esc 5#define Up 1#define Down 2#define Left 3#define Right 4int map[Height+2][Width+2];void gotoxy(int x,int y) { //移动坐标COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );}void hidden() { //隐藏光标HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);}void create(int x,int y) { //随机生成迷int c[4][2]= {0,1,1,0,0,-1,-1,0}; //四个方向int i,j,t;//将方向打乱for(i=0; i<4; i++) {j=rand()%4;t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;}map[x][y]=Road;for(i=0; i<4; i++)if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) {map[x+c[i][0]][y+c[i][1]]=Road;create(x+2*c[i][0],y+2*c[i][1]);}}int get_key() { //接收按键char c;while(c=getch()) {if(c==27) return Esc; //Escif(c!=-32)continue;c=getch();if(c==72) return Up; //上if(c==80) return Down; //下if(c==75) return Left; //左if(c==77) return Right; //右}return 0;}void paint(int x,int y) { //画迷宫gotoxy(2*y-2,x-1);switch(map[x][y]) {case Start:printf("入");break; //画入口case End:printf("出");break; //画出口case Wall:printf("▇");break; //画墙case Road:printf("");break; //画路}}void game() {int x=2,y=1; //玩家当前位置,刚开始在入口处int c; //用来接收按键while(1) {gotoxy(2*y-2,x-1);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);printf("▇▇"); //画出玩家当前位置SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_GREEN);if(map[x][y]==End) { //判断是否到达出口gotoxy(30,24);printf("到达终点,按任意键结束");getch();break;}c=get_key();if(c==Esc) {gotoxy(0,24);break;}switch(c) {case Up: //向上走if(map[x-1][y]!=Wall) {paint(x,y);x--;}break;case Down: //向下走if(map[x+1][y]!=Wall) {paint(x,y);x++;}break;case Left: //向左走if(map[x][y-1]!=Wall) {paint(x,y);y--;}break;case Right: //向右走if(map[x][y+1]!=Wall) {paint(x,y);y++;}break;}}}int main() {int i,j;srand((unsigned)time(NULL)); //初始化随即种子hidden(); //隐藏光标for(i=0; i<=Height+1; i++)for(j=0; j<=Width+1; j++)if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫map[i][j]=Road;else map[i][j]=Wall;create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数for(i=0; i<=Height+1; i++) { //边界处理map[i][0]=Wall;map[i][Width+1]=Wall;}for(j=0; j<=Width+1; j++) { //边界处理map[0][j]=Wall;map[Height+1][j]=Wall;}map[2][1]=Start; //给定入口map[Height-1][Width]=End; //给定出口for(i=1; i<=Height; i++)for(j=1; j<=Width; j++) //画出迷宫paint(i,j);game(); //开始游戏getch();return 0;}

打方块

#include//打方块 Windows10#includeusing namespace std;int fen,mb[10][18],leaf;void kg(int a) {for(int i=0; i2&&x<11) {go(x-1,y+1);cout<<"■■■";} else if(x==2) {go(x,y+1);cout<<"■■";} else if(x==11) {go(x-1,y+1);cout<<"■■";} else;if(a)for(int i=0; i2&&x<11) {go(x-1,y+1);kg(6);} else if(x==2) {go(x,y+1);kg(4);} else if(x==11) {go(x-1,y+1);kg(4);} else;go(14,5);kg(4);cout<<"\b\b\b\b"<<fen;if(a)for(int i=0; i<18; i++) {go(2,i+2);for(int o=0; o<10; o++) {if(mb[o][i])cout<<"■";else kg(2);}}}void sj(int x) {int i;for(i=19;; i--) {go(x,i);cout<<"■";Sleep(10);cout<<"\b\b";kg(2);if(i<3)break;if(mb[x-2][i-3]==1)break;}mb[x-2][i-2]=1;go(x,i);cout<<"■";fen-=10;for(int o=0; o<10; o++)if(mb[o][i-2]==0)return;for(int o=0; o<10; o++)mb[o][i-2]=0;for(int o=i-2; o<17; o++)for(int j=0; j<10; j++)mb[j][o]=mb[j][o+1];for(int o=0; o<10; o++)mb[o][17]=0;printtu(x,20,1);fen+=100;}void mouse(int &x,int &y) {POINT p;HWND h=GetForegroundWindow();GetCursorPos(&p);ScreenToClient(h,&p);x=p.x;y=p.y;}void m(int wt) {lkr:;fen=-500;leaf=8;srand(time(0));system("mode con cols=33 lines=24");system("cls");cout<<"┌ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┐"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆ 分数"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆ 生命"<<endl;cout<<"┆ ";kg(20);cout<<"┆ ";printf("%c %c %c %c\n",3,3,3,3);cout<<"┆ ";kg(20);cout<<"┆ ";printf("%c %c %c %c\n",3,3,3,3);cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"┆ ";kg(20);cout<<"┆"<<endl;cout<<"└ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┄ ┘"<<endl;lk:;for(int i=0; i<10; i++)for(int o=0; o<18; o++)mb[i][o]=0;int x=6;for(int i=wt*10;;) {if(i<wt*10)goto asd;for(int i=0; i<10; i++)for(int o=0; o<18; o++)if(mb[i][o]!=0)goto qwe;fen+=500;qwe:;for(int o=0; o0; o--)for(int j=0; j<10; j++)mb[j][o]=mb[j][o-1];for(int o=0; o<10; o++)mb[o][0]=rand()%2;asd:;if(GetAsyncKeyState(VK_RIGHT)!=0&&x2)x--;if(GetAsyncKeyState(VK_UP)!=0)sj(x);printtu(x,20,i>=wt*10);if(i<wt*10)i++;else i=1;}as:;for(int i=2; i<22; i++) {go(2,i);kg(20);}fen-=600;switch(leaf) {case 1:go(13,8);cout<<' '<<' ';break;case 2:leaf--;go(14,8);cout<<' '<<' ';goto lk;case 3:leaf--;go(15,8);cout<<' '<<' ';goto lk;case 4:leaf--;go(16,8);cout<<' '<<' ';goto lk;case 5:leaf--;go(13,9);cout<<' '<<' ';goto lk;case 6:leaf--;go(14,9);cout<<' '<<' ';goto lk;case 7:leaf--;go(15,9);cout<<' '<<' ';goto lk;case 8:leaf--;go(16,9);cout<<' '<<' ';goto lk;}go(5,7);cout<<"你输了!";go(3,8);cout<<" ┆ 再来[R]┆ ┆ 返回[E]┆";for(;;) {if(GetAsyncKeyState('R')!=0||GetAsyncKeyState('r')!=0)goto lkr;if(GetAsyncKeyState('E')!=0||GetAsyncKeyState('e')!=0)return;}}void dafangkuai() {}int main() {SetConsoleTitle("打方块Windows10");int q=3;a:;system("mode con cols=80 lines=25");system("cls");bool jh[8][27]= {0,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,1,1,1,0,0,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,1,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0};for(int i=2; i<10; i++) {go(7,i);for(int o=0; o<27; o++) {if(jh[i-2][o])cout<<"■";else cout<<' '<<' ';}}go(17,11);cout<<"|开始游戏|";go(17,13);cout<<"|设置游戏|";go(17,15);cout<<"|游戏规则|";go(17,17);cout<<"|退出游戏|";go(1,23);cout<<"[L]确定";int y=1;for(;;) {if(GetAsyncKeyState(VK_DOWN)!=0)y+=((y==4)?-3:1);if(GetAsyncKeyState(VK_UP)!=0)y-=((y==1)?-3:1);if(GetAsyncKeyState('l')!=0||GetAsyncKeyState('L')!=0)switch(y) {case 1:system("cls");m(q);goto a;case 2:system("cls");go(16,11);cout<<' '<<q<<"秒增加一行";go(16,10);printf("[%c]",30);go(16,12);printf("[%c]",31);go(1,23);cout<<"[K]确定";for(;;) {if(GetAsyncKeyState(VK_UP)!=0&&q<9) {q++;go(16,11);cout<<' '<1) {q--;go(16,11);cout<<' '<<q;}if(GetAsyncKeyState('k')!=0||GetAsyncKeyState('K')!=0)goto a;Sleep(100);}case 3:MessageBox(0,"点确定浏览规则" ,"规则",MB_OK);MessageBox(0,"←→控制炮台","规则",MB_OK);MessageBox(0,"满一行即消除","规则",MB_OK);MessageBox(0,"每消除一行+100","规则",MB_OK);MessageBox(0,"少一条命-100","规则",MB_OK);MessageBox(0,"全部消除+500","规则",MB_OK);MessageBox(0,"发射一炮-10","规则",MB_OK);case 4:return 0;}go(16,11);cout<<' '<<' ';go(22,11);cout<<' ';go(16,13);cout<<' '<<' ';go(22,13);cout<<' ';go(16,15);cout<<' '<<' ';go(22,15);cout<<' ';go(16,17);cout<<' '<<' ';go(22,17);cout<<' ';go(16,9+2*y);cout<<' '<';go(22,9+2*y);cout<<'<';Sleep(100);}}

狼人杀(人机)

#includeusing namespace std;int life[7]={1,1,1,1,1,1};int potions[5]={-1,1};int vote[7]={0};string name[7]={"预言家","女巫","平民","平民","狼人","狼人"}; int seer(int x,int y,int n,int p1,int p2,int l1,int l2){int rescued;int die;int die_potions;bool gameover=false;while(gameover==false){cout<<endl<<"下一天:----------------------------"<<endl;for(int i=1;i=0 or life[l2]>=0)){cout<<"狼人:"<<endl;srand((unsigned)time(NULL)); die=rand()%6;while(name[die]=="狼人"||life[die]==-1) die=rand()%6;life[die]--;cout<<"狼人杀了"<<name[die]<=0){cout<<"预言家:"<<endl;cout<<"你是预言家,请输入0~5的编号(代表相应的人)(除了"<<x<<"号)来预言"<>res;if(name[res]=="平民"||name[res]=="女巫"||name[res]=="预言家") cout<<"好人"<<endl; if(name[res]=="狼人") cout<<"坏人"<=0){cout<<"女巫:"<<endl;int dor;srand((unsigned)time(NULL)); dor=rand()%3;if(dor==0){die_potions=rand()%6;while(name[die_potions]=="女巫"||life[die_potions]<=0) die_potions=rand()%6;life[die_potions]--;potions[dor]++;cout<<"女巫杀了"<<name[die_potions]<<endl;}if(dor==1){int help;for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;potions[dor]--;cout<<"女巫救了"<<name[help]<<endl;}if(dor==2){cout<<"没用药"<<endl; }}if(i==4){int sum_die=0;cout<<"今晚";for(int j=0;j<6;j++){if(life[j]==0) {sum_die++;life[j]--;cout<<j<<"号"<<name[j]<<"死了"; }} if(sum_die==0) cout<<"是平安夜";int fl=0,fp=0;for(int j=0;j<6;j++){if(life[j]==1){if(name[j]=="狼人") fl++;else fp++;}}if(fl==0) {cout<<endl<<"平民赢了"<<endl; gameover=true;continue;}if(fp==0){cout<<endl<<"狼人赢了"<<endl;gameover=true; continue;}cout<<endl<<"投票"<<endl; int a[7]={0,0,0,0,0,0};for(int j=0;j<6;j++){if(j==x&&life[x]==1) {cout<>ps;a[ps]++; }else if(life[j]==1){srand((unsigned)time(NULL)); int cs;cs=rand()%6;while(life[cs]!=1||cs==j) cs=rand()%6;a[cs]++;}}cout<<"投票结果:"<<endl;cout<<"0 1 2 3 4 5"<<endl;for(int j=0;j<6;j++) cout<=max) max=a[j],mp=j;cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;life[mp]=-1; int good=0,bad=0;for(int j=0;j<6;j++){if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;if(life[j]==1&&name[j]=="狼人") bad++;}if(bad==0) {cout<<"平民赢了"<<endl;gameover=true;}if(good==0) {cout<<"狼人赢了"<<endl;gameover=true;}}}system("pause");}return 0;}int Lycan(int x,int y,int n,int p1,int p2,int l1,int l2){int rescued;int die;int die_potions;bool gameover=false;while(gameover==false){cout<<endl<<"下一天:----------------------------"<<endl;for(int i=1;i=0){cout<<"狼人:"<<endl;cout<<"你是狼人,请输入0~5的编号(代表相应的人)(除了"<<x<<"和"<<l1+l2-x<<"号)来杀死"<>die;life[die]--;cout<<"狼人杀了"<<name[die]<=0){cout<<"狼人:"<<endl;srand((unsigned)time(NULL)); die=rand()%6;while(name[die]=="狼人"||life[die]==-1) die=rand()%6;life[die]--;cout<<"狼人杀了"<<name[die]<=0){cout<<"预言家:"<<endl;cout<<"预言完毕"<=0){cout<<"女巫:"<<endl;int dor;srand((unsigned)time(NULL)); dor=rand()%3;if(dor==0){die_potions=rand()%6;while(name[die_potions]=="女巫"||life[die_potions]<=0) die_potions=rand()%6;life[die_potions]--;potions[dor]++;cout<<"女巫杀了"<<name[die_potions]<<endl;}if(dor==1){int help;for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;potions[dor]--;cout<<"女巫救了"<<name[help]<<endl;}if(dor==2){cout<<"没用药"<<endl; }}if(i==4){int sum_die=0;cout<<"今晚";for(int j=0;j<6;j++){if(life[j]==0) {sum_die++;life[j]--;cout<<j<<"号"<<name[j]<<"死了"; }} if(sum_die==0) cout<<"是平安夜";int fl=0,fp=0;for(int j=0;j<6;j++){if(life[j]==1){if(name[j]=="狼人") fl++;else fp++;}}if(fl==0) {cout<<endl<<"平民赢了"<<endl; gameover=true;continue;}if(fp==0){cout<<endl<<"狼人赢了"<<endl;gameover=true; continue;}cout<<endl<<"投票"<<endl; int a[7]={0,0,0,0,0,0};for(int j=0;j<6;j++){if(j==x&&life[x]==1) {cout<>ps;a[ps]++; }else if(life[j]==1){srand((unsigned)time(NULL)); int cs;cs=rand()%6;while(life[cs]!=1||cs==j) cs=rand()%6;a[cs]++;}}cout<<"投票结果:"<<endl;cout<<"0 1 2 3 4 5"<<endl;for(int j=0;j<6;j++) cout<=max) max=a[j],mp=j;cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;life[mp]=-1; int good=0,bad=0;for(int j=0;j<6;j++){if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;if(life[j]==1&&name[j]=="狼人") bad++;}if(bad==0) {cout<<"平民赢了"<<endl;gameover=true;}if(good==0) {cout<<"狼人赢了"<<endl;gameover=true;}}}system("pause");}return 0;}int witch(int x,int y,int n,int p1,int p2,int l1,int l2){int rescued;int die;int die_potions;bool gameover=false;while(gameover==false){cout<<endl<<"下一天:----------------------------"<<endl;for(int i=1;i=0 or life[l2]>=0)){cout<<"狼人:"<<endl;srand((unsigned)time(NULL)); die=rand()%6;while(name[die]=="狼人"||life[die]==-1) die=rand()%6;life[die]--;cout<<"狼人杀了"<<name[die]<=0){cout<<"预言家:"<<endl;cout<<"预言完毕"<=0){cout<<"女巫:"<<endl;cout<<"你是女巫,请输入d、r、n。d代表要杀、r代表要救,n代表不用药"<>dor;if(dor=='d'){cout<<"请输入0~5号你要杀的人(除了"<<n<<"号)"<>die_potions;life[die_potions]--;potions[0]++;cout<<"女巫杀了"<<name[die_potions]<<endl;}if(dor=='r'){int help;for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;potions[1]--;cout<<"女巫救了"<<name[help]<<endl;}if(dor=='n'){cout<<"没用药"<<endl; }}if(i==4){int sum_die=0;cout<<"今晚";for(int j=0;j<6;j++){if(life[j]==0) {sum_die++;life[j]--;cout<<j<<"号"<<name[j]<<"死了"; }} if(sum_die==0) cout<<"是平安夜";int fl=0,fp=0;for(int j=0;j<6;j++){if(life[j]==1){if(name[j]=="狼人") fl++;else fp++;}}if(fl==0) {cout<<endl<<"平民赢了"<<endl; gameover=true;continue;}if(fp==0){cout<<endl<<"狼人赢了"<<endl;gameover=true; continue;}cout<<endl<<"投票"<<endl; int a[7]={0,0,0,0,0,0};for(int j=0;j<6;j++){if(j==x&&life[x]==1) {cout<>ps;a[ps]++; }else if(life[j]==1){srand((unsigned)time(NULL)); int cs;cs=rand()%6;while(life[cs]!=1||cs==j) cs=rand()%6;a[cs]++;}}cout<<"投票结果:"<<endl;cout<<"0 1 2 3 4 5"<<endl;for(int j=0;j<6;j++) cout<=max) max=a[j],mp=j;cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;life[mp]=-1; int good=0,bad=0;for(int j=0;j<6;j++){if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;if(life[j]==1&&name[j]=="狼人") bad++;}if(bad==0) {cout<<"平民赢了"<<endl;gameover=true;}if(good==0) {cout<<"狼人赢了"<<endl;gameover=true;}}}system("pause");}return 0;}int commoner(int x,int y,int n,int p1,int p2,int l1,int l2){int rescued;int die;int die_potions;bool gameover=false;while(gameover==false){cout<<endl<<"下一天:----------------------------"<<endl;for(int i=1;i=0 or life[l2]>=0)){cout<<"狼人:"<<endl;srand((unsigned)time(NULL)); die=rand()%6;while(name[die]=="狼人"||life[die]==-1) die=rand()%6;life[die]--;cout<<"狼人杀了"<<name[die]<=0){cout<<"预言家:"<<endl;cout<<"预言完毕"<=0){cout<<"女巫:"<<endl;int dor;srand((unsigned)time(NULL)); dor=rand()%3;if(dor==0){die_potions=rand()%6;while(name[die_potions]=="女巫"||life[die_potions]<=0) die_potions=rand()%6;life[die_potions]--;potions[dor]++;cout<<"女巫杀了"<<name[die_potions]<<endl;}if(dor==1){int help;for(int i=0;i<6;i++) if(life[i]==0) life[i]++,help=i;potions[dor]--;cout<<"女巫救了"<<name[help]<<endl;}if(dor==2){cout<<"没用药"<<endl; }}if(i==4){int sum_die=0;cout<<"今晚";for(int j=0;j<6;j++){if(life[j]==0) {sum_die++;life[j]--;cout<<j<<"号"<<name[j]<<"死了"; }} if(sum_die==0) cout<<"是平安夜";int fl=0,fp=0;for(int j=0;j<6;j++){if(life[j]==1){if(name[j]=="狼人") fl++;else fp++;}}if(fl==0) {cout<<endl<<"平民赢了"<<endl; gameover=true;continue;}if(fp==0){cout<<endl<<"狼人赢了"<<endl;gameover=true; continue;}cout<<endl<<"投票"<<endl; int a[7]={0,0,0,0,0,0};for(int j=0;j<6;j++){if(j==x&&life[x]==1) {cout<>ps;a[ps]++; }else if(life[j]==1){srand((unsigned)time(NULL)); int cs;cs=rand()%6;while(life[cs]!=1||cs==j) cs=rand()%6;a[cs]++;}}cout<<"投票结果:"<<endl;cout<<"0 1 2 3 4 5"<<endl;for(int j=0;j<6;j++) cout<=max) max=a[j],mp=j;cout<<mp<<"号"<<name[mp]<<"出局"<<endl<<endl;life[mp]=-1; int good=0,bad=0;for(int j=0;j<6;j++){if(life[j]==1&&(name[j]=="平民"||name[j]=="女巫"||name[j]=="预言家")) good++;if(life[j]==1&&name[j]=="狼人") bad++;}if(bad==0) {cout<<"平民赢了"<<endl;gameover=true;}if(good==0) {cout<<"狼人赢了"<<endl;gameover=true;}}}system("pause");}return 0;}int main(){begin:cout<<"狼人杀"<<endl;cout<<"1个预言家 1个女巫 2个平民 2个狼人"<<endl;srand((unsigned)time(NULL)); for(int i=1;i<=1000;i++){int x=rand()%6; int y=rand()%6;swap(name[x],name[y]);}int player=rand()%6;cout<<"你是"<<name[player]<<endl<<"您的编号是"<<player<<endl<<endl;int l1,l2,l=1;int y;int n;int p1,p2,p=1;for(int i=0;i<6;i++){if(name[i]=="狼人"&&l==1) {l1=i;l++;continue;}if(name[i]=="狼人"&&l==2) l2=i,l++;if(name[i]=="预言家") y=i;if(name[i]=="女巫") n=i;if(name[i]=="平民"&&p==1) {p1=i;p++;continue;}if(name[i]=="平民"&&p==2) p2=i,p++;}if(player==y) seer(player,y,n,p1,p2,l1,l2);if(player==l1 or player==l2) Lycan(player,y,n,p1,p2,l1,l2);if(player==n) witch(player,y,n,p1,p2,l1,l2);if(player==p1 or player==p2) commoner(player,y,n,p1,p2,l1,l2);else return 0;}