目录

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

Fly bird

贪吃蛇

吃豆人

迷宫(随机)

打方块

狼人杀(人机)


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

//上下左右键控制
#include<bits/stdc++.h>
#include<windows.h>
int 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<=15; j++) if(a[i][j]==2){Place(i-2,2*j);printf(" ");}
}
int search(int x0,int y0,int x,int y)
{
POINT pt;
HWND h=GetForegroundWindow();
GetCursorPos(&pt);
ScreenToClient(h,&pt);
if(pt.x>=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<=2; i++)
{mouse=GetAsyncKeyState(VK_LBUTTON);int k=search(i*80+7,360,i*80+71,390);if(k!=2){if(k==1) color(15);else color(7);button(i);color(7);}else{menu(i);return;}
}
Sleep(50);
}
void ss()
{
Place(9,39);
printf("%d",score);
if(score>=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<=2+add; j++){for(i=2+add; i>=0; i--){turn[j][q]=ta[i][j];q++;if(q>2+add) q=0;}}for(i=0; i<=3; i++) for(j=0; j<=3; j++) ta[i][j]=turn[i][j];
}
}
void born()
{
int x,q=0;
srand(time(NULL));
bn=b;
shape=nextshape;
x=rand()%12+1;
if(b==5&&x>1)
{x--;add=1;
}
for(i=0; i<=2+add; i++) for(j=x; j<=x+2+add; j++){a[i][j]=nex[i][q];q++;if(q>2+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; j<=3; j++) nex[i][j]=turn[i][j]=ta[i][j]=0;
ta[1][1]=2;
if(b==0) ta[1][2]=ta[1][0]=ta[0][1]=2;
if(b==1) ta[1][2]=ta[1][0]=ta[0][0]=2;
if(b==2) ta[1][2]=ta[1][0]=ta[0][2]=2;
if(b==3) ta[1][0]=ta[0][1]=ta[0][2]=2;
if(b==4) ta[0][0]=ta[0][1]=ta[1][2]=2;
if(b==5)
{ta[1][0]=ta[1][2]=ta[1][3]=2;add=1;
}
if(b==6) ta[0][0]=ta[0][1]=ta[1][0]=2;
if(nextshape>0&&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<=15; j++) a[i][j]=0;for(k=i-1; k>=2; k--) for(j=1; j<=15; j++) a[k+1][j]=a[k][j];f++;l[i]=1;s=5;}c=0;
}
score=score+f*10;
while(f>1)
{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<=15; j++) printf("■");}Sleep(70);for(i=22; i>=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<=22; i++) for(j=15; j>=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<=3; j++) ta[i][j]=a[x+i][y+j];if(bn>=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; j<=2+add; j++) if(turn[i][j]==2) a[x+i][y+j]=turn[i][j];shape++;}if(shape>3) 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<=2; i++) button(i);
while(ok==1) click();
while(ok!=1)
{replace();next();while(1){born();next();while(1){appear();k=0;start=clock();while(1){finish=clock();d=finish-start;if(d>=tim) break;control();click();if(ok==2) break;}if(ok==2) break;disappear();for(i=22; i>=0; i--) for(j=1; j<=15; j++) if(a[i][j]==2&&a[i+1][j]!=1) k++;if(k==4){for(i=22; i>=0; i--) for(j=1; j<=15; j++) if(a[i][j]==2){a[i+1][j]=2;a[i][j]=0;}}else{for(i=22; i>=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<bits/stdc++.h>
#include<Windows.h>
#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)<21)Bgs->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(++i<=5) {if(p->x>-4)p=p->next;else {srand((int)time(0));temp=rand();if(temp%2==0) {if((temp%4+p->y+Max_blank-Grade)<21)p->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(++i<=5) {p->x=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(++i<=5) {if(p->x>0&&p->x<=78) {for(k=2; k<p->y; 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; k<=22; k++) {Position(p->x+1,k);PR_Box;PR_Box;PR_Blank;}Position(p->x,23);for(k=1; k<Distance/3-2; k++)PR_Land;}p=p->next;if(p->x==0) {for(j=2; j<p->y; 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; j<=22; j++) {Position(p->x+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; i<=78; i+=2) {Position(i,1);PR_Bg_X;Position(i,24);PR_Bg_X;
}
}
void PrtBird() {
Position(Bird->x,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(++i<=5) {if(Bird->y>23)return 0;if(Bird->x==p->x&&Bird->y<=p->y)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++<40*25)PR_Blank;
}
int main() {
int i=0;
char ch;
Prtfirst();
PrtBg();
CreatBg();
InsertBg(Bg1);
InsertBg(Bg1);
InsertBg(Bg1);
CreatBird();
while(1) {if(!CheckYN(Bg1))break;Check_Bg(Bg1);Prt_Bg(Bg1);PrtBird();Loop_Bg(Bg1);Bird->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 <cstdio>
#include <iostream>
#include <ctime>
#include <conio.h>
#include <windows.h>       //停顿:Sleep();
#include <cstdlib>         //清屏:system("cls");
#include <cstring>         //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 <= n; i++) { gotoxy(i, 0); printf("※"); gotoxy(i, m + 1); printf("※"); }
color(10);
memset(fff, 0, sizeof(fff));
gotoxy(0, 0); printf("┍");
gotoxy(n + 1, 0); printf("┕");
gotoxy(0, m + 1); printf("┑");
gotoxy(n + 1, m + 1); printf("┙");
color(7);
gotoxy(0, m + 5); printf("方向:a/s/d/w | 1/2/3/5");
gotoxy(1, m + 5); printf("暂停:p       |       0");
gotoxy(2, m + 5); printf("减速:q/j     |     4/7");
gotoxy(3, m + 5); printf("加速:e/k     |     6/9");
gotoxy(4, m + 5); printf("重置:r       |       .");
gotoxy(5, m + 5); printf("地图:h       |       +");
headx = endx = endy = 1; heady = 3;
f = 1; ff = 3;
memset(a, 1, sizeof(a));
memset(dir, 0, sizeof(dir));
a[1][1] = a[1][2] = a[1][3] = 0;
gotoxy(1, 1); printf("⊙");
gotoxy(1, 2); printf("⊙");
gotoxy(1, 3); printf("◎");
dir[1][1] = dir[1][2] = dir[1][3] = 2;
apple = 0; fangx = 2; point = 0; danshu = 0; lastfx = 2; stopp = 0;
if (zuobi) { color(12); gotoxy(12, m + 5); printf("作弊可耻!"); gotoxy(m + 4, 0); printf("做了弊还没路走那就救不了你了,乖乖重来吧......"); color(7); }
}
void haha() {
char ch = getch();
if ((ch == 'a' || ch == '1') && dir[headx][heady] != 2) { fangx = 0; return; }
if ((ch == 's' || ch == '2') && dir[headx][heady] != 3) { fangx = 1; return; }
if ((ch == 'd' || ch == '3') && dir[headx][heady] != 0) { fangx = 2; return; }
if ((ch == 'w' || ch == '5') && dir[headx][heady] != 1) { fangx = 3; return; }
if (ch == 'p' || ch == '0') { stopp = (stopp + 1) % 2; return; }
if (ch == 'q' || ch == '4') { T += 10; if (T >= 1005) T = 1005; return; }
if (ch == 'e' || ch == '6') { T -= 10; if (T <= 1) T = 2; return; }
if (ch == 'j' || ch == '7') { T += 1; 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 <= 4) {if (x + fx[dfx][0] > 0 && x + fx[dfx][0] <= n && y + fx[dfx][1] > 0 && y + fx[dfx][1] <= m) { x += fx[dfx][0]; y += fx[dfx][1]; }if (x > 0 && x <= n && y > 0 && y <= m) {gotoxy(x, y);if (moshi == 1 && a[x][y] && !fff[x][y]) { a[x][y] = 0; fff[x][y] = 1; printf("□"); }if (moshi == 2 && fff[x][y]) { a[x][y] = 1; fff[x][y] = 0; printf("  "); }gotoxy(x, y);}}ch = getch();}color(7);
}
}
void findegg() {
srand(time(NULL));
int aa = 1;
while (!a[egg[0]][egg[1]]) { egg[0] = (rand() % (n)) + 1; egg[1] = (rand() % m) + 1; }
a[egg[0]][egg[1]] = 0;
point += ap;
gotoxy(egg[0], egg[1]); if (!apple) { printf("★"); ap = 8000 / T; if (ap >= 200) ap = 200; }
else { printf("●"); ap = 10; }
apple++; apple = apple % 10;
gotoxy(n + 2, 0); printf("距离下一个奖励蛋还有 "); color(11); cout << 9 - (8 + apple) % 10; color(7); printf(" 个");
danshu++;
return;
}
int gg() {
if (ff == 0) return(0);
if (ff == 1) { gotoxy(n + 2, 1); Sleep(3000); gotoxy(n + 26, 1); gotoxy(n + 10, 0); printf("哦豁~ 你咬到自己了o( ̄▽ ̄)d\n\n\n你共吃蛋 %d 个\n\n\n你共得分 %d 分,恭喜!\n\n\n等一下就继续", danshu, point); Sleep(5000); if (kbhit) return(1); }
if (ff == 2) return(1);
return 0;
}
void dong() {
gotoxy(11, m + 3); printf("当前的蛋有 %d 分            ", ap);
if (ap - 3 > 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 <cstdio>
#include <iostream>
#include <ctime>
#include <conio.h>
#include <windows.h>       //停顿:Sleep();
#include <cstdlib>         //清屏:system("cls");
#include <cstring>         //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 <= n; i++) { gotoxy(i, 0); printf("※"); gotoxy(i, m + 1); printf("※"); }
color(10);
memset(fff, 0, sizeof(fff));
gotoxy(0, 0); printf("┍");
gotoxy(n + 1, 0); printf("┕");
gotoxy(0, m + 1); printf("┑");
gotoxy(n + 1, m + 1); printf("┙");
color(7);
gotoxy(0, m + 5); printf("方向:a/s/d/w | 1/2/3/5");
gotoxy(1, m + 5); printf("暂停:p       |       0");
gotoxy(2, m + 5); printf("减速:q/j     |     4/7");
gotoxy(3, m + 5); printf("加速:e/k     |     6/9");
gotoxy(4, m + 5); printf("重置:r       |       .");
gotoxy(5, m + 5); printf("地图:h       |       +");
headx = endx = endy = 1; heady = 3;
f = 1; ff = 3;
memset(a, 1, sizeof(a));
memset(dir, 0, sizeof(dir));
a[1][1] = a[1][2] = a[1][3] = 0;
gotoxy(1, 1); printf("⊙");
gotoxy(1, 2); printf("⊙");
gotoxy(1, 3); printf("◎");
dir[1][1] = dir[1][2] = dir[1][3] = 2;
apple = 0; fangx = 2; point = 0; danshu = 0; lastfx = 2; stopp = 0;
if (zuobi) { color(12); gotoxy(12, m + 5); printf("作弊可耻!"); gotoxy(m + 4, 0); printf("做了弊还没路走那就救不了你了,乖乖重来吧......"); color(7); }
}
void haha() {
char ch = getch();
if ((ch == 'a' || ch == '1') && dir[headx][heady] != 2) { fangx = 0; return; }
if ((ch == 's' || ch == '2') && dir[headx][heady] != 3) { fangx = 1; return; }
if ((ch == 'd' || ch == '3') && dir[headx][heady] != 0) { fangx = 2; return; }
if ((ch == 'w' || ch == '5') && dir[headx][heady] != 1) { fangx = 3; return; }
if (ch == 'p' || ch == '0') { stopp = (stopp + 1) % 2; return; }
if (ch == 'q' || ch == '4') { T += 10; if (T >= 1005) T = 1005; return; }
if (ch == 'e' || ch == '6') { T -= 10; if (T <= 1) T = 2; return; }
if (ch == 'j' || ch == '7') { T += 1; 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 <= 4) {if (x + fx[dfx][0] > 0 && x + fx[dfx][0] <= n && y + fx[dfx][1] > 0 && y + fx[dfx][1] <= m) { x += fx[dfx][0]; y += fx[dfx][1]; }if (x > 0 && x <= n && y > 0 && y <= m) {gotoxy(x, y);if (moshi == 1 && a[x][y] && !fff[x][y]) { a[x][y] = 0; fff[x][y] = 1; printf("□"); }if (moshi == 2 && fff[x][y]) { a[x][y] = 1; fff[x][y] = 0; printf("  "); }gotoxy(x, y);}}ch = getch();}color(7);
}
}
void findegg() {
srand(time(NULL));
int aa = 1;
while (!a[egg[0]][egg[1]]) { egg[0] = (rand() % (n)) + 1; egg[1] = (rand() % m) + 1; }
a[egg[0]][egg[1]] = 0;
point += ap;
gotoxy(egg[0], egg[1]); if (!apple) { printf("★"); ap = 8000 / T; if (ap >= 200) ap = 200; }
else { printf("●"); ap = 10; }
apple++; apple = apple % 10;
gotoxy(n + 2, 0); printf("距离下一个奖励蛋还有 "); color(11); cout << 9 - (8 + apple) % 10; color(7); printf(" 个");
danshu++;
return;
}
int gg() {
if (ff == 0) return(0);
if (ff == 1) { gotoxy(n + 2, 1); Sleep(3000); gotoxy(n + 26, 1); gotoxy(n + 10, 0); printf("哦豁~ 你咬到自己了o( ̄▽ ̄)d\n\n\n你共吃蛋 %d 个\n\n\n你共得分 %d 分,恭喜!\n\n\n等一下就继续", danshu, point); Sleep(5000); if (kbhit) return(1); }
if (ff == 2) return(1);
return 0;
}
void dong() {
gotoxy(11, m + 3); printf("当前的蛋有 %d 分            ", ap);
if (ap - 3 > 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 <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#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 4
int 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<bits/stdc++.h>//打方块 Windows10
#include<windows.h>
using namespace std;
int fen,mb[10][18],leaf;void kg(int a) {for(int i=0; i<a; i++)cout<<' ';
}void go(int x, int y) {COORD p;p.X=(x-1)*2;p.Y=y-1;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}void printtu(int x,int y,bool a) {go(x,y);cout<<"■";if(x>2&&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; i<18; i++) {go(2,i+2);kg(20);}Sleep(100);go(x,y);kg(2);if(x>2&&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; o<10; o++)if(mb[o][17]==1)goto as;for(int o=17; o>0; 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&&x<11)x++;if(GetAsyncKeyState(VK_LEFT)!=0&&x>2)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<<' '<<q;}if(GetAsyncKeyState(VK_DOWN)!=0&&q>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);}
}

狼人杀(人机)

#include<bits/stdc++.h>
using 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<=4;i++){if(i==1&&(life[l1]>=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]<<endl;}if(i==2&&life[x]>=0){cout<<"预言家:"<<endl;cout<<"你是预言家,请输入0~5的编号(代表相应的人)(除了"<<x<<"号)来预言"<<endl;int res;cin>>res;if(name[res]=="平民"||name[res]=="女巫"||name[res]=="预言家") cout<<"好人"<<endl; if(name[res]=="狼人") cout<<"坏人"<<endl; }if(i==3&&life[n]>=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<<"请投0~5号你认为是狼人的";int ps;cin>>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<<a[j]<<" ";cout<<endl;int max=-1,mp;for(int j=0;j<6;j++) if(a[j]>=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<=4;i++){if(i==1&&life[x]>=0){cout<<"狼人:"<<endl;cout<<"你是狼人,请输入0~5的编号(代表相应的人)(除了"<<x<<"和"<<l1+l2-x<<"号)来杀死"<<endl; cin>>die;life[die]--;cout<<"狼人杀了"<<name[die]<<endl;}if(i==1&&life[x]==-1&&life[l1+l2-x]>=0){cout<<"狼人:"<<endl;srand((unsigned)time(NULL)); die=rand()%6;while(name[die]=="狼人"||life[die]==-1) die=rand()%6;life[die]--;cout<<"狼人杀了"<<name[die]<<endl;}if(i==2&&life[y]>=0){cout<<"预言家:"<<endl;cout<<"预言完毕"<<endl; }if(i==3&&life[n]>=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<<"请投0~5号你认为是狼人的";int ps;cin>>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<<a[j]<<" ";cout<<endl;int max=-1,mp;for(int j=0;j<6;j++) if(a[j]>=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<=4;i++){if(i==1&&(life[l1]>=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]<<endl;}if(i==2&&life[y]>=0){cout<<"预言家:"<<endl;cout<<"预言完毕"<<endl; }if(i==3&&life[n]>=0){cout<<"女巫:"<<endl;cout<<"你是女巫,请输入d、r、n。d代表要杀、r代表要救,n代表不用药"<<endl;char dor;cin>>dor;if(dor=='d'){cout<<"请输入0~5号你要杀的人(除了"<<n<<"号)"<<endl;cin>>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<<"请投0~5号你认为是狼人的";int ps;cin>>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<<a[j]<<" ";cout<<endl;int max=-1,mp;for(int j=0;j<6;j++) if(a[j]>=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<=4;i++){if(i==1&&(life[l1]>=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]<<endl;}if(i==2&&life[y]>=0){cout<<"预言家:"<<endl;cout<<"预言完毕"<<endl; }if(i==3&&life[n]>=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<<"请投0~5号你认为是狼人的";int ps;cin>>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<<a[j]<<" ";cout<<endl;int max=-1,mp;for(int j=0;j<6;j++) if(a[j]>=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;
}

C++各种经典小游戏相关推荐

  1. python经典小游戏-用Python设计一个经典小游戏:猜大小

    码农那点事儿 关注我们,一起学习进步 本文主要介绍如何用Python设计一个经典小游戏:猜大小. 游戏规则: 初始本金是1000元,默认赔率是1倍,赢了,获得一倍金额,输了,扣除1倍金额. 玩家选择下 ...

  2. 20行python代码的入门级小游戏-用Python设计一个经典小游戏

    本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...

  3. python经典小游戏-用Python设计一个经典小游戏

    本文主要介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习. 游戏规则: 初始本金是 ...

  4. python拼图游戏代码_GitHub 上哪些勾起回忆的经典小游戏(Python)

    经常有人问我 Python 能开发游戏吗?今天就直接给大家推荐一个汇集多款经典小游戏的Github项目:Free Python Games. 项目地址:grantjenks/free-python-g ...

  5. c语言经典游戏,C语言——经典小游戏——打砖块

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言--经典小游戏--打砖块 玩法:按A与D控制球拍的移动,按S暂停游戏 百度网盘下载:http://pan.baidu.com/s/1o64ECTc ...

  6. Windows经典小游戏--扫雷精装版

    Windows经典小游戏–扫雷精装版 最开始玩的电脑游戏就是蜘蛛纸牌和扫雷了,那时候觉得很神奇的事情现在自己也可以做了.下面就展示一下C语言扫雷的代码. 首先创建一个"扫雷"的项目 ...

  7. 经典小游戏(密室逃脱全集+答案)

    经典小游戏--密室逃脱全集(有答案) 转自月影梦魇原来玩过的一个小游戏 最近想起来想发给大家玩一下   有一点小难度的哦   看谁可以出得来密室   一共有三个密室 这三个游戏是有一点相连的 蓝色房间 ...

  8. Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk

    Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk 程序依赖:pygame2.0.1, pymunk5.5.0 直接运行main.py 完整代码下载地址:Python版经典小游戏 ...

  9. C#winform 经典小游戏贪吃蛇V1.0(一)

    关于V1.0   为什么我给这个版本定义为V1.0嘞,因为在这个版本中仅仅实现了蛇的自动行进,按键对蛇的行进方向的操作和吃掉食物蛇身的增长等操作. 但是任何事情都必须一步一步来,当我们完成这个乞丐版的 ...

  10. c++编写手机小游戏代码_经典小游戏大集合(C++ 源码)

    [实例简介] 五子棋 贪吃蛇 俄罗斯方块 黑白棋 连连看 推箱子 扫雷等7个小游戏 C++源码 VC6.0 下编译运行. [实例截图] [核心代码] 经典小游戏大集合(C源码) └── 经典小游戏大集 ...

最新文章

  1. spark和python的关系_spark submit和pyspark有什么区别?
  2. LATEX论文排版学习资源汇总
  3. 她13岁自己造飞机,17岁进麻省理工,3篇黑洞论文被霍金引用......
  4. API网关和AWS Lambda进行身份验证
  5. selenium定位元素的方法_selenium定位元素之冻结窗口
  6. 一个程序员的郁闷吐槽
  7. PHP依赖管理工具Composer配置安装及基本使用
  8. Struts迭代器(iterator)遍历List常用的4种例子 - 冯世杰
  9. html前端显示tiff
  10. 手机设备唤醒计算机,手机微信实现网络唤醒电脑(WOL),远程开机,WakeOnLan – 全栈笔记...
  11. Flowable入门系列文章195 - JMX的组态和服务URL
  12. Android App应用启动分析与优化
  13. 点到超平面距离的原理推导
  14. 百度名词~杂篇--(对日常遇到事物的深入了解)
  15. 使用raw input 代替全局键盘钩子
  16. matlab imagesc
  17. zookeeper日志删除
  18. 制作Mac的U盘启动系统
  19. 前端练手案例之日历(原生)一
  20. Microsoft SQL Server 2019 下载、安装及Java JDBC配置连接数据库(多图详解 超详细)

热门文章

  1. Eclipse 解决项目中中文注释乱码问题
  2. linux txt file busy,linux使用cp报错 Text file busy
  3. 深圳云计算培训学习:构建企业级WIKI及工单系统 --【千锋】
  4. 阿俊带你用Kotlin刷算法(一)
  5. 基于VB图书管理系统的设计与实现
  6. 如何编写知识竞赛抢答赛规则和流程策划书
  7. python 实战2 斜边上的高
  8. ffmpeg 之ffmpeg 整理流程分析
  9. Anchor-free系列——FoveaBox: Beyond Anchor-based Object Detector
  10. 个人面经整理海尔测试