c++小游戏合集(单人)

目录

1.猜数游戏

2.吃豆人

3.闯关游戏

4.俄罗斯方块

5.飞机大战

6.火柴人跑酷


1.猜数游戏

#include<bits/stdc++.h>
#include <conio.h>
#include <windows.h>
 #include <ctime>
 #include <cmath>
using namespace std;
void guize();
void print();
void prin(string a)
{
int s=a.size();
for(int i=0;i<s;i++)
{
cout<<a[i];
Sleep(30);
}
getch(); 
system("cls");
}
void kaishiyouxi()
{
srand((int)time(0));
int a,b,c,d;
do{
a=rand()%10;
}while(a==0);
do{
b=rand()%10;
}while(b==a);
do{
c=rand()%10;
}while(c==b||c==a);
do{
d=rand()%10;
}while(d==a||c==d||b==d);
int A,B,C,D,l,pd=0,ans1=0,ans2=0,lunshu=0;
printf("请输入数字:");
Sleep(2000);
system("cls");
while(1)
{
lunshu++;
do{
cin>>l;
A=l/1000;
B=l/100%10;
C=l/10%10;
D=l%10;}
while(l>9876||l<1234||A==B||B==C||C==D||D==A);
ans1=0;
ans2=0;
if(A==a) ans1++;
if(B==b) ans1++;
if(C==c) ans1++;
if(D==d) ans1++;
if(A==d||A==b||A==c)ans2++;
if(B==a||B==c||B==d)ans2++;
if(C==a||C==b||C==d)ans2++;
if(D==a||D==b||D==c)ans2++;
printf("(%dA,%dB)\n",ans1,ans2);
if(ans1==4)
{
printf("恭喜您,游戏胜利!!!\n");
printf("您的成绩是:");
Sleep(100);
printf("正在计算中......");
Sleep(800);
for(int i=1;i<=5;i++)
{
for (int j=0;j<=8;j++)
cout<<'\n';
cout<<"                                Wait";
for(int o=1;o<=6;o++)
{
printf(".");
Sleep(80);
}
system("cls");
}
printf("您的成绩是:");
if(lunshu<2) 
prin("9999+!你的运气好爆了!!!");
else if(lunshu<7)
prin("99+(你运气真好)");
if(lunshu==7)
prin("100!智慧和运气的共存生命体!!!");
if(lunshu==8)
prin("99!你是大学霸!!!") ;
if(lunshu==9)
prin("96.5!Great!");
if(lunshu==10)
prin("93!NB!!"); 
if(lunshu==11)
prin("89!Good!");
switch(lunshu)
{
case 12:{
	prin("82.7!");
	break;
}
case 13:{
	prin("76!");
	break;
}
case 14:{
	prin("73!");
	break;
}
case 15:{
	prin("65");
	break;
}
case 16:{
	prin("58");
	break;
}
case 17:{
	prin("50");
	break;
}
case 18:{
	prin("38,加油!");
	break;
}
case 19:{
	prin("21,再接再厉!");
	break;
}
case 20:{
	prin("15,请认真一点哦~");
	break;
}
case 21:{
	prin("6,你可以的~~~");
	break;
}
case 22:{
	prin("0,多多思考再来玩哦~~~~~");
	break;
}
}
Sleep(5000);
printf("按任意键继续");
char n;
cin>>n;
system("cls");
break;
}
if(lunshu==20)
{
printf("很遗憾,游戏失败!!!");
Sleep(5000);
system("cls");
break;
}
}
}
void guize()
{
prin("游戏规则:\n  游戏开始时,会随机产生一个四位数,这个四位数中,四个数字都不相同,玩家需要用最少次数破译出这个四位数。");
prin("当然,你每试一个数,那个数的后面就会生成一个提示。A表示正确的数字填在正确的位置上,例如2A就表示你有两个数完全填对了");
prin("B就表示正确的数字填在了错误的位置上,例如3B,那就说明你填的那个四位数中,有三个数字出现在正确答案中,但是并不在正确的位置上。\n");
prin("  最后,玩家的目标就是找出那个数字,越快,成绩越高!!!");
}
void print()
{
printf("        》》游戏介绍《《\n");
Sleep(1000);
prin("  此游戏为益智类游戏,主要与数学有关。这个游戏深受爱好数学者喜爱,变化多端,且拥有挑战性。");
prin("这种游戏在这里(此程序中)被称为数字探秘,需要玩家亲自动手操作体验,将游戏过程试数的次数减小到极致,拥有高成就。");
prin("当然,游戏过程可能十分久,所以,我们的游戏普通模式中试数次数有限,这样就能更好的让玩家体验游戏,且节省时间。");
prin("不过,如果玩家想要测试自己的实力,那也不是不可以。之后,我们官方将会将此游戏更新,拥有更多的选项!\n");
prin("玩家若想要知道详细的游戏规则,请按下‘n’,就可以看到游戏规则啦!!!\n但是如果不想,按任意键继续");
string s;
cin>>s;
if(s=="n") 
guize();
}
void fangui(int bbbbb)
{
prin("看清楚!!!");
}
void chushihua()
{
int i,j;
system("color 1F");
printf("正在打开游戏:数字探秘...\n");
Sleep(2000);
system("cls");
for(i=1;i<=6;i++)
{
printf("Wait");
for(j=1;j<=6;j++)
{
printf(".");
Sleep(180);
}
system("cls");
}
}
void zjm()
{
char n;
int m;
printf("1.开始游戏\n2.查看规则\n3.退出游戏\n");
scanf("%c",&n);
Sleep(1000);
switch(n)
{
case '1':kaishiyouxi();break;
case '2':print();break;
case '3':return;
}
system("cls");
zjm();
}
int main()
{
chushihua();
zjm();
}

2.吃豆人

#include <cstdio>
#include <iostream>
#include <ctime>
#include <conio.h>
#include <windows.h>       //停顿:Sleep(); 
#include <cstdlib>         //清屏:system("cls");
#include <cstring>
using namespace std;
const int n=809;
struct Point {int x,y;};
int dali;
int fx[4]={-1,27,1,-27};
int fxfx[4][2]={
  {0,-1},{1,0},{0,1},{-1,0}};
int dis[1000][1000]; //0:墙 1:有分的路 2:没分的路 3:怪物的家 
int changdi[30][27]={
    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0},
    {0,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,0},
    {0,0,0,0,0,0,1,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,2,2,2,2,2,2,2,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,3,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,3,3,3,3,3,0,2,0,0,1,0,0,0,0,0,0},
    {2,2,2,2,2,2,1,2,2,2,0,3,3,3,3,3,0,2,2,2,1,2,2,2,2,2,2},
    {0,0,0,0,0,0,1,0,0,2,0,3,3,3,3,3,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,2,2,2,2,2,2,2,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0},
    {0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0},
    {0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0},
    {0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0},
    {0,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,0},
    {0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0},
    {0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0},
    {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
int x,x1,x2,x3,x4,y,y1,y2,y3,y4,now,now1,now2,now3,now4,g1,g2,g3,g4,fangx,nextfx,last1,last2,last3,last4,fenshu,guozi,guaitimer;
int T1,T2,t1,t2,stopped; //T:计时 t1:玩家速度 t2:怪物速度 
int f=0; //f:{0:继续 1:被吃 2:赢了 3:输了}
int beichi;
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 begin(){
    system("cls");
    color(11); printf("       ★"); color(10); printf("吃豆人"); color(11); printf("★\n\n"); color(7);
    printf("     请将窗口开至"); color(11); printf("全屏\n"); color(7);
    printf("  正在初始化,请耐心等待"); 
    for (int i=0; i<=n; i++) for (int j=1; j<=n; j++) dis[i][j]=900;
    for (int i=0; i<=n; i++){
        for (int j=0; j<=3; j++){
            if (i+fx[j]>=0 && i+fx[j]<=n){
                int k=i+fx[j],xx=k/27,yy=k%27,kk;
                if (changdi[i/27][i%27] && changdi[xx][yy]) dis[i][k]=kk=1;
            }
        }
    }
    for (int k=0; k<=n; k++)if(changdi[k]){
        for (int i=0; i<=n; i++)if(changdi[i])
            for (int j=0; j<=n; j++)if(changdi[j])
                if (dis[i][j]>dis[i][k]+dis[k][j]) dis[i][j]=dis[i][k]+dis[k][j];
        if (k%80==0){color (13); gotoxy(3,12); printf("│");}
        if (k%80==20){color(13); gotoxy(3,12); printf("╱");}
        if (k%80==40){color(13); gotoxy(3,12); printf("─");}
        if (k%80==60){color(13); gotoxy(3,12); printf("╲");}
        if (k%60==0){color(11); gotoxy(5,k/60); printf("●");}
    }
}
void shuru(){
    char ch=getch();
    if (ch=='1' | ch=='j') if (changdi[x+fxfx[0][0]][y+fxfx[0][1]]==1|changdi[x+fxfx[0][0]][y+fxfx[0][1]]==2) fangx=nextfx=0; else nextfx=0;
    else if (ch=='2' | ch=='k') if (changdi[x+fxfx[1][0]][y+fxfx[1][1]]==1|changdi[x+fxfx[1][0]][y+fxfx[1][1]]==2) fangx=nextfx=1; else nextfx=1;
    else if (ch=='3' | ch=='l') if (changdi[x+fxfx[2][0]][y+fxfx[2][1]]==1|changdi[x+fxfx[2][0]][y+fxfx[2][1]]==2) fangx=nextfx=2; else nextfx=2;
    else if (ch=='5' | ch=='i') if (changdi[x+fxfx[3][0]][y+fxfx[3][1]]==1|changdi[x+fxfx[3][0]][y+fxfx[3][1]]==2) fangx=nextfx=3; else nextfx=3;
    else if (ch=='0' | ch=='s') stopped=(stopped+1)%2;
    else if (ch=='4' | ch=='a') t1++;
    else if (ch=='7' | ch=='q') t2++;
    else if ((ch=='6' | ch=='d') && t1-1>0) t1--; 
    else if ((ch=='9' | ch=='e') && t2-1>0) t2--;
    else if (ch=='g') dali=(dali+1)%2;
}
void reset(){
    system("cls"); color(7);
    gotoxy(2,30); printf("控制方向:1/2/3/5");
    gotoxy(4,30); printf("你的速度:4/6");
    gotoxy(6,30); printf("怪物速度:7/9");
    x=22; y=13; 
    x1=x2=x3=x4=14; y1=11; y2=12; y3=14; y4=15;
    now=607; now1=389; now2=390; now3=392; now4=393;
    for (int k=0; k<=n; k++){
        int i=k/27,j=k%27;
        gotoxy(i,j);
        if (changdi[i][j]==1){color(7); printf("·");}
        else if (!changdi[i][j]){color(1); printf("■");}
        if (j=26){gotoxy(i,27); color(7); printf("%d",i);}
    }
    gotoxy(0,0);
    gotoxy(x,y); color(14); printf("●");
    gotoxy(x1,y1); color(4); printf("◆");
    gotoxy(x2,y2); color(5); printf("◆");
    gotoxy(x3,y3); color(3); printf("◆");
    gotoxy(x4,y4); color(2); printf("◆");
    fangx=0; T1=T2=guaitimer=0; t1=75; t2=100;stopped=0; fenshu=0; guozi=237; g1=g2=g3=g4=0; dali=0;
    gotoxy(14,30); printf("  ");
}
void move1(){
    int xx,yy;
    xx=x+fxfx[nextfx][0]; yy=y+fxfx[nextfx][1];
    if (changdi[xx][yy]){
        if (changdi[xx][yy]==1){fenshu+=1; changdi[xx][yy]=2;}
        color(14);
        gotoxy(x,y); printf("  ");
        gotoxy(xx,yy); if (!dali) printf("◎"); else printf("☆");
        now=x*27+y; x=xx; y=yy;
        fangx=nextfx;
    }
    else{
        if (x==13 && y==0 && fangx==0){xx=x; yy=26;}
        else if (x==13 && y==26 && fangx==2){xx=x; yy=0;}
        else{xx=x+fxfx[fangx][0]; yy=y+fxfx[fangx][1];}
        if (changdi[xx][yy]){
            if (changdi[xx][yy]==1){fenshu+=1; changdi[xx][yy]=2;}
            color(14);
            gotoxy(x,y); printf("  ");
            gotoxy(xx,yy); if (!dali) printf("◎"); else printf("☆");
            now=x*27+y; x=xx; y=yy;
        }
    }
    color(7);
}
void move2(){
    int haha,minhaha,xx,yy,chi=0;
    if (g1){
        minhaha=2147483647;
        if (now1%27==0 | now1%27==26) haha=last1;
        else if (!dali){
            for (int i=0; i<=3; i++)
                if (changdi[(now1+fx[i])/27][(now1+fx[i])%27] && i!=last1 && minhaha>dis[now1+fx[i]][now])    {minhaha=dis[now1+fx[i]][now]; haha=i;}
        }
        else{
            minhaha=-minhaha;
            for (int i=0; i<=3; i++)
                if (changdi[(now1+fx[i])/27][(now1+fx[i])%27] && i!=last1 && minhaha<dis[now1+fx[i]][now])    {minhaha=dis[now1+fx[i]][now]; haha=i;}
        }
        xx=now1/27; yy=now1%27; gotoxy(xx,yy); 
        if (changdi[xx][yy]==1) printf("·");else printf("  "); 
        now1+=fx[haha]; last1=(haha+2)%4;
        xx=now1/27; yy=now1%27; gotoxy(xx,yy); color(4); printf("◆"); color(7);
        if (xx==x && yy==y){
            if (!dali) chi+=1;
            else {
                guozi+=50;
                fenshu+=50;
                last1=0;
                gotoxy(now1/27,now1%27); 
                if (changdi[now1/27][now1%27]==1) printf("·"); else printf("  ");
                now1=389;
            }
        }
    }
    if (g2){
        int k;
        minhaha=2147483647;
        if (fangx==0 | fangx==2){
            k=y+(fxfx[fangx][1])*3;
            while (k>25 | !changdi[x][k]) k--;
            while (k<1 | !changdi[x][k]) k++;
        } else{
            k=x+(fxfx[fangx][0])*3;
            while (k>28 | !changdi[k][y]) k--;
            while (k<1 | !changdi[k][y]) k++; 
        } 
        if (fangx==0 | fangx==2) k=x*27+k; else k=k*27+y;
        if (now2%27==0 | now2%27==26) haha=last2;
        else if (!dali)
            for (int i=0; i<=3; i++){
                if (changdi[(now2+fx[i])/27][(now2+fx[i])%27] && i!=last2 && minhaha>dis[now2+fx[i]][k])    {minhaha=dis[now2+fx[i]][k]; haha=i;}
            }       
        else{
            minhaha=-minhaha;
            for (int i=0; i<=3; i++){
                if (changdi[(now2+fx[i])/27][(now2+fx[i])%27] && i!=last2 && minhaha<dis[now2+fx[i]][k])    {minhaha=dis[now2+fx[i]][k]; haha=i;}
            }   
        }
        xx=now2/27; yy=now2%27; gotoxy(xx,yy); 
        if (changdi[xx][yy]==1) printf("·");else printf("  "); 
        now2+=fx[haha]; last2=(haha+2)%4; gotoxy(18,30);
        xx=now2/27; yy=now2%27; gotoxy(xx,yy); color(5); printf("◆"); color(7);
        if (xx==x && yy==y){
            if (!dali) chi+=1;
            else {
                guozi+=50;
                fenshu+=50;
                last2=0;
                gotoxy(now2/27,now2%27); 
                if (changdi[now2/27][now2%27]==1) printf("·"); else printf("  ");
                now2=390;
            }
        }
    }
    if (g3){
        int k;
        minhaha=2147483647;
        if (fangx==0 | fangx==2){
            k=y+(fxfx[(fangx+1)%4][1])*3;
            while (k>25 | !changdi[x][k]) k--;
            while (k<1 | !changdi[x][k]) k++;
        } else{
            k=x+(fxfx[(fangx+1)%4][0])*3;
            while (k>28 | !changdi[k][y]) k--;
            while (k<1 | !changdi[k][y]) k++; 
        } 
        if (fangx==0 | fangx==2) k=x*27+k; else k=k*27+y;
        if (now3%27==0 | now3%27==26) haha=last3;
        else if (!dali)
            for (int i=0; i<=3; i++){
                if (changdi[(now3+fx[i])/27][(now3+fx[i])%27] && i!=last3 && minhaha>dis[now3+fx[i]][k])    {minhaha=dis[now3+fx[i]][k]; haha=i;}
            }   
        else {
            minhaha=-minhaha;
            for (int i=0; i<=3; i++){
                if (changdi[(now3+fx[i])/27][(now3+fx[i])%27] && i!=last3 && minhaha<dis[now3+fx[i]][k])    {minhaha=dis[now3+fx[i]][k]; haha=i;}
            }   
        }   
        xx=now3/27; yy=now3%27; gotoxy(xx,yy); 
        if (changdi[xx][yy]==1) printf("·");else printf("  "); 
        now3+=fx[haha]; last3=(haha+2)%4; gotoxy(18,30);
        xx=now3/27; yy=now3%27;         
        gotoxy(xx,yy); color(3); printf("◆"); color(7);
        if (xx==x && yy==y){
            if (!dali) chi+=1;
            else {
                guozi+=50;
                fenshu+=50;
                last3=0;
                gotoxy(now3/27,now3%27); 
                if (changdi[now3/27][now3%27]==1) printf("·"); else printf("  ");
                now3=341;
            }
        }
    }
    if (chi) beichi++;
}
int main(){
    begin();
    int jixu=1;
    reset();
    string bb[4]={"●","①","②","③"}; color(7);
    gotoxy(12,12); printf("倒计时"); color(12);
    for (int i=3; i>=0; i--){if (i==0) color(11);gotoxy(13,13); cout<<bb[i]; Sleep(1000);}
    gotoxy(12,12); printf("      "); gotoxy(13,13); printf(" "); color(7);
    while (!f){
        Sleep(1);
        gotoxy(10,30); printf("得分:%d   ",fenshu);
        gotoxy(8,30); printf("怪物速度:%d   ",300-t2);
        gotoxy(9,30); printf("你的速度:%d   ",300-t1);
        gotoxy(15,30); printf("被吃次数:%d ",beichi);
        if (kbhit()) shuru();
        if (stopped) continue;
        T1=(T1+1)%t1; T2=(T2+1)%t2;
        if (T1%t1==0 && now+fx[fangx]>0 && now+fx[fangx]<n) move1();
        if (T2%t2==0){
            if (guaitimer<=8){
                if (guaitimer==0) g1=1;
                if (guaitimer==8) g2=1;
                guaitimer++;
            }
            if (!g3 && fenshu>=30) g3=1;    
			move2();    
        }
        if (fenshu==guozi)    f=2;
    }
    if (f=2) {
        Sleep(3000);
        system("cls");
        printf("恭喜你吃完了!\n你一共被怪物吃掉了 %d 次",beichi);
        Sleep(3000);
        char ying;
        scanf("%c",&ying);
    }
}

3.闯关游戏

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<string>
#include<windows.h>
#include<conio.h>
using namespace std;

int num[501][501]={},posx,posy,printx,printy,numx,numy,jjn=300,iin=5,lln=300,dead=0,cdx=29,cdy=1,numm=0,winn=0,maxy=1,boll=1;
int game_num=1;
#define setwc(a) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a)

void setpos(COORD a){SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),a);}
void setpos(int i,int j)
{
COORD pos={j-1,i-1};
setpos(pos);
}
void hide_csr()
{
CONSOLE_CURSOR_INFO info={20,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&info);
}
void show_csr()
{
CONSOLE_CURSOR_INFO info={20,1};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&info);
}

int rand_()
{
LARGE_INTEGER seed;
QueryPerformanceFrequency(&seed);
QueryPerformanceCounter(&seed);
srand(seed.QuadPart);
return rand();
}
void Sleep_(double ms)
{
LARGE_INTEGER seed,t1,t2;
QueryPerformanceFrequency(&seed);
QueryPerformanceCounter(&t1);
QueryPerformanceCounter(&t2);
while((t2.QuadPart-t1.QuadPart)*1000.0/seed.QuadPart<=0.3) QueryPerformanceCounter(&t2);
}

bool is_lu(int n){return n==1;} 
bool is_ci(int n){return n==1;} 

void clean_map()
{
for(int i=1;i<=500;i++)
for(int j=1;j<=500;j++)
num[i][j]=0;
}
void print_map()
{
setpos(4,1);
string a;
for(int i=0;i<=31;i++)
{
if(i==0||i==31)
{
a+=" ";
for(int j=1;j<=50*2;j++) a+="-";
a=a+" "+"\n";
continue;
}
a+="|";
for(int j=1;j<=50;j++)
{
if(printx+i-1==posx&&printy+j-1==posy) {a+="||";continue;}
if(num[printx+i-1][printy+j-1]==0) a+=" ";
if(num[printx+i-1][printy+j-1]==1) a+="■";
if(num[printx+i-1][printy+j-1]==2) a+="▲";
if(num[printx+i-1][printy+j-1]==3) a+="▼";
if(num[printx+i-1][printy+j-1]==4) a+="#.";
if(num[printx+i-1][printy+j-1]==5) a+="传";
if(num[printx+i-1][printy+j-1]==6) a+="送";
if(num[printx+i-1][printy+j-1]==7) a+="门"; 
if(num[printx+i-1][printy+j-1]==8) a+="--";
if(num[printx+i-1][printy+j-1]==9) a+="..";
if(num[printx+i-1][printy+j-1]==10) a+="↑";
if(num[printx+i-1][printy+j-1]==11) a+="◎";
if(num[printx+i-1][printy+j-1]==12) a+="●";
if(num[printx+i-1][printy+j-1]==13) a+="◆";
}
a=a+"|"+"\n";
}
cout<<a;
}

void csh_line1(int x,int y1,int y2,int n)
{for(int i=y1;i<=y2;i++) num[x][i]=n;}
void csh_line2(int y,int x1,int x2,int n)
{for(int i=x1;i<=x2;i++) num[i][y]=n;}
void csh_line3(int yyy,int sss,int ttt,int uuu)
{
for(int i=sss;i<=ttt;i+=uuu)
{
num[i][yyy]=1;
}
}
void csh_line4(int yyy,int sss,int ttt,int uuu)
{
for(int i=sss;i<=ttt;i+=uuu)
{
num[yyy][i]=1;
}
}
void csh_map(int n,int n1) 
{
if(!n1) clean_map();
if(n==1) 
{
numx=60,numy=60;
if(!n1||n1==1){printx=1,printy=1; posx=13,posy=4;} 
if(n1==2){printx=12,printy=1; posx=25,posy=1;} 
if(n1==3){printx=30,printy=1; posx=50,posy=1;} 
if(n1==4){printx=30,printy=10; posx=57,posy=43;} 
if(n1) return;
csh_line2(2,4,25,1);
csh_line1(24,37,60,2);
csh_line1(25,2,60,1);
csh_line1(20,41,46,1);
csh_line1(17,33,35,1);
csh_line1(16,31,33,1);
csh_line1(9,27,29,1);
num[10][26]=num[11][25]=num[12][24]=num[13][23]=num[14][22]=num[15][21]=num[16][20]=1;
csh_line1(17,15,19,1),csh_line1(16,16,18,2);
csh_line1(13,7,11,1);
csh_line1(9,15,19,1),csh_line1(8,16,18,2),csh_line1(10,16,19,3);
csh_line2(19,1,9,1); csh_line1(5,2,11,1);
csh_line2(15,26,50,1);
csh_line1(35,1,12,1),csh_line1(40,4,15,1);
num[39][12]=num[39][10]=num[39][8]=num[39][6]=num[39][4]=2;
csh_line1(45,1,12,1);
num[41][4]=num[41][6]=num[41][8]=num[41][10]=num[41][12]=3;
num[44][4]=num[44][6]=num[44][8]=num[44][10]=num[44][12]=2;
csh_line1(50,2,14,2),csh_line1(51,2,14,1);
num[50][5]=num[50][9]=num[50][10]=num[50][11]=1;
csh_line1(58,1,17,2);
num[58][1]=num[58][9]=num[58][17]=num[58][25]=num[58][33]=num[58][43]=num[55][47]=num[54][48]=num[53][49]=num[50][47]=num[49][46]=1;
csh_line1(49,16,44,1),csh_line1(48,16,25,2);
csh_line2(44,42,48,1),csh_line2(29,42,48,1),csh_line2(27,35,41,1),csh_line2(25,28,34,1);
csh_line1(28,28,33,1),csh_line1(27,34,36,1),csh_line1(28,37,50,1),csh_line1(27,51,60,1);
num[27][37]=2;
num[26][60]=4;
}
if(n==2)
{
numx=300,numy=50;
if(!n1||n1==1){printx=1,printy=1; posx=2,posy=4;} 
if(n1==2){printx=271,printy=1; posx=299,posy=5;} 
if(n1==3){printx=200,printy=1; posx=215,posy=4;} 
if(n1==4){printx=140,printy=1; posx=151,posy=4;} 
if(n1==5){printx=90,printy=1; posx=102,posy=9;} 
if(n1==6){printx=15,printy=1; posx=30,posy=4;} 
if(n1==7){printx=1,printy=1; posx=1,posy=10;} 
csh_line1(5,2,5,1),csh_line1(1,1,5,1);
csh_line2(5,2,5,1);
csh_line2(2,5,290,1),csh_line2(10,2,300,1);
for(int i=6;i<=290;i+=2) num[i][3]=1,num[i-1][3]=2;
csh_line1(300,1,4,2),num[300][5]=1;
csh_line2(10,2,300,1);
csh_line2(7,293,300,1),csh_line2(5,286,292,1),csh_line2(9,279,285,1),csh_line1(272,4,8,1);
csh_line2(4,265,271,1),csh_line2(7,258,264,1),csh_line2(9,251,257,1),csh_line1(244,4,7,2),num[244][8]=1;
csh_line2(6,237,244,1),csh_line2(9,230,236,1),num[238][5]=num[238][7]=2,num[239][5]=num[239][7]=3;
csh_line2(7,223,229,1),csh_line2(4,216,222,1),num[215][3]=1;
num[213][9]=num[210][4]=num[203][6]=num[196][9]=num[189][7]=num[182][4]=num[181][3]=num[175][8]=num[168][7]=num[161][9]=1;
csh_line1(159,4,7,1),csh_line2(4,152,158,1),csh_line2(5,153,158,2);
num[145][9]=num[137][3]=num[138][4]=num[131][9]=num[123][3]=num[124][4]=num[117][9]=num[109][3]=num[110][4]=num[103][9]=1;
for(int i=31;i<=100;i+=3)num[i][4]=1;
for(int i=2;i<=26;i+=3)num[i][9]=1;
for(int i=11;i<=50;i++)
for(int j=6;j<=290;j++)
num[j][i]=0;
for(int i=1;i<=400;i++)
{
int rx,ry;
do rx=rand_()%285+6,ry=rand_()%40+11;
while(num[rx][ry]);
num[rx][ry]=2;
}
for(int i=1;i<=400;i++)
{
int rx,ry;
do rx=rand_()%285+6,ry=rand_()%40+11;
while(num[rx][ry]);
num[rx][ry]=1;
}
csh_line1(300,12,50,2);
num[300][11]=4; 
}
if(n==3)
{
numx=30,numy=500;
if(dead==0){printx=1,printy=0; posx=29,posy=0;}
if(dead==1){printx=1,printy=63; posx=22,posy=65;}
if(dead>1&&maxy<99){printx=1,printy=60; posx=23,posy=68;}
if(maxy>=99){printx=1,printy=78; posx=23,posy=100;}
if(maxy>=155){printx=1,printy=143; posx=2,posy=155;}
if(maxy>=200){printx=1,printy=190; posx=23,posy=200;}
csh_line1(30,0,6,1);
csh_line2(5,3,30,1);
csh_line2(1,0,16,1);
csh_line2(6,18,30,1);
csh_line1(24,2,105,1);
csh_line1(24,195,204,1);
csh_line2(205,0,30,1);
csh_line1(18,2,5,1);
csh_line1(23,3,4,2);
csh_line2(8,0,22,1);
csh_line2(9,0,22,1);
csh_line1(14,3,5,1);
csh_line1(16,1,3,1);
num[9][2]=1;
num[29][7]=4;
num[23][60]=7;
num[22][60]=10;
csh_line2(61,0,23,1);
csh_line2(62,0,23,1);
csh_line2(64,0,23,1);
csh_line1(23,65,67,1); 
csh_line2(64,20,22,0);
csh_line2(23,6,14,1);
csh_line2(27,17,23,1);
csh_line2(29,14,20,1);
csh_line2(23,6,14,1);
csh_line1(14,24,28,1);
csh_line1(18,17,22,1);
csh_line2(13,3,23,1);
csh_line2(67,3,23,1);
csh_line2(76,0,23,1);
csh_line2(75,0,30,0);
csh_line4(6,13,58,3);
csh_line4(6,13,56,4);
csh_line1(24,57,60,1);
csh_line2(81,19,22,1);
csh_line2(83,14,22,1);
csh_line2(85,9,23,1);
csh_line2(83,0,10,1);
csh_line2(120,0,16,1);
csh_line1(7,83,85,1);
csh_line1(3,85,98,1);
csh_line1(15,85,90,1);
csh_line1(24,57,60,1);
csh_line2(90,4,15,1);
csh_line2(92,4,23,1);
csh_line2(90,4,23,1);
csh_line2(98,0,3,1);
num[7][22]=1;
num[12][22]=1;
num[2][67]=5;
num[2][68]=1;
num[1][68]=1;
num[19][12]=1;
num[14][12]=1;
num[10][12]=1;
num[4][12]=1;
num[26][67]=1;
num[3][91]=0; 
csh_line3(66,4,23,5);
csh_line3(65,1,20,5);
csh_line2(93,4,23,1);
csh_line2(95,4,23,1);
csh_line2(96,4,23,1);
csh_line2(98,4,23,1);
csh_line2(99,0,23,1);
csh_line4(22,101,200,5);
csh_line4(19,101,200,7);
csh_line4(7,101,200,3);
csh_line4(17,101,200,4);
csh_line4(12,101,200,6);
csh_line3(135,1,23,3);
csh_line2(153,0,19,1);
num[13][155]=1;
num[22][155]=1;
num[18][154]=1;
num[25][153]=1;
num[22][168]=1;
num[23][120]=1;
csh_line2(156,2,23,1);
csh_line2(165,6,17,1);
csh_line2(167,0,7,1);
csh_line2(167,18,23,1);
csh_line2(169,8,15,1);
csh_line3(174,0,23,2);
csh_line3(177,1,23,2);
csh_line2(179,2,23,1);
csh_line2(180,2,23,1);
for(int i=0;i<24;i++)
{
for(int j=195;j<205;j++)
{
num[i][j]=9;
}
}
}
}

void printx_plus_1(){if(posx-printx+1>20&&printx<numx-29) printx++;}
void printx_minus_1(){if(posx-printx+1<=10&&printx>1) printx--;}
void printy_plus_1(){if(posy-printy+1>25&&printy<numy-49) printy++;}
void printy_minus_1(){if(posy-printy+1<25&&printy>1) printy--;}
void print_game_over(int x,int y)
{
setwc(0x3e);
string p[10]={"------------------------------------------------------------------------------","|  %%%%%      %      %     %   %%%%%%%         %%%%%  %     % %%%%%%% %%%%%%   |","| %     %    % %     %     %   %              %     % %     % %       %     %  |","| %          % %    % %   % %  %              %     % %     % %       %     %  |","| %    %%%  %   %   % %   % %  %%%%%%%        %     %  %   %  %%%%%%% %%%%%%   |","| %     %   %%%%%  %   % %   % %              %     %  %   %  %       %     %  |","| %     %  %     % %   % %   % %              %     %   % %   %       %     %  |","|  %%%%%   %     % %    %    % %%%%%%%         %%%%%     %    %%%%%%% %      % |","|                         (Press \"r\" to try it again)                          |","------------------------------------------------------------------------------"};
for(int i=0;i<10;i++) setpos(x+i,y+(i==0||i==9?1:0)),cout<<p[i];
setwc(0x07);
}
int print_game_(int n)
{
if(n==1) return 75;
if(2<=n&&n<=4) return 100;
if(5<=n&&n<=6) return 150;
if(n==7) return 300;
}
void game_over()
{
print_game_over(11+2,13);
while(1){if(kbhit()){if(getch()=='r')break;}}
}
void print_game()
{
int game_num_=1; 
int notice_=0; string notice;
setpos(1,1),setwc(0x4c),cout<<"当前关卡:"<<game_num;
setpos(2,1),setwc(0x0c),printf("存档编号:%d(Line:%d,Col:%d)    ",game_num_,posx,posy);
setpos(3,1),setwc(0x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值