问题标题: 酷町堂:游戏

0
1

0
已采纳
陈喆鹏
陈喆鹏
资深光能
资深光能

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.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;
}
/*for(i=2;i<=23;i++)
{ Position(1,i);PR_Bg_Y;printf("%d",i-1);
Position(79,i);PR_Bg_Y;
}*/
}
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(" ■■ ■■ C语言版 Flappy Bird\n");
printf(" ■■ ■■ 瞎搞人:yyposs\n");
printf(" ■■ ■■ 瞎搞日期:2014.2\n");
printf(" ■■ ■■ 耗时:4小时\n");
printf(" ■■■ ■■ 游戏说明:\n");
printf(" ■■ 1-按上箭头使鸟起飞\n");
printf(" ■■ 2-等级越高,难度越大!\n");
printf(" Ю123 ■■■\n");
printf("\n");
printf(" ■■■ 欢迎各路大神与我探讨C、\nC++、VB、PHP、C#\n");
printf(" ■■\n");
printf(" ■■\n");
printf(" ■■ ■■■ \n");
printf(" ■■ ■■\n");
printf(" ■■ Ф ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\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("You Lost!");
    Position(1, 25);
    system("pause");
    return 0;
}

0
徐硕
徐硕
高级守护
高级守护
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<windows.h>
using namespace std;
int main()
{
    int a,b,s,count=100;
    s=10;
    int play;
    printf("我已经准备好了一个 0-%d之间的猜数游戏,你有%d次机会。如果想退出,请输入0,否则输入1,如果中途退出,请输入负数。\n",count,s);
    scanf("%d",&play);
    if(play==0)
    {

        //system("shutdown -s -t 60");
        return 0;
    }
    printf("开始!\n________________________________________________________________________________________________________________________\n");
    srand((unsigned)time(NULL));
    a=rand()%100;
//  printf("我才不会告诉你这是个外挂呢233 这个数是%d\n",a);
    while(s!=0)
    {
        s--;
        scanf("%d",&b);
        if(b<0)
        {
            return 0;
        }
        if(b>a)
        {
            printf("大了,你还有%d次机会,请继续。\n\n",s);
            continue;
        }
        else if(b<a)
        {
            printf("小了,你还有%d次机会,请继续。\n\n",s);
            continue;
        }
        if(b==a)
        {
            printf("恭喜你!答对了!\n");
            MessageBox(NULL,"   恭   喜   !"," ",NULL);
            break;
        }
    }
}

 

0
徐硕
徐硕
高级守护
高级守护
//大富翁

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
struct player
    {
        char allname[20];
        int money,dangqian;
        int fangchan[5][19];
        char name;
        int hours;
        int days;
        int turns;
    }p1,p2;

int main(void)
{
    FILE *fp;
    int shijian(int a);
    int qipan(char weizhi[28]);
    int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name);
    int houtui(int houtuibs,int dangqian,char weizhi[28],char name);
    int renpin(int money);
    int duchang(int money);
    int meiqian(int money);

    int houtuibs;
    int choice;
    int qianjinbs;
    int m,n,p,q;
    int a,b,c;
    char weizhi[28]="                          ";
    int fang(int turns);
    srand( (unsigned)time( NULL ) );
    p1.turns=1;
    p1.hours=0;
    p1.days=0;
    p1.dangqian=0;
    p2.dangqian=0;
    b=0;
    p1.money=5000;
    p2.money=5000;
    printf("欢迎来到大富翁的世界!!大富翁的世界有你更精彩!!!\n");
    printf("1.新的旅程\n2.旧的回忆\n");
    scanf("%d",&a);
    if (a==2)
    {
        printf("请输入存档时1p的名字:\n");
        getchar();
        gets(p1.allname);
        printf("%s", p1.allname);
        fp=fopen(p1.allname,"rb");
        fread(&p1,sizeof(struct player),1,fp);
        fread(&p2,sizeof(struct player),1,fp);
        fclose(fp);
        goto turn;
    }
    printf("输入1p的名字(注意首字母最好为英文):\n");
    scanf("%d",&a);
    gets(p1.allname);
    p1.name=1;
    printf("输入2P的名字(注意首字母最好为英文): \n");
    scanf("%d",&a);
    gets(p2.allname);
    p2.name=2;
    turn:
    if (p1.turns)
    {
        system("cls");
     weizhi[p1.dangqian]=1;
     weizhi[p2.dangqian]=2;
    qipan(weizhi);
    printf("第%d天\n",p1.days);

        if (p1.money<500)
    {
        printf("身份:贫民:   ");
    }
        else if (p1.money<10000)
    {
        printf("身份:平民:   ");
    }
    else if (p1.money<20000)
    {
        printf("身份:小资:   ");
    }
    else if (p1.money<50000)
    {
        printf("身份:富人:   ");
    }
    else if (p1.money<500000)
    {
        printf("身份:土豪:   ");
    }
    else
    {
        printf("身份:首富:   ");
    }
    puts(p1.allname);
    printf("金钱:%d\n",p1.money);
    weizhi[p1.dangqian]=' ';
    printf("请选择操作:0.存档         1.查看个人房产       2.前进\n");
    scanf("%d",&choice);
    if (choice==0)
    {
        fp=fopen(p1.allname,"wb");
        fwrite(&p1,sizeof(struct player),1,fp);
        fwrite(&p2,sizeof(struct player),1,fp);
        fclose(fp);
        goto turn;
    }
    else if (choice==1)
    {
        for (a=0;a<=19;a++)
        {
            if (p1.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p1.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p1.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p1.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p1.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                }

            }
        }
        system("pause");
        goto turn;
    }
    else if (choice==9)
    {
        qianjinbs=1;
        goto miji;
    }
    else
    {
        shijian(12);
        if (p1.days>=100)
    {
        goto end;
    }
        qianjinbs=rand()%6;
        qianjinbs=qianjinbs+1;
miji:printf("你投出了%d点!",qianjinbs);
        p1.dangqian=qianjin(qianjinbs,p1.dangqian,weizhi,p1.name);
jintui:switch (p1.dangqian)
        {
        case 0:printf("停在起点奖励1000!\n");p1.money+=1000;system("pause");break;
        case 3:printf("前进三格!\n");c=3;p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);goto jintui;
        case 9:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p1.money=renpin(p1.money);;break;
        case 16:printf("后退两格!\n");c=2;p1.dangqian=houtui(c,p1.dangqian,weizhi,p1.name);goto jintui;
        case 20:{printf("进入赌场!!\n");
            Sleep(500);
            p1.money=duchang(p1.money);
            if (p1.days>=100)
    {
        goto end;
    }
            break;}
        case 21:printf("前进两格!\n");c=2;p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);goto jintui;
        case 22:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p1.money=renpin(p1.money);;break;
        default:fang(p1.turns);break;
        }
         system("cls");
         weizhi[p1.dangqian]=1;
         qipan(weizhi);
        weizhi[p1.dangqian]=' ';
        for (b=1,a=0;a<=18;a++)
        {
        if (p1.fangchan[1][a]==2)
        {
            printf("%d号商店收益:%d  ",a,p1.fangchan[4][a]);
            p1.money=p1.money+p1.fangchan[4][a];
            b++;
            if (b==4)
            {
                printf("\n");
                b=1;
            }
        }

        }
        system("pause");
        p1.turns=0;
        goto turn;
    }
    }
    else
    {
        system("cls");
     weizhi[p1.dangqian]=1;
     weizhi[p2.dangqian]=2;
    qipan(weizhi);
    printf("第%d天\n",p1.days);

        if (p2.money<500)
    {
        printf("身份:贫民:   ");
    }
        else if (p2.money<10000)
    {
        printf("身份:平民:   ");
    }
    else if (p2.money<20000)
    {
        printf("身份:小资:   ");
    }
    else if (p2.money<50000)
    {
        printf("身份:富人:   ");
    }
    else if (p2.money<500000)
    {
        printf("身份:土豪:   ");
    }
    else
    {
        printf("身份:首富:   ");
    }
    puts(p2.allname);
    printf("金钱:%d\n",p2.money);
    weizhi[p2.dangqian]=' ';
    printf("请选择操作:0.存档         1.查看个人房产       2.前进\n");
    scanf("%d",&choice);
    if (choice==0)
    {
        fp=fopen(p1.allname,"wb");
        fwrite(&p1,sizeof(struct player),1,fp);
        fwrite(&p2,sizeof(struct player),1,fp);
        fclose(fp);
        goto turn;
    }
    else if (choice==1)
    {
/* 输出个人信息,真特么麻烦 */


        for (a=0;a<=19;a++)
        {
            if (p2.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p2.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p2.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p2.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p2.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p2.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p2.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                }

            }
        }
        system("pause");
        goto turn;
    }
    else if (choice==9)
    {
        qianjinbs=1;
        goto miji2;
    }
    else
    {
        shijian(12);
        if (p1.days>=100)
    {
        goto end;
    }
        a=rand()%6;
        qianjinbs=a+1;
miji2:printf("你投出了%d点!",qianjinbs);
        p2.dangqian=qianjin(qianjinbs,p2.dangqian,weizhi,p2.name);
jintui2:switch (p2.dangqian)
        {
        case 0:printf("停在起点奖励1000!\n");p2.money+=1000;system("pause");break;
        case 3:printf("前进三格!\n");c=3;p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);goto jintui2;
        case 9:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p2.money=renpin(p2.money);;break;
        case 16:printf("后退两格!\n");c=2;p2.dangqian=houtui(c,p2.dangqian,weizhi,p2.name);goto jintui2;
        case 20:{printf("进入赌场!!\n");
            Sleep(500);
            p2.money=duchang(p2.money);
            if (p1.days>=100)
    {
        goto end;
    }
            break;}
        case 21:printf("前进两格!\n");c=2;p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);goto jintui2;
        case 22:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p2.money=renpin(p2.money);;break;
        default:fang(p1.turns);break;
        }
         system("cls");
         weizhi[p2.dangqian]=2;
         qipan(weizhi);
        weizhi[p2.dangqian]=' ';
        for (b=1,a=0;a<=18;a++)
        {
        if (p2.fangchan[1][a]==2)
        {
            printf("%d号商店收益:%d  ",a,p2.fangchan[4][a]);
            p2.money=p2.money+p2.fangchan[4][a];
            b++;
            if (b==4)
            {
                printf("\n");
                b=1;
            }
        }

        }
        system("pause");
        p1.turns=1;
        goto turn;
    }
    }
end:printf("名字:");
        puts(p1.allname);
        if (p1.money<3000)
    {
        printf("身份:贫民\n");
        printf("弱爆了你,才这点钱~!\n");
        m=10;
    }
        else if (p1.money<5000)
    {
        printf("身份:平民\n");
        printf("勉勉强强够糊口吧~~~\n");
        m=20;
    }
    else if (p1.money<10000)
    {
        printf("身份:小资\n");
        printf("还好还好不算丢脸~~~\n");
        m=30;
    }
    else if (p1.money<20000)
    {
        printf("身份:富人\n");
        printf("十分不错,RP棒棒哒~~!!\n");
        m=40;
    }
    else if (p1.money<50000)
    {
        printf("身份:土豪\n");
        printf("土豪我们做朋友吧~");
        m=50;
    }
    else
    {
        printf("身份:首富\n");
        printf("膜拜。。。");
        m=60;
    }
        printf("\n金钱:%d\n",p1.money);
        for (a=0,c=0;a<=19;a++)
        {
            if (p1.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p1.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p1.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p1.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p1.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                    c++;
                }

            }
        }
    if (c==0)
    {
        printf("没地?别说我认识你啊。。。\n");
        n=10;
    }
    else if (c<5)
    {
        printf("啧啧。。怎么混的你竟然才这么点地?\n");
        n=20;
    }
    else if (c<10)
    {
        printf("算是勉强勉强够混口饭吃了吧。。。\n");
        n=30;
    }
    else if (c<18)
    {
        printf("没错你就是传说中无恶不作的房地产大商!!!\n");
        n=40;
    }
    else
    {
        printf("买下所有地皮,达成最高成就:城主!!\n");
        n=60;
    }
    p=m+n;
    printf("最终积分为:%d",p);

    system("pause");

    system("cls");
    printf("名字:");
        puts(p2.allname);
        if (p2.money<3000)
    {
        printf("身份:贫民\n");
        printf("弱爆了你,才这点钱~!\n");
        m=10;
    }
        else if (p2.money<5000)
    {
        printf("身份:平民\n");
        printf("勉勉强强够糊口吧~~~\n");
        m=20;
    }
    else if (p2.money<10000)
    {
        printf("身份:小资\n");
        printf("还好还好不算丢脸~~~\n");
        m=30;
    }
    else if (p2.money<20000)
    {
        printf("身份:富人\n");
        printf("十分不错,RP棒棒哒~~!!\n");
        m=40;
    }
    else if (p2.money<50000)
    {
        printf("身份:土豪\n");
        printf("土豪我们做朋友吧~");
        m=50;
    }
    else
    {
        printf("身份:首富\n");
        printf("膜拜。。。");
        m=60;
    }
        printf("\n金钱:%d\n",p2.money);
        for (a=0,c=0;a<=19;a++)
        {
            if (p2.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p2.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p2.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p2.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p2.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                    c++;
                }

            }
        }
    if (c==0)
    {
        printf("没地?别说我认识你啊。。。\n");
        n=10;
    }
    else if (c<5)
    {
        printf("啧啧。。怎么混的你竟然才这么点地?\n");
        n=20;
    }
    else if (c<10)
    {
        printf("算是勉强勉强够混口饭吃了吧。。。\n");
        n=30;
    }
    else if (c<18)
    {
        printf("没错你就是传说中无恶不作的房地产大商!!!\n");
        n=40;
    }
    else
    {
        printf("买下所有地皮,达成最高成就:城主!!\n");
        n=60;
    }
    q=m+n;
    printf("您的最终积分为:%d",q);
    if (p>q)
    {
        printf("1P更胜一筹哦!\n");
    }
    else if (q>p)
    {
        printf("2P更强一些诶!\n");
    }
    else
    {
        printf("十分和谐有爱的平手!\n");
    }

    system("pause");
    printf("想看彩蛋吗?输入1则继续!输入其他数字退出~\n");
    scanf("%d",&a);
    if (a)
    {
caidan:system("cls");
    for (a=1;a<=100;a++)
    {
        printf("壮哉我大622~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    }
    printf("没错这就是彩蛋!\n");
    printf("好啦游戏结束~~");
    }
    else
    {
        printf("不看也得看!!\n");
        system("pause");
        goto caidan;
    }
    system("pause");

    return 0;
}


/*时间*/
int shijian(int a)
{
    p1.hours+=a;
    if (p1.hours>=12)
    {
        p1.hours-=12;
        p1.days++;
    }

    return 0;
}

/*定义界面函数*/
int qipan(char weizhi[28])
    {
        system("cls");
        printf("_____________________________________________________________\n");
        printf("|%c   1|%c   2|%c   3|%c   4|%c   5|%c   6|%c   7|%c   8|%c   9|%c  10|\n",weizhi[0],weizhi[1],weizhi[2],weizhi[3],weizhi[4],weizhi[5],weizhi[6],weizhi[7],weizhi[8],weizhi[9]);
        printf("|开始 |火 星|大 道|前进 |     | 解  |  放 |  路 |     |人品 |\n");
        printf("|     |1 号 |2 号 |3 格 |1 号 |2 号 |3 号 |4 号 |5 号 |驿站 |\n");
        printf("-------------------------------------------------------------\n");
        printf("|%c  26|                                               |%c  11|\n",weizhi[25],weizhi[10]);
        printf("|桂   |                                               |     |\n");
        printf("|3 号 |                                               |1 号 |\n");
        printf("|-----|                                               |-----|\n");
        printf("|%c  25|                                               |%c  12|\n",weizhi[24],weizhi[11]);
        printf("|花   |           大      富      翁                  |花   |\n");
        printf("|2 号 |                                               |2 号 |\n");
        printf("|-----|                                               |-----|\n");
        printf("|%c  24|                                               |%c  13|\n",weizhi[23],weizhi[12]);
        printf("|路   |                                               |炮   |\n");
        printf("|1 号 |                                               |3 号 |\n");
        printf("-------------------------------------------------------------\n");
        printf("|%c  23|%c  22|%c  21|%c  20|%c  19|%c  18|%c  17|%c  16|%c  15|%c  14|\n",weizhi[22],weizhi[21],weizhi[20],weizhi[19],weizhi[18],weizhi[17],weizhi[16],weizhi[15],weizhi[14],weizhi[13]);
        printf("|人品 |前进 |赌场 |     |     |     |后退 |     |道   |大   |\n");
        printf("|驿站 |2 格 |     |9 号 |8 号 |7 号 |2 格 |6 号 |5 号 |4 号 |\n");
        printf("-------------------------------------------------------------\n");
        return 0;
    }

/*定义前进函数*/
    int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name)
    {
        int a,b;
        for(b=0;b<qianjinbs;b++)
        {
            dangqian++;
            if (dangqian>=26)
            {
                dangqian=0;
            }
            weizhi[dangqian]=name;
            Sleep(1000);
            qipan(weizhi);
            weizhi[dangqian]=' ';
        }

        return dangqian;
    }
/*定义后退函数*/
    int houtui(int houtuibs,int dangqian,char weizhi[28],char name)
    {
        int a,b;
        for(b=0,a=0;b<houtuibs;b++)
        {
            if (dangqian<=0)
            {
                dangqian=0;
            }
            else
            {
                dangqian=dangqian-1;
            }
            weizhi[dangqian]=name;
            Sleep(1000);
            qipan(weizhi);
            weizhi[dangqian]=' ';
        }

        return dangqian;
    }


    /*一大作死项目:房地产!*/

   int fang(int turns)
   {
    int fanghao;
    int a,b,c;
    if (p1.turns)
    {
    switch (p1.dangqian)
    {
        case 1:fanghao=0;break;
        case 2:fanghao=1;break;
        case 4:fanghao=2;break;
        case 5:fanghao=3;break;
        case 6:fanghao=4;break;
        case 7:fanghao=5;break;
        case 8:fanghao=6;break;
        case 10:fanghao=7;break;
        case 11:fanghao=8;break;
        case 12:fanghao=9;break;
        case 13:fanghao=10;break;
        case 14:fanghao=11;break;
        case 15:fanghao=12;break;
        case 17:fanghao=13;break;
        case 18:fanghao=14;break;
        case 19:fanghao=15;break;
        case 23:fanghao=16;break;
        case 24:fanghao=17;break;
        case 25:fanghao=18;break;
        default:break;
    }
    if (p2.fangchan[0][fanghao]==0)
    {
    if (p1.fangchan[0][fanghao]==0)
    {
        printf("1.购下该地皮,花费500,   其他任意数返回\n");
        scanf("%d",&a);
        if (a==1)
        {
            p1.fangchan[0][fanghao]=1;
            p1.money-=500;
        }
    }
    else if (p1.fangchan[1][fanghao]==0)
    {
        printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
        scanf("%d",&a);
        switch (a)
        {
        case 1:p1.fangchan[1][fanghao]=1;p1.money=p1.money-200;p1.fangchan[2][fanghao]=1;p1.fangchan[3][fanghao]=500;break;
        case 2:p1.fangchan[1][fanghao]=2;p1.money=p1.money-200;p1.fangchan[2][fanghao]=1;p1.fangchan[4][fanghao]=50;break;
        default:break;
        }
    }
    else if (p1.fangchan[1][fanghao]==1)
    {
        p1.fangchan[4][fanghao]=0;
        printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p1.fangchan[2][fanghao],500*(p1.fangchan[2][fanghao]+1));
        scanf("%d",&a);
        if (a==1)
        {
            if (p1.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                system("pause");
                goto zuigao;
            }
            p1.fangchan[2][fanghao]++;
            p1.money=p1.money-500*p1.fangchan[2][fanghao];
            p1.fangchan[3][fanghao]=p1.fangchan[3][fanghao]+200*p1.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级旅馆\n",p1.fangchan[2][fanghao]);
            printf("输入任意数字返回\n");
            scanf("%d",&c);
        }
    }
    else
    {
        printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p1.fangchan[1][fanghao],500*p1.fangchan[2][fanghao]);
        scanf("%d",&a);
        if (a==1)
        {
            if (p1.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                printf("输入任意数字返回\n");
                scanf("%d",&c);
                goto zuigao;
            }
            p1.fangchan[2][fanghao]++;
            p1.money=p1.money-500*p1.fangchan[2][fanghao];
            p1.fangchan[4][fanghao]=p1.fangchan[4][fanghao]+10*p1.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级商店\n",p1.fangchan[2][fanghao]);
            system("pause");
        }

    }
    }
    else if (p2.fangchan[1][fanghao]==1)
    {
        printf("被收取过路费住宿费%d\n",p2.fangchan[3][fanghao]);
        p1.money=p1.money-p2.fangchan[3][fanghao];
        p2.money=p2.money+p2.fangchan[3][fanghao];
        system("pause");
    }
    }
    else
    {
        switch (p2.dangqian)
    {
        case 1:fanghao=0;break;
        case 2:fanghao=1;break;
        case 4:fanghao=2;break;
        case 5:fanghao=3;break;
        case 6:fanghao=4;break;
        case 7:fanghao=5;break;
        case 8:fanghao=6;break;
        case 10:fanghao=7;break;
        case 11:fanghao=8;break;
        case 12:fanghao=9;break;
        case 13:fanghao=10;break;
        case 14:fanghao=11;break;
        case 15:fanghao=12;break;
        case 17:fanghao=13;break;
        case 18:fanghao=14;break;
        case 19:fanghao=15;break;
        case 23:fanghao=16;break;
        case 24:fanghao=17;break;
        case 25:fanghao=18;break;
        default:break;
    }
    if (p1.fangchan[0][fanghao]==0)
    {
    if (p2.fangchan[0][fanghao]==0)
    {
        printf("1.购下该地皮,花费500,   其他任意数返回\n");
        scanf("%d",&a);
        if (a==1)
        {
            p2.fangchan[0][fanghao]=1;
            p2.money-=500;
        }
    }
    else if (p2.fangchan[1][fanghao]==0)
    {
        printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
        scanf("%d",&a);
        switch (a)
        {
        case 1:p2.fangchan[1][fanghao]=1;p2.money=p1.money-200;p2.fangchan[2][fanghao]=1;p2.fangchan[3][fanghao]=500;break;
        case 2:p2.fangchan[1][fanghao]=2;p2.money=p1.money-200;p2.fangchan[2][fanghao]=1;p2.fangchan[4][fanghao]=50;break;
        default:break;
        }
    }
    else if (p2.fangchan[1][fanghao]==1)
    {
        p2.fangchan[4][fanghao]=0;
        printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p2.fangchan[2][fanghao],500*(p2.fangchan[2][fanghao]+1));
        scanf("%d",&a);
        if (a==1)
        {
            if (p2.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                system("pause");
                goto zuigao;
            }
            p2.fangchan[2][fanghao]++;
            p2.money=p2.money-500*p2.fangchan[2][fanghao];
            p2.fangchan[3][fanghao]=p2.fangchan[3][fanghao]+200*p2.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级旅馆\n",p2.fangchan[2][fanghao]);
            printf("输入任意数字返回\n");
            scanf("%d",&c);
        }
    }
    else
    {
        printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p2.fangchan[1][fanghao],500*p2.fangchan[2][fanghao]);
        scanf("%d",&a);
        if (a==1)
        {
            if (p2.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                printf("输入任意数字返回\n");
                scanf("%d",&c);
                goto zuigao;
            }
            p2.fangchan[2][fanghao]++;
            p2.money=p1.money-500*p2.fangchan[2][fanghao];
            p2.fangchan[4][fanghao]=p2.fangchan[4][fanghao]+10*p2.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级商店\n",p2.fangchan[2][fanghao]);
            system("pause");
        }

    }
    }
    else if (p1.fangchan[1][fanghao]==1)
    {
        printf("被收取过路费住宿费%d\n",p1.fangchan[3][fanghao]);
        p2.money=p2.money-p1.fangchan[3][fanghao];
        p1.money=p1.money+p1.fangchan[3][fanghao];
        system("pause");
    }
    }
zuigao:return 0;
}

    /*人品驿站!!*/

int renpin(int money)
{
    int a,b;
    a=rand()%10;
    b=rand()%2000;
    switch (a)
    {
    case 0:printf("路边捡到一个钱包,获得%d!!\n",b);money=money+b;break;
    case 1:printf("路遇恶狗被咬,住院花费200!!\n");money=money-200;break;
    case 2:printf("见到小偷行窃,见义勇为被奖励500!!\n");money=money+500;break;
    case 3:printf("见到小偷行窃,见义勇为,军体拳耍了16套被砍了32刀,住院花费1000!!");money=money-1000;break;
    case 4:printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是过期彩票,又打的返回~~\n");money=money-100;break;
    case 5:printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是中奖彩票,获得1000元!\n");money=money+1000;break;
    case 6:printf("人民币涨值,资金上涨20%!!\n");money=money+money/5;break;
    case 7:printf("路遇乞丐,被强行勒索100元.\n");money=money-100;break;
    case 8:printf("长得太丑被好心人施舍200\n");money=money+200;break;
    case 9:printf("路边破解残局摊,获利100\n");money=money+100;break;
    }
    system("pause");
    return money;
}

/*作死的加入赌场函数*/

    /*此函数用于判断骰子猜测结果*/
int touzi(int touzi1,int touzi2,int a)
{
    int b,daxiao;
    int he;
    he=touzi1+touzi2;
    if (he>6)
    {
        daxiao=13;
        printf("大!\n");
    }
    else
    {
        daxiao=14;
        printf("小!\n");
    }

    if (a<=12)
    {
        if (a==he)
        {
            b=5;
        }
        else
        {
            b=0;
        }
    }
    else if (a<=14)
    {
        if (a==daxiao)
        {
            b=2;
        }
        else
        {
            b=0;
        }
    }
    else
    {
        if (touzi1==touzi2)
        {
            b=3;
        }
        else
        {
            b=0;
        }
    }

    return b;
}
int duchang(int money)
{
        int z[2][5];
        int x[2][6]={0};
        double beilv;
        int a,b,c,n,d,e,m,choice;
        int touzi1,touzi2,touzi0;
        int num,times,guess,p,q;
        int result;
        int touru;
        char name[20];
        int touzi(int touzi1,int touzi2,int a);
        touzi0=0;
    printf("**************************拉斯维加斯****************************\n输入您的赌场外号:\n");
    gets(name);

    /*此处用于清屏并输出当前个人档案*/

xinxi:
    touzi0++;
    if (touzi0>3)
    {
        goto ended;
    }
    shijian(3);
    if (p1.days>=100)
    {
        goto ended;
    }
    system("cls");
    printf("********************拉斯维加斯********************\n");
    puts(name);
    printf("当前资产:%d",money);
    if (money<500)
    {
        printf("\n身份:贫民\n");
    }
        else if (money<1000)
    {
        printf("\n身份:平民\n");
    }
    else if (money<2000)
    {
        printf("\n身份:小资\n");
    }
    else if (money<5000)
    {
        printf("\n身份:富人\n");
    }
    else if (money<50000)
    {
        printf("\n身份:土豪\n");
    }
    else
    {
        printf("\n身份:首富\n");
    }
    if (money<0)
    {
        printf("没钱还想进赌城~?\n");
        goto ended;
    }

    /*此处开始选择赌博*/

    printf("选择一种活动吧:\n1.掷骰子\n2.猜数\n3.炸金花\n4.21点\n5.退出赌城\n");
    scanf("%d",&choice);

    /*开始掷骰子*/

    if (choice==1)
    {
        system("cls");
        printf("OOOOOOOOOOoooooooooo 掷骰子 ooooooooooOOOOOOOOOO\n");
    touzi1=rand()%6+1;
    touzi2=rand()%6+1;
    printf("开始掷骰子,买定离手咯!\n");
    printf("您要买的是:\n1-12.买点数\n13.买大\n14.买小\n15.买豹子\n");
    scanf("%d",&a);
error3:printf("您买入多少钱呢:\n");
    scanf("%d",&touru);
    if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error3;
        }
    if (touru<0)
    {
        printf("你他妈是在逗我~?\n");
        goto error3;
    }
    printf("开!骰子情况是%d,%d!",touzi1,touzi2);
    b=touzi(touzi1,touzi2,a);
    money=money-touru+touru*b;
    system("pause");
    }

    /*开始猜数*/

    else if (choice==2)
    {
        system("cls");
        printf("//////////////////// 猜数 \\\\\\\\\\\\\\\\\\\\\n");
error1:printf("请输入您的押金,将按您猜数次数呈倍数返还:\n");
        scanf("%d",&touru);
        if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error1;
        }
        if (touru<0)
        {
        printf("你他妈是在逗我~?\n");
        goto error1;
        }
              num=rand()%100;
              for(times=0;times<=10;times++)
              {
                       printf("第%d次猜数:",times+1);
                       scanf("%d",&guess);
                       if (guess>num)
                       {
                              printf("\n猜的大了\n");
                       }
                       else if(guess<num)
                       {
                             printf("\n猜的小了\n");
                       }
                       else
                       {
                              printf("恭喜猜对啦!");
                              break;
                        }
              }
              if (times>=10)
              {
                  printf("10次都猜不出,弱爆了!!\n");
              }

              money=money-touru;
              times=22-2*times;
              beilv=times/10.0;
              money=money+touru*beilv;
              system("pause");
    }
    /*开始炸金花*/
    else if (choice==3)
    {
        system("cls");
        printf("xxxxxxxxxxXXXXXXXXXX 炸金花 XXXXXXXXXXxxxxxxxxxx\n");
        printf("由于本行业为暴利行业,故收取手续费为总金额百分之五,两百元以内则扣十元\n");
        if (money<=200)
        {
            money=money-10;
        }
        else
        {
            money=money*0.95;
        }
        for (m=0;m<=2;m++)
    {
        z[0][m]=rand()%13+1;
        z[1][m]=rand()%13+1;
    }
    /*在此进行排序*/
   for (d=0;d<=1;d++)
    {
        if (z[d][1]>z[d][0])
        {
            e=z[d][0];
            z[d][0]=z[d][1];
            z[d][1]=e;
        }
        if (z[d][2]>z[d][1])
        {
            e=z[d][1];
            z[d][1]=z[d][2];
            z[d][2]=e;
        }
        if (z[d][1]>z[d][0])
        {
            e=z[d][0];
            z[d][0]=z[d][1];
            z[d][1]=e;
        }
    }
    printf("您的手牌是:%d,%d,%d\n",z[0][0],z[0][1],z[0][2]);
error2:printf("您选择跟多少:\n");
    scanf("%d",&touru);
    if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error2;
        }
    if (touru<0)
    {
        printf("你他妈是在逗我~?\n");
        goto error2;
    }
    money=money-touru;

    /*此处开始比大小出结果*/

    for (d=0;d<=1;d++)
    {
        if (z[d][0]==z[d][1] && z[d][1]==z[d][2])
        {
            z[d][3]=4;
            z[d][4]=z[d][0];
        }
        else if (z[d][0]==z[d][1] || z[d][1]==z[d][2] || z[d][0]==z[d][2])
        {
            z[d][3]=2;
            if (z[d][0]==z[d][1])
            {
                z[d][4]=z[d][0];
            }
            else if (z[d][1]==z[d][2])
            {
                z[d][4]=z[d][1];
            }
            else
            {
                z[d][4]=z[d][2];
            }

        }
        else
        {
            if (z[d][0]-z[d][1]==1 && z[d][1]-z[d][2]==1)
            {
                z[d][3]=3;
                z[d][4]=z[d][0];
            }
            else
            {
                z[d][3]=1;
                z[d][4]=z[d][0];
            }
        }
    }
        if (z[0][3]==z[1][3])
        {
            if (z[0][4]>=z[1][4])
            {
                n=2;
            }
            else
            {
                n=0;
            }
        }
        else if (z[0][3]>z[1][3])
        {
            n=2;
        }
        else
        {
            n=0;
        }
    touru=touru*n;
    printf("摊牌:%d,%d,%d \n",z[1][0],z[1][1],z[1][2]);
    printf("您获得%d \n",touru);
    money=money+touru;

    system("pause");
    }
    else if (choice==4)
        /*开始21点*/
    {
        system("cls");
        printf("################### 21点 ###################\n");
error4:printf("请投入押金:\n");
        scanf("%d",&touru);
        if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error4;
        }
        if (touru<0)
    {
        printf("你他妈是在逗我~?\n");
        goto error4;
    }
        money=money-touru;
/*双方发底牌*/
        for(m=0;m<=1;m++)
        {
            for(n=0;n<=1;n++)
            {
                x[m][n]=rand()%13;
                if (x[m][n]==0 || x[m][n]==11 || x[m][n]==12)
                {
                    x[m][n]=10;
                }
            }
        }
        printf("您当前的手牌为:%d,%d",x[0][0],x[0][1]);
        if(x[0][0]==1 && x[0][1]==1)
        {
            printf("玩家双龙!!!\n");
            beilv=5;
            goto under;
        }
        if((x[0][0]==1 && x[0][1]==10) || (x[0][0]==10 && x[0][1]==1))
        {
            printf("玩家21点!!\n");
            beilv=3;
            goto under;
        }
        if((x[1][0]==1 && x[1][1]==10) || (x[1][0]==10 && x[1][1]==1) || (x[1][0]==1 && x[1][1]==1))
        {
            printf("电脑21点!!\n");
            beilv=0;
            goto under;
        }
        printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
        scanf("%d",&a);
        if (a==1)
        {
            goto tanpai;
        }
        x[0][2]=rand()%13;
        if (x[0][2]==0 || x[0][2]==11 || x[0][2]==12)
        {
            x[0][2]=10;
        }
        printf("您的手牌为:%d,%d,%d \n",x[0][0],x[0][1],x[0][2]);
        x[0][5]=x[0][0]+x[0][1]+x[0][2];
        if (x[0][5]>21)
        {
            beilv=0;
            printf("胀死了!");
            goto under;
        }
        printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
        scanf("%d",&a);
        if (a==1)
        {
            goto tanpai;
        }
        x[0][3]=rand()%13;
        if (x[0][3]==0 || x[0][3]==11 || x[0][3]==12)
        {
            x[0][3]=10;
        }
        printf("您的手牌为:%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3]);
        x[0][5]=x[0][5]+x[0][3];
        if (x[0][5]>21)
        {
            beilv=0;
            printf("胀死了!! \n");
            goto under;
        }
        printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
        scanf("%d",&a);
        if (a==1)
        {
            goto tanpai;
        }
        x[0][4]=rand()%13;
        if (x[0][4]==0 || x[0][4]==11 || x[0][3]==12)
        {
            x[0][4]=10;
        }
        printf("您的手牌为:%d,%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3],x[0][4]);
        x[0][5]=x[0][5]+x[0][4];
        if (x[0][5]>21)
        {
            beilv=0;
            printf("胀死了!! \n");
            goto under;
        }
        printf("五小!!\n");
        beilv=3;
        goto under;


tanpai:x[1][5]=x[1][0]+x[1][1];
        for(b=2;(x[1][5]<=17 && b<=4);b++)
        {
            x[1][b]=rand()%13;
            if (x[1][b]==0 || x[1][b]==11 || x[1][b]==12)
            {
                x[1][b]=10;
            }
            printf("电脑加牌:%d\n",x[1][b]);
            x[1][5]=x[1][5]+x[1][b];
            scanf("%d",&a);
        }
        printf("电脑手牌:%d,%d,%d,%d,%d\n",x[1][0],x[1][1],x[1][2],x[1][3],x[1][4]);

        if (x[1][5]>21)
        {
            printf("电脑胀死!\n");
            beilv=2;
            goto under;
        }

        if (x[1][5]>x[0][5])
        {
            printf("电脑大!\n");
            beilv=0;
        }
        else
        {
            printf("玩家大!!\n");
            beilv=2;
        }
under:money=money+touru*beilv;
      system("pause");
    }
    else
    {
        goto ended;
    }
    if (money<=0)
    {
        printf("\n资产用尽,您已被赶出拉斯维加斯\n");
    }
    else
    {
        goto xinxi;
    }

ended:  system("pause");
    return money;
}

 

0
陈喆鹏
陈喆鹏
资深光能
资深光能

#include<stdlib.h>
#include<stdio.h>
#include<time.h> //suiji 
#include<string.h>
#include<windows.h> //SLEEP函数
struct Player //玩家结构体,并初始化player
{
char name[21];
int attack;
int defense;
int health;
long int max_health;
int level;
int exp;
int range_exp;
long int max_exp;
}player={"勇者",50,40,100,100,1,0,0,100};
struct Enemy //怪的结构体,并初始化各种怪
{
char name[20];
char wupin[12];
int attack;
int defense;
int health;
int money;
long int exp;
int wupin_sign;
int wupinpro;
int double_attack;
int miss;
}strongman={"森林巨人","黄金圣衣",40,50,350,200,100,1,2,1,0},
witch={"森林女巫","银甲",25,15,100,50,50,2,2,1,1},
xiyi={"森林蜥蜴","铁甲",18,10,50,30,35,3,3,2,2},
big_strongman={"森林巨人王","巨人之臂",40*5,50*5,350*5,200*5,100*5,4,4,2,0},
lion={"草原雄狮","绝世好剑",60,30,280,200,100,5,2,1,0},
horse={"草原野马","碧血剑",28,12,90,50,50,6,2,1,1},
bee={"草原黄蜂","长剑",17,11,60,30,35,7,3,2,2},
shitu={"使徒","\0",60*8,30*8,280*8,200*8,100*8,9,1,1,0},
guai={"\0","\0",0,0,0,0,0,0,0,0,0};
struct Place
{
int bar,hotel,forest1,forest2,forest3,grass1,grass2,grass3;
}place={1,2,3,4,5,6,7,8};

int max_exp=0;
int choose_number=0,s=0,strongman_arm=0,battle=0,money=500,place_sign=9;
int cao=3,jijiubao=2,baiyao=2,superbaiyao=1,boom=3,dubiao=2,atom_boom=1;
int fang=0,fang1=10,fang1n=0,fang2=20,fang2n=0,fang3=40,fang3n=0,fang4=100,fang4n=0;
int gong=0,gong1=8,gong1n=0,gong2=15,gong2n=0,gong3=25,gong3n=0,gong4=60,gong4n=0;
char gongname[20]="无",fangname[20]="无";
char proof;

void AddWupin(int);
int AttackResult();
void BattleAct();
void ChooseWupin();
void DisplayState();
void OrdinaryAct(); 
int SuiJi();
int SuiJi100();
void WhetherLevelUp();
void SlowDisplay(char *); 

int main()
{


int i=0,j=0,k=0;
char player_name[21];

SlowDisplay("这是一个勇者的世界! 雅莉萨斯国的罗茜公主被陌生人绑架了!\n\n 伟大的勇者啊~拿起你们的武器,营救公主!\n\n\n输入你的名字: (20个字符)\n\n\n");

// sndPlaySound("res\\F005.wav",SND_LOOP);
scanf("%s",player_name); 
strncpy(player.name,player_name,20);
if(strcmp(player.name,"EVA初号机")==0)
{
SlowDisplay("封印多年的 EVA初号机 啊!你终于可以重见天日了!\n\n\n EVA初号机 重新启动... 随即... 暴走!!!\n\n\n");
player.attack=999;
player.defense=999;
player.health=9999;
player.max_health=9999;

getchar();

OrdinaryAct();
return 0;
}

int SuiJi()
{
srand((unsigned)time(NULL));
return rand()%10;
}


int SuiJi100()
{
srand((unsigned)time(NULL));
return rand()%100;
}


void ChooseWupin() //选择物品 并使用
{
printf("物品: 1,止血草%d个 2,急救包%d个 3,云南白药%d个 4,超级云南白药%d个 5,手雷%d个 6,毒标%d个 7,手抛式原子弹%d个 0,返回\n\n\n",cao,jijiubao,baiyao,superbaiyao,boom,dubiao,atom_boom);
switch(scanf("%d",&choose_number),choose_number)
{
case 1:
if(cao>0)
{
SlowDisplay("使用止血草,HP增加60\n\n\n");
cao--;
if(player.health+60>player.max_health)player.health=player.max_health;
else player.health+=60;
}
else SlowDisplay("没有止血草了\n\n\n");
break;
case 2:
if(jijiubao>0)
{
SlowDisplay("使用急救包,HP增加80\n\n\n");
jijiubao--;
if(player.health+80>player.max_health)player.health=player.max_health;
else player.health+=80;
}
else SlowDisplay("没有急救包了\n\n\n");
break;
case 3:
if(baiyao>0)
{
SlowDisplay("使用云南白药,HP增加120\n\n\n");
baiyao--;
if(player.health+120>player.max_health)player.health=player.max_health;
else player.health+=120;
}
else SlowDisplay("没有云南白药了\n\n\n");
break;
case 4:
if(superbaiyao>0)
{
SlowDisplay("使用超级云南白药,HP增加200\n\n\n");
superbaiyao--;
if(player.health+200>player.max_health)player.health=player.max_health;
else player.health+=200;
}
else SlowDisplay("没有超级云南白药了\n\n\n");
break;
case 5:
if(battle) //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
{
if(boom>0)
{
SlowDisplay("使用手雷,敌人HP减少100\n\n\n");
boom--;
guai.health-=100;
AttackResult();
}
}
else SlowDisplay("非战斗状态,不能使用手雷!\n\n\n");
break;
case 6:
if(battle) //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
{
if(dubiao>0)
{
SlowDisplay("使用毒标,敌人HP减少200\n\n\n");
dubiao--;
guai.health-=200;
AttackResult();
}
}
else SlowDisplay("非战斗状态,不能使用毒标!\n\n\n");
break;
case 7:
if(battle) //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
{
if(atom_boom>0)
{
SlowDisplay("使用手抛式原子弹,敌人HP减少500\n\n\n");
atom_boom--;
guai.health-=500;
AttackResult();
}
}
else SlowDisplay("非战斗状态,不能使用手抛式原子弹!\n\n\n");
break;
case 0:break;
default:printf("ChooseWupin error!\n\n\n");
}
}
int AttackResult() //攻击结果:判断是否获胜 是否获得物品 和 是否升级
{
if(guai.health<=0)
{
battle=0;
printf("战斗胜利!获得金币%d,经验%d\n\n\n",guai.money,guai.exp);
player.exp+=guai.exp;
player.range_exp+=guai.exp;
money+=guai.money;
s=SuiJi();
if(s<guai.wupinpro)
{
SlowDisplay("从敌人尸骸中发现");
printf("%s\n\n\n",guai.wupin);
AddWupin(guai.wupin_sign);
}
WhetherLevelUp();
if(strcmp(guai.name,"使徒")==0)
{
puts("战斗胜利,救出公主!!!");
getchar();
getchar();
exit(0);
}
return 1; //攻击有结果了返回1,否则返回0,用于判断是否继续做战斗行为
}
else
{
int s=SuiJi();


if((guai.attack+s-player.defense/3)<0)
{
player.health-=1;
printf("%s反击,你的HP减少了 1\n\n",guai.name);
}
else
{
player.health-=guai.attack+s-player.defense/3;
printf("%s反击,你的HP减少了%d\n\n",guai.name,guai.attack+s-player.defense/3);
}
if(player.health<0)
{
battle=0;
printf("%s战死!金币掉落%d\n\n\n",player.name,player.level*500);
money-=player.level*500;
player.health=player.max_health/5;
OrdinaryAct();//////////
return 1;
}
}
return 0;
}
void AddWupin(int wupin_sign)
{

switch(wupin_sign)
{
case 1:fang4n++; break;
case 2:fang3n++; break;
case 3:fang2n++; break;
case 4:strongman_arm=1;break;
case 5:gong4n++; break;
case 6:gong3n++; break;
case 7:gong2n++; break;
default:printf("AddWupin error\n\n\n");
}

}
void WhetherLevelUp()
{
int i=0,j=0;
int l1=player.range_exp/100;
int l2=player.range_exp/300;
int l3=player.range_exp/600;
if(player.level<=15&&l1>0) //15级以下,经验足够 都满足则升级
{
if(l1==1)
{
printf("%s",player.name);
SlowDisplay(" 升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3;
player.defense+=2;
player.max_health+=20;
player.health=player.max_health;
player.level++;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=100;
}
else
{
printf("好厉害!连升%d级!",l1);
printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l1,2*l1,20*l1);
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3*l1;
player.defense+=2*l1;
player.max_health+=20*l1;
player.health=player.max_health;
player.level+=l1;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=100*l1;
}
}
else if(player.level<=40&&l2>0)
{
if(l2==1)
{
printf("%s",player.name);
SlowDisplay(" 升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3;
player.defense+=2;
player.max_health+=20;
player.health=player.max_health;
player.level++;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=300;
}
else
{
printf("好厉害!连升%d级!",l1);
printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l2,2*l2,20*l2);
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3*l2;
player.defense+=2*l2;
player.max_health+=20*l2;
player.health=player.max_health;
player.level+=l2;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=300*l2;
}
}
else if(l3>0)
{
if(l3==1)
{
printf("%s",player.name);
SlowDisplay(" 升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3;
player.defense+=2;
player.max_health+=20;
player.health=player.max_health;
player.level++;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=600;
}
else
{
printf("好厉害!连升%d级!",l1);
printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l3,2*l3,20*l3);
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3*l3;
player.defense+=2*l3;
player.max_health+=20*l3;
player.health=player.max_health;
player.level+=l3;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=600*l3;
}
}
}
void OrdinaryAct() //正常行为菜单(移动,物品,对话,查看状态,装备,退出游戏)
{

while(1)
{
// \(1000);
// system("cls");
puts("=============================================================================");
printf("要做什么?\n\n\n 1,移动 2,道具 3,对话 4,查看状态 5,装备 0,退出游戏\n\n\n");
puts("=============================================================================");
switch(scanf("%d",&choose_number),choose_number)
{
case 1: //显示移动菜单
SlowDisplay("要去哪里?\n\n\n");
printf("1,酒吧 2,旅馆 3,森林一层 4,森林二层 5,森林三层 6,草原一层 7,草原二层 8,草原三层\n\n\n");
switch(scanf("%d",&choose_number),choose_number)
{
case 1:place_sign=place.bar; //记录目前位置-酒吧
// OrdinaryAct();
break;
case 2:place_sign=place.hotel; //进入旅店
SlowDisplay("要住店吗? 200个金币 1,是 0,否\n\n\n");
choose_number=1;
switch(scanf("%d",&choose_number),choose_number)
{
case 1:if(money-200<0) //判断钱是否够
{
SlowDisplay("Sorry,你的钱不够~\n\n\n"); 
}
else
{
SlowDisplay("好好休息\n\tHP满\n\t\t第二天了\n\n");
money-=200; //花费200住店费
player.health=player.max_health; //体力满
}
break;
case 0:SlowDisplay("下次再来!\n\n\n");break;
default:printf("hotel talk error!\n\n\n");
}
place_sign=0;
break;
case 3:
place_sign=place.forest1;
s=SuiJi(); 
if(s<7)
{
battle=1;
guai=xiyi;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=witch;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
//不用调用OAct函数,会自动执行OAct函数;
}
break;
case 4:
place_sign=place.forest2;
s=SuiJi(); 
if(s<7)
{
battle=1;
guai=witch;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=strongman;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 5:
place_sign=place.forest3;
s=SuiJi(); 
if(s<7)
{
battle=1;
guai=strongman;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=big_strongman;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 6:
place_sign=place.grass1;
s=SuiJi(); 
if(s<7)
{
battle=1;
guai=bee;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=horse;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 7:
place_sign=place.grass2;
s=SuiJi(); 
if(s<7)
{
battle=1;
guai=horse;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=lion;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 8:
place_sign=place.grass3;
s=SuiJi(); 
if(s<7)
{
battle=1;
guai=lion;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1; 
if(strongman_arm)
{
SlowDisplay("神秘老人:\n\n\n 哈哈,年轻人,做的不错,不过...嘿嘿,你上当啦!巨人之臂我要了,公主你也别想带走!\n\n\n");
guai=shitu;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else SlowDisplay("神秘老人:\n\n\n 年轻人,你好啊.如果你有巨人之臂,我可以告诉你公主的下落哦~\n\n\n");
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
default:printf("choose map error!\n\n\n");
}
break;
case 2: ChooseWupin();break; //显示道具,并可以使用.
case 3: //对话选项
if(place_sign==place.bar)
{
SlowDisplay("要和谁说话?\n\n\n1,红发女郎 2,赏金猎人 3,酒吧老板\n\n\n"); //显示对话人物
switch(scanf("%d",&choose_number),choose_number)
{
case 1:
SlowDisplay("红发女郎:\n\n\n 吧台边那个Hunter好帅啊!(~脸红~)\n\n\n听说他经常外出打猎,外面的路他应该很熟悉的!\n\n\n");
break;
case 2:
if(fang1n<1&&gong1n<1)
{
SlowDisplay("赏金猎人:\n\n\n 你要救公主啊!好胆量!\n\n\n 不过外面的丛林和草原很险恶,而且越深越危险,这是匕首和布衣,对你会有些帮助的,拿去吧!\n\n\n");
printf("%s心想:(哇,这位大叔人真好啊!\n\n\n)",player.name);
gong1n++;
fang1n++;
}
else SlowDisplay("赏金猎人:\n\n\n 加油吧,年轻人!\n\n\n 不要被外面森林和草原所吓倒!\n\n\n");
break;
case 3:
printf("要喝点什么?\n\n\n 1,二锅头25金币 HP+20 2,XO酒80金币 HP+50 3,人头马面150金币 HP+100 0,返回\n\n\n");
choose_number=1;
while(choose_number)
{
switch(scanf("%d",&choose_number),choose_number)
{
case 1:if(money<25)
{
SlowDisplay("钱不够!"); 
}
else
{
if(player.health+20<=player.max_health)
{
SlowDisplay("HP+20.");
money-=25;
player.health+=20;
}
else
{
SlowDisplay("HP满了"); 
player.health=player.max_health;
}
}
break;
case 2:if(money<80)
{
SlowDisplay("钱不够!"); 
}
else
{
if(player.health+50<=player.max_health)
{
SlowDisplay("HP+50.");
money-=80;
player.health+=50;
}
else
{
SlowDisplay("HP满了"); 
player.health=player.max_health;
}
}
break;
case 3:if(money<150)
{
SlowDisplay("钱不够!"); 
}
else
{
if(player.health+100<=player.max_health)
{
SlowDisplay("HP+100.");
money-=150;
player.health+=100;
}
else
{
SlowDisplay("HP满了"); 
player.health=player.max_health;
}
}
break;
case 0:SlowDisplay("下次再来!\n");break;
default:SlowDisplay("输入错误\n\n\n");
}
}
}
}
else if(place_sign==place.hotel)
SlowDisplay("“老板娘!我...”\n\n\n“我忙着呢,没空理你~”\n\n\n");
else SlowDisplay("这里好像没人可以聊天\n\n\n");
break;
case 4: DisplayState(); break; //显示状态
case 5: //装备
printf("攻装: 1,匕首:%d个 2,长剑:%d个 3,碧血剑:%d个 4,绝世好剑:%d个\n\n\n",gong1n,gong2n,gong3n,gong4n);
printf("防装: 5,布衣:%d个 6,铁甲:%d个 7,银甲:%d个 8,黄金圣衣:%d个\t\t0,返回\n\n\n",fang1n,fang2n,fang3n,fang4n);
SlowDisplay("选择要装备的武器或防具:\n\n\n");
switch(scanf("%d",&choose_number),choose_number)
{
case 1:if(gong1n>=1)
{
SlowDisplay("拿起了匕首\n\n\n");
gong=gong1;
strcpy(gongname,"匕首");
}
else SlowDisplay("你没有匕首可以装备\n\n\n");
break;
case 2:if(gong2n>=1)
{
SlowDisplay("拿起了长剑\n\n\n");
gong=gong2;
strcpy(gongname,"长剑");
}
else SlowDisplay("你没有长剑可以装备\n\n\n");
break;
case 3:if(gong3n>=1)
{
SlowDisplay("拿起了碧血剑\n\n\n");
gong=gong3;
strcpy(gongname,"碧血剑");
}
else SlowDisplay("你没有碧血剑可以装备\n\n\n");
break;
case 4:if(gong4n>=1)
{
SlowDisplay("拿起了绝世好剑\n\n\n");
gong=gong4;
strcpy(gongname,"绝世好剑");
}
else SlowDisplay("你没有绝世好剑可以装备\n\n\n");
break;
case 5:if(fang1n>=1)
{
SlowDisplay("穿上了布衣\n\n\n");
fang=fang1;
strcpy(fangname,"布衣");
}
else SlowDisplay("你没有布衣可以装备\n\n\n");
break;
case 6:if(fang2>=1)
{
SlowDisplay("穿上了铁甲\n\n\n");
fang=fang2;
strcpy(fangname,"铁甲");
}
else SlowDisplay("你没有铁甲可以装备\n\n\n");
break;
case 7:if(fang3n>=1)
{
SlowDisplay("穿上了银甲\n\n\n");
fang=fang3;
strcpy(fangname,"银甲");
}
else SlowDisplay("你没有银甲可以装备\n\n\n");
break;
case 8:if(fang4n>=1)
{
SlowDisplay("穿上了黄金圣衣\n\n\n");
fang=fang4;
strcpy(fangname,"黄金圣衣");
}
else SlowDisplay("你没有黄金圣衣可以装备\n\n\n");
break;
case 0:SlowDisplay("未更换装备\n\n\n");break;
default:printf("change error!");
}
break;
case 0:
SlowDisplay("确定退出游戏?(Y/N)\n\n\n");
getchar();
proof=getchar();
if(proof=='y'||proof=='Y')
{
SlowDisplay("数据存储中...");
//向文件中更新数据;
getchar();
SlowDisplay("按回车退出");
getchar();
return;
}
else if(proof=='n'||proof=='N')printf("继续游戏!\n\n\n");
else SlowDisplay("继续!\n\n\n");
break;
default:SlowDisplay("输入错误!\n\n\n");
}
}
}
void DisplayState()
{
printf("%s 攻击力:%d+%d=%d 防御力:%d+%d=%d HP:%d/%d \n\n\n",player.name,player.attack,gong,player.attack+gong,player.defense,fang,player.defense+fang,player.health,player.max_health);
printf("武器: %s 防具: %s \n\n\n",gongname,fangname);
printf("等级:%d 经验:%d/%d 还需要%d经验升级 金币:%d \n\n\n",player.level,player.exp,player.max_exp,player.max_exp-player.exp,money);
}
void BattleAct()
{
while(1)
{
puts("=============================================================================");
printf("要怎么办?\n\n\n 1,攻击 2,物品 3,查看状态 4,逃跑\n\n\n");
switch(scanf("%d",&choose_number),choose_number)
{
case 1:
s=SuiJi();
printf("%s攻击! %sHP减少%d\n\n\n",player.name,guai.name,player.attack+s+gong-guai.defense/3);
guai.health-=player.attack+s+gong-guai.defense/3;
if(AttackResult())return; //如果攻击有结果(敌人或玩家战死)退出函数
else continue;
case 2: ChooseWupin();break; //选择物品,可以使用,战斗中允许使用攻击性物品
case 3:DisplayState();break; //显示状态
case 4:
s=SuiJi();
if(s<4) //40%的概率可以逃跑
{
printf("%s逃跑了~\n\n\n",player.name);
battle=0;
return;
}
else printf("%s逃跑失败!\n\n\n",player.name);
break;
default:SlowDisplay("输入错误,重新输入!\n\n\n");
}
}
}
void SlowDisplay(char *p)
{
while(1)
{
if(*p!=0)
printf("%c",*p++);
else
break;
Sleep(100);
}
}

0
陈喆鹏
陈喆鹏
资深光能
资深光能

#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
using namespace std;
double shanghai[20]={0.6,1.1,2,3.16,5.5,7,10,20,50,100,146.23,254.13,312,403,601,1023};
double bosshealth[20]={2,3,4,5.9,8,14,19,32,73,157,200,403,801,1200,3630,20123};
double wj_shanghai=1,wj_health=10,wj_max_health=10,boss,wj_money;
void chushihua();
void game();
void gongji();
void goumai();
void shangdian();
void zhujiemian();
void fangyu();
void cend();
void chushou();
void print(char[]);
int bishou=0,caidao=0,jian=0,shenjian=0;
double bishou_1=5,caidao_1=17,jian_1=58,shenjian_1=123.1;
int hat=0,douhui=0,hudun=0,hunjia=0,shendun=0;
double hat_1=7,douhui_1=21,hudun_1=49,hunjia_1=89,shendun_1=210.4;
void cend()
{
    system("cls");
    print("GAME OVER");
    exit(1);
}
void game()
{
    int k;
    chushihua();
    IO:
    printf("请输入对手等级 (0~15)\n");
    scanf("%d",&k);
    if(k>15||k<0)
    {
        system("cls");
        goto IO;
    }
    boss=bosshealth[k];
    system("cls");
    while(wj_health>=0)
    {
        srand(time(NULL));
        QP:
        printf("1.逃跑        2.进攻\n");
        char s=getch();
        if(s<'1'||s>'2')
        {
            system("cls");
            goto QP;
        }
        if(s=='1')
        {
            system("cls");
            zhujiemian();
        }
        system("cls");
        double l=shanghai[k]*((rand()%2)+1)+fabs(double(rand()%100/100-2));
        printf("对手对你造成了%lf点伤害\n",l);
        wj_health-=l;
        printf("你当前剩余血量:%lf\n",wj_health);
        if(wj_health<=0)
            cend();
        double o=wj_shanghai*((rand()%2)+1)+double(rand()%10/10);
        boss-=o;
        printf("你对对手造成了%lf点伤害\n",o);
        printf("对手当前剩余血量:%lf\n\n",boss);
        if(boss<=0)
        {
            printf("胜利!\n获得%lf金币\n\n当前剩余血量:%lf\n",shanghai[k]+3,wj_health);
            wj_money+=shanghai[k]+3;
            printf("\n余额:%lf\n",wj_money);
            getch();
            if(k==15)
            {
                printf("恭喜玩家!游戏胜利!\n");
                getch();
                exit(1);
            }
            system("cls");
            zhujiemian();
        }
    }
}
void zhujiemian()
{
    PO:
    printf("1.商店 2.战斗 3.回血 4.状态\n");
    char k=getch();
    if(k>'4'||k<'1')
    {
        system("cls");
        goto PO;
    }
    if(k=='1')
    {
        system("cls");
        shangdian();
        return;
    }
    if(k=='2')
    {
        system("cls");
        game();
        return;
    }
    if(k=='3')
    {
        system("cls");
        if(wj_money>0)
        {
            wj_money=wj_money*4/5-1;
            chushihua();
            wj_health=wj_max_health;
            printf("回血成功!\n");
            getch();
            system("cls");
            goto PO;
        }
        else
        {
            printf("余额不足!\n");
            getch();
            system("cls");
            goto PO;
        }
    }
    if(k=='4')
    {
        chushihua(); 
        system("cls");
        printf("生命值:%lf\n",wj_health);
        printf("最大生命值:%lf\n",wj_max_health);
        printf("攻击力:%lf\n",wj_shanghai);
        printf("金币:%lf\n",wj_money); 
        getch();
        system("cls");
        goto PO;
    }
    if(k=='5')
    {
        string a;
        system("cls");
        printf("输入密码!\n");
        cin>>a;
        if(a=="songyudashuaibi"||a=="PI")
        {
            wj_money+=1000;
            printf("外挂生效\n");
            Sleep(1000);
            system("cls");
            goto PO;
        }
        printf("外挂失败\n");
        Sleep(1000);
        system("cls");
        goto PO;
    }
}
void shangdian()
{
    LK:
    printf("1.购买 2.返回主界面\n");
    char k=getch();
    if(k!='1'&&k!='2')
    {
        system("cls");
        goto LK;
    }
    if(k=='1')
    {
        system("cls");
        goumai();
        goto LK;
    }
    if(k=='2')
    {
        system("cls");
        zhujiemian();
        return;
    }
}
void goumai()
{
    ML:
    printf("1.攻击 2.防御 3.返回主界面\n");
    char k=getch();
    if(k!='1'&&k!='2'&&k!='3')
    {
        system("cls");
        goto ML;
    }
    if(k=='1')
    {
        system("cls");
        gongji();
        goto ML;
    }
    if(k=='3')
    {
        system("cls");
        zhujiemian();
        return;
    }
    if(k=='2')
    {
        fangyu();
    }

void gongji()
{
    OP:
    system("cls");
    printf("0.返回上界面\n");
    printf("1.返回主界面\n");
    printf("2.匕首 5金币\n");
    printf("3.菜刀 17金币\n");
    printf("4.剑 68金币\n");
    printf("5.圣剑 210金币\n");
    printf("提醒:金币价格与伤害成正比\n");
    char k=getch();
    if(k<'0'||k>'5')
    {
        system("cls");
        goto OP;
    }
    if(k=='0')
    {
        system("cls");
        goumai();
        return;
    }
    if(k=='1')
    {
        system("cls");
        zhujiemian();
        return;
    }
    if(k=='2')
    {
        if(wj_money>=bishou_1)
        {
            chushihua();
            system("cls");
            wj_money-=bishou_1;
            bishou++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        system("cls");
        goto OP;
    }
    if(k=='3')
    {
        if(wj_money>=caidao_1)
        {
            chushihua();
            system("cls");
            wj_money-=caidao_1;
            caidao++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        goto OP;
    }
    if(k=='4')
    {
        if(wj_money>=jian_1)
        {
            chushihua();
            system("cls");
            wj_money-=jian_1;
            jian++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        goto OP;
    }
    if(k=='5')
    {
        if(wj_money>=shenjian_1)
        {
            chushihua();
            system("cls");
            wj_money-=shenjian_1;
            shenjian++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        goto OP;
    }
}
void fangyu()
{
    OP:
    system("cls");
    printf("0.返回上界面\n");
    printf("1.返回主界面\n");
    printf("2.帽子 7金币\n");
    printf("3.头盔 21金币\n");
    printf("4.护盾 49金币\n");
    printf("5.盔甲 89金币\n");
    printf("6.圣盾 210金币\n");
    printf("提醒:金币价格与伤害成正比\n");
    char k=getch();
    if(k<'0'||k>'6')
    {
        system("cls");
        goto OP;
    }
    if(k=='0')
    {
        system("cls");
        goumai();
        return;
    }
    if(k=='1')
    {
        system("cls");
        zhujiemian();
        return;
    }
    if(k=='2')
    {
        if(wj_money>=hat_1)
        {
            chushihua();
            system("cls");
            wj_money-=hat_1;
            hat++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        system("cls");
        goto OP;
    }
    if(k=='3')
    {
        if(wj_money>=douhui_1)
        {
            chushihua();
            system("cls");
            wj_money-=douhui_1;
            douhui++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        goto OP;
    }
    if(k=='4')
    {
        if(wj_money>=hudun_1)
        {
            chushihua();
            system("cls");
            wj_money-=hudun_1;
            hudun++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        goto OP;
    }
    if(k=='5')
    {
            chushihua();
        if(wj_money>=hunjia_1)
        {
            system("cls");
            wj_money-=hunjia_1;
            hunjia++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        goto OP;
    }
    if(k=='6')
    {
        if(wj_money>=shendun_1)
        {
            chushihua();
            system("cls");
            wj_money-=shendun_1;
            shendun++;
            goto OP;
        }
        system("cls");
        printf("余额不足!\n");
        getch();
        goto OP;
    }
}
void chushihua()
{
    wj_max_health=hat*hat_1+douhui*douhui_1+hudun*hudun_1+hunjia*hunjia_1+shendun*shendun_1+10;
    wj_shanghai=bishou*bishou_1+caidao*caidao_1+jian*jian_1+shenjian*shenjian_1+1;
}
void print(char a[])
{
    int s=strlen(a);
    for(int i=0;i<s;i++)
    {
        cout<<a[i];
        Sleep(400);
    }
    getch(); 
    system("cls");
}
int main()
{
    system("title game");
    print("陈喆鹏出品:打怪小游戏");
    zhujiemian();
    return 0;
}

0
陈喆鹏
陈喆鹏
资深光能
资深光能

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
struct player
    {
        char allname[20];
        int money,dangqian;
        int fangchan[5][19];
        char name;
        int hours;
        int days;
        int turns;
    }p1,p2;
 
int main(void)
{
    FILE *fp;
    int shijian(int a);
    int qipan(char weizhi[28]);
    int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name);
    int houtui(int houtuibs,int dangqian,char weizhi[28],char name);
    int renpin(int money);
    int duchang(int money);
    int meiqian(int money);
 
    int houtuibs;
    int choice;
    int qianjinbs;
    int m,n,p,q;
    int a,b,c;
    char weizhi[28]="                          ";
    int fang(int turns);
    srand( (unsigned)time( NULL ) );
    p1.turns=1;
    p1.hours=0;
    p1.days=0;
    p1.dangqian=0;
    p2.dangqian=0;
    b=0;
    p1.money=5000;
    p2.money=5000;
    printf("欢迎来到大富翁的世界!!大富翁的世界有你更精彩!!!\n");
    printf("1.新的旅程\n2.旧的回忆\n");
    scanf("%d",&a);
    if (a==2)
    {
        printf("请输入存档时1p的名字:\n");
        getchar();
        gets(p1.allname);
        printf("%s", p1.allname);
        fp=fopen(p1.allname,"rb");
        fread(&p1,sizeof(struct player),1,fp);
        fread(&p2,sizeof(struct player),1,fp);
        fclose(fp);
        goto turn;
    }
    printf("输入1p的名字(注意首字母最好为英文):\n");
    scanf("%d",&a);
    gets(p1.allname);
    p1.name=1;
    printf("输入2P的名字(注意首字母最好为英文): \n");
    scanf("%d",&a);
    gets(p2.allname);
    p2.name=2;
    turn:
    if (p1.turns)
    {
        system("cls");
     weizhi[p1.dangqian]=1;
     weizhi[p2.dangqian]=2;
    qipan(weizhi);
    printf("第%d天\n",p1.days);
 
        if (p1.money<500)
    {
        printf("身份:贫民:   ");
    }
        else if (p1.money<10000)
    {
        printf("身份:平民:   ");
    }
    else if (p1.money<20000)
    {
        printf("身份:小资:   ");
    }
    else if (p1.money<50000)
    {
        printf("身份:富人:   ");
    }
    else if (p1.money<500000)
    {
        printf("身份:土豪:   ");
    }
    else
    {
        printf("身份:首富:   ");
    }
    puts(p1.allname);
    printf("金钱:%d\n",p1.money);
    weizhi[p1.dangqian]=' ';
    printf("请选择操作:0.存档         1.查看个人房产       2.前进\n");
    scanf("%d",&choice);
    if (choice==0)
    {
        fp=fopen(p1.allname,"wb");
        fwrite(&p1,sizeof(struct player),1,fp);
        fwrite(&p2,sizeof(struct player),1,fp);
        fclose(fp);
        goto turn;
    }
    else if (choice==1)
    {
        for (a=0;a<=19;a++)
        {
            if (p1.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p1.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p1.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p1.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p1.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                }
 
            }
        }
        system("pause");
        goto turn;
    }
    else if (choice==9)
    {
        qianjinbs=1;
        goto miji;
    }
    else
    {
        shijian(12);
        if (p1.days>=100)
    {
        goto end;
    }
        qianjinbs=rand()%6;
        qianjinbs=qianjinbs+1;
miji:printf("你投出了%d点!",qianjinbs);
        p1.dangqian=qianjin(qianjinbs,p1.dangqian,weizhi,p1.name);
jintui:switch (p1.dangqian)
        {
        case 0:printf("停在起点奖励1000!\n");p1.money+=1000;system("pause");break;
        case 3:printf("前进三格!\n");c=3;p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);goto jintui;
        case 9:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p1.money=renpin(p1.money);;break;
        case 16:printf("后退两格!\n");c=2;p1.dangqian=houtui(c,p1.dangqian,weizhi,p1.name);goto jintui;
        case 20:{printf("进入赌场!!\n");
            Sleep(500);
            p1.money=duchang(p1.money);
            if (p1.days>=100)
    {
        goto end;
    }
            break;}
        case 21:printf("前进两格!\n");c=2;p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);goto jintui;
        case 22:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p1.money=renpin(p1.money);;break;
        default:fang(p1.turns);break;
        }
         system("cls");
         weizhi[p1.dangqian]=1;
         qipan(weizhi);
        weizhi[p1.dangqian]=' ';
        for (b=1,a=0;a<=18;a++)
        {
        if (p1.fangchan[1][a]==2)
        {
            printf("%d号商店收益:%d  ",a,p1.fangchan[4][a]);
            p1.money=p1.money+p1.fangchan[4][a];
            b++;
            if (b==4)
            {
                printf("\n");
                b=1;
            }
        }
 
        }
        system("pause");
        p1.turns=0;
        goto turn;
    }
    }
    else
    {
        system("cls");
     weizhi[p1.dangqian]=1;
     weizhi[p2.dangqian]=2;
    qipan(weizhi);
    printf("第%d天\n",p1.days);
 
        if (p2.money<500)
    {
        printf("身份:贫民:   ");
    }
        else if (p2.money<10000)
    {
        printf("身份:平民:   ");
    }
    else if (p2.money<20000)
    {
        printf("身份:小资:   ");
    }
    else if (p2.money<50000)
    {
        printf("身份:富人:   ");
    }
    else if (p2.money<500000)
    {
        printf("身份:土豪:   ");
    }
    else
    {
        printf("身份:首富:   ");
    }
    puts(p2.allname);
    printf("金钱:%d\n",p2.money);
    weizhi[p2.dangqian]=' ';
    printf("请选择操作:0.存档         1.查看个人房产       2.前进\n");
    scanf("%d",&choice);
    if (choice==0)
    {
        fp=fopen(p1.allname,"wb");
        fwrite(&p1,sizeof(struct player),1,fp);
        fwrite(&p2,sizeof(struct player),1,fp);
        fclose(fp);
        goto turn;
    }
    else if (choice==1)
    {
/* 输出个人信息,真特么麻烦 */
 
 
        for (a=0;a<=19;a++)
        {
            if (p2.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p2.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p2.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p2.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p2.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p2.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p2.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                }
 
            }
        }
        system("pause");
        goto turn;
    }
    else if (choice==9)
    {
        qianjinbs=1;
        goto miji2;
    }
    else
    {
        shijian(12);
        if (p1.days>=100)
    {
        goto end;
    }
        a=rand()%6;
        qianjinbs=a+1;
miji2:printf("你投出了%d点!",qianjinbs);
        p2.dangqian=qianjin(qianjinbs,p2.dangqian,weizhi,p2.name);
jintui2:switch (p2.dangqian)
        {
        case 0:printf("停在起点奖励1000!\n");p2.money+=1000;system("pause");break;
        case 3:printf("前进三格!\n");c=3;p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);goto jintui2;
        case 9:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p2.money=renpin(p2.money);;break;
        case 16:printf("后退两格!\n");c=2;p2.dangqian=houtui(c,p2.dangqian,weizhi,p2.name);goto jintui2;
        case 20:{printf("进入赌场!!\n");
            Sleep(500);
            p2.money=duchang(p2.money);
            if (p1.days>=100)
    {
        goto end;
    }
            break;}
        case 21:printf("前进两格!\n");c=2;p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);goto jintui2;
        case 22:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p2.money=renpin(p2.money);;break;
        default:fang(p1.turns);break;
        }
         system("cls");
         weizhi[p2.dangqian]=2;
         qipan(weizhi);
        weizhi[p2.dangqian]=' ';
        for (b=1,a=0;a<=18;a++)
        {
        if (p2.fangchan[1][a]==2)
        {
            printf("%d号商店收益:%d  ",a,p2.fangchan[4][a]);
            p2.money=p2.money+p2.fangchan[4][a];
            b++;
            if (b==4)
            {
                printf("\n");
                b=1;
            }
        }
 
        }
        system("pause");
        p1.turns=1;
        goto turn;
    }
    }
end:printf("名字:");
        puts(p1.allname);
        if (p1.money<3000)
    {
        printf("身份:贫民\n");
        printf("弱爆了你,才这点钱~!\n");
        m=10;
    }
        else if (p1.money<5000)
    {
        printf("身份:平民\n");
        printf("勉勉强强够糊口吧~~~\n");
        m=20;
    }
    else if (p1.money<10000)
    {
        printf("身份:小资\n");
        printf("还好还好不算丢脸~~~\n");
        m=30;
    }
    else if (p1.money<20000)
    {
        printf("身份:富人\n");
        printf("十分不错,RP棒棒哒~~!!\n");
        m=40;
    }
    else if (p1.money<50000)
    {
        printf("身份:土豪\n");
        printf("土豪我们做朋友吧~");
        m=50;
    }
    else
    {
        printf("身份:首富\n");
        printf("膜拜。。。");
        m=60;
    }
        printf("\n金钱:%d\n",p1.money);
        for (a=0,c=0;a<=19;a++)
        {
            if (p1.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p1.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p1.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p1.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p1.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                    c++;
                }
 
            }
        }
    if (c==0)
    {
        printf("没地?别说我认识你啊。。。\n");
        n=10;
    }
    else if (c<5)
    {
        printf("啧啧。。怎么混的你竟然才这么点地?\n");
        n=20;
    }
    else if (c<10)
    {
        printf("算是勉强勉强够混口饭吃了吧。。。\n");
        n=30;
    }
    else if (c<18)
    {
        printf("没错你就是传说中无恶不作的房地产大商!!!\n");
        n=40;
    }
    else
    {
        printf("买下所有地皮,达成最高成就:城主!!\n");
        n=60;
    }
    p=m+n;
    printf("最终积分为:%d",p);
 
    system("pause");
 
    system("cls");
    printf("名字:");
        puts(p2.allname);
        if (p2.money<3000)
    {
        printf("身份:贫民\n");
        printf("弱爆了你,才这点钱~!\n");
        m=10;
    }
        else if (p2.money<5000)
    {
        printf("身份:平民\n");
        printf("勉勉强强够糊口吧~~~\n");
        m=20;
    }
    else if (p2.money<10000)
    {
        printf("身份:小资\n");
        printf("还好还好不算丢脸~~~\n");
        m=30;
    }
    else if (p2.money<20000)
    {
        printf("身份:富人\n");
        printf("十分不错,RP棒棒哒~~!!\n");
        m=40;
    }
    else if (p2.money<50000)
    {
        printf("身份:土豪\n");
        printf("土豪我们做朋友吧~");
        m=50;
    }
    else
    {
        printf("身份:首富\n");
        printf("膜拜。。。");
        m=60;
    }
        printf("\n金钱:%d\n",p2.money);
        for (a=0,c=0;a<=19;a++)
        {
            if (p2.fangchan[0][a]==1)
            {
                switch (a)
                {
                case 0:printf("火星大道1号\n");b=1;break;
                case 1:printf("火星大道2号\n");b=1;break;
                case 2:printf("解放路1号\n");b=1;break;
                case 3:printf("解放路2号\n");b=1;break;
                case 4:printf("解放路3号\n");b=1;break;
                case 5:printf("解放路4号\n");b=1;break;
                case 6:printf("解放路5号\n");b=1;break;
                case 7:printf("花炮大道1号\n");b=1;break;
                case 8:printf("花炮大道2号\n");b=1;break;
                case 9:printf("花炮大道3号\n");b=1;break;
                case 10:printf("花炮大道4号\n");b=1;break;
                case 11:printf("花炮大道5号\n");b=1;break;
                case 12:printf("花炮大道6号\n");b=1;break;
                case 13:printf("花炮大道7号\n");b=1;break;
                case 14:printf("花炮大道8号\n");b=1;break;
                case 15:printf("花炮大道9号\n");b=1;break;
                case 16:printf("桂花路1号\n");b=1;break;
                case 17:printf("桂花路2号\n");b=1;break;
                case 18:printf("桂花路3号\n");b=1;break;
                default:break;
                }
                if (b==1)
                {
                    if (p2.fangchan[1][a]==1)
                    {
                        printf("建设旅馆一座:\n");
                        printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
                        printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
                        printf("\n");
                    }
                    else if(p2.fangchan[1][a]==2)
                    {
                        printf("建设商店一座:\n");
                        switch (p2.fangchan[2][a])
                        {
                        case 1:printf("等级:小卖部\n");break;
                        case 2:printf("等级:商店\n");break;
                        case 3:printf("等级:超市\n");break;
                        case 4:printf("等级:全国连锁超市\n");break;
                        case 5:printf("等级:世界连锁贸易市场\n");break;
                        default:break;
                        }
                        printf("每回合收入为:%d",p2.fangchan[4][a]);
                        printf("\n");
                    }
                    else
                    {
                        printf("仅有地皮一份。\n");
                    }
                    c++;
                }
 
            }
        }
    if (c==0)
    {
        printf("没地?别说我认识你啊。。。\n");
        n=10;
    }
    else if (c<5)
    {
        printf("啧啧。。怎么混的你竟然才这么点地?\n");
        n=20;
    }
    else if (c<10)
    {
        printf("算是勉强勉强够混口饭吃了吧。。。\n");
        n=30;
    }
    else if (c<18)
    {
        printf("没错你就是传说中无恶不作的房地产大商!!!\n");
        n=40;
    }
    else
    {
        printf("买下所有地皮,达成最高成就:城主!!\n");
        n=60;
    }
    q=m+n;
    printf("您的最终积分为:%d",q);
    if (p>q)
    {
        printf("1P更胜一筹哦!\n");
    }
    else if (q>p)
    {
        printf("2P更强一些诶!\n");
    }
    else
    {
        printf("十分和谐有爱的平手!\n");
    }
 
    system("pause");
    printf("想看彩蛋吗?输入1则继续!输入其他数字退出~\n");
    scanf("%d",&a);
    if (a)
    {
caidan:system("cls");
    for (a=1;a<=100;a++)
    {
        printf("壮哉我大622~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    }
    printf("没错这就是彩蛋!\n");
    printf("好啦游戏结束~~");
    }
    else
    {
        printf("不看也得看!!\n");
        system("pause");
        goto caidan;
    }
    system("pause");
 
    return 0;
}
 
 
/*时间*/
int shijian(int a)
{
    p1.hours+=a;
    if (p1.hours>=12)
    {
        p1.hours-=12;
        p1.days++;
    }
 
    return 0;
}
 
/*定义界面函数*/
int qipan(char weizhi[28])
    {
        system("cls");
        printf("_____________________________________________________________\n");
        printf("|%c   1|%c   2|%c   3|%c   4|%c   5|%c   6|%c   7|%c   8|%c   9|%c  10|\n",weizhi[0],weizhi[1],weizhi[2],weizhi[3],weizhi[4],weizhi[5],weizhi[6],weizhi[7],weizhi[8],weizhi[9]);
        printf("|开始 |火 星|大 道|前进 |     | 解  |  放 |  路 |     |人品 |\n");
        printf("|     |1 号 |2 号 |3 格 |1 号 |2 号 |3 号 |4 号 |5 号 |驿站 |\n");
        printf("-------------------------------------------------------------\n");
        printf("|%c  26|                                               |%c  11|\n",weizhi[25],weizhi[10]);
        printf("|桂   |                                               |     |\n");
        printf("|3 号 |                                               |1 号 |\n");
        printf("|-----|                                               |-----|\n");
        printf("|%c  25|                                               |%c  12|\n",weizhi[24],weizhi[11]);
        printf("|花   |           大      富      翁                  |花   |\n");
        printf("|2 号 |                                               |2 号 |\n");
        printf("|-----|                                               |-----|\n");
        printf("|%c  24|                                               |%c  13|\n",weizhi[23],weizhi[12]);
        printf("|路   |                                               |炮   |\n");
        printf("|1 号 |                                               |3 号 |\n");
        printf("-------------------------------------------------------------\n");
        printf("|%c  23|%c  22|%c  21|%c  20|%c  19|%c  18|%c  17|%c  16|%c  15|%c  14|\n",weizhi[22],weizhi[21],weizhi[20],weizhi[19],weizhi[18],weizhi[17],weizhi[16],weizhi[15],weizhi[14],weizhi[13]);
        printf("|人品 |前进 |赌场 |     |     |     |后退 |     |道   |大   |\n");
        printf("|驿站 |2 格 |     |9 号 |8 号 |7 号 |2 格 |6 号 |5 号 |4 号 |\n");
        printf("-------------------------------------------------------------\n");
        return 0;
    }
 
/*定义前进函数*/
    int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name)
    {
        int a,b;
        for(b=0;b<qianjinbs;b++)
        {
            dangqian++;
            if (dangqian>=26)
            {
                dangqian=0;
            }
            weizhi[dangqian]=name;
            Sleep(1000);
            qipan(weizhi);
            weizhi[dangqian]=' ';
        }
 
        return dangqian;
    }
/*定义后退函数*/
    int houtui(int houtuibs,int dangqian,char weizhi[28],char name)
    {
        int a,b;
        for(b=0,a=0;b<houtuibs;b++)
        {
            if (dangqian<=0)
            {
                dangqian=0;
            }
            else
            {
                dangqian=dangqian-1;
            }
            weizhi[dangqian]=name;
            Sleep(1000);
            qipan(weizhi);
            weizhi[dangqian]=' ';
        }
 
        return dangqian;
    }
 
 
    /*一大作死项目:房地产!*/
 
   int fang(int turns)
   {
    int fanghao;
    int a,b,c;
    if (p1.turns)
    {
    switch (p1.dangqian)
    {
        case 1:fanghao=0;break;
        case 2:fanghao=1;break;
        case 4:fanghao=2;break;
        case 5:fanghao=3;break;
        case 6:fanghao=4;break;
        case 7:fanghao=5;break;
        case 8:fanghao=6;break;
        case 10:fanghao=7;break;
        case 11:fanghao=8;break;
        case 12:fanghao=9;break;
        case 13:fanghao=10;break;
        case 14:fanghao=11;break;
        case 15:fanghao=12;break;
        case 17:fanghao=13;break;
        case 18:fanghao=14;break;
        case 19:fanghao=15;break;
        case 23:fanghao=16;break;
        case 24:fanghao=17;break;
        case 25:fanghao=18;break;
        default:break;
    }
    if (p2.fangchan[0][fanghao]==0)
    {
    if (p1.fangchan[0][fanghao]==0)
    {
        printf("1.购下该地皮,花费500,   其他任意数返回\n");
        scanf("%d",&a);
        if (a==1)
        {
            p1.fangchan[0][fanghao]=1;
            p1.money-=500;
        }
    }
    else if (p1.fangchan[1][fanghao]==0)
    {
        printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
        scanf("%d",&a);
        switch (a)
        {
        case 1:p1.fangchan[1][fanghao]=1;p1.money=p1.money-200;p1.fangchan[2][fanghao]=1;p1.fangchan[3][fanghao]=500;break;
        case 2:p1.fangchan[1][fanghao]=2;p1.money=p1.money-200;p1.fangchan[2][fanghao]=1;p1.fangchan[4][fanghao]=50;break;
        default:break;
        }
    }
    else if (p1.fangchan[1][fanghao]==1)
    {
        p1.fangchan[4][fanghao]=0;
        printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p1.fangchan[2][fanghao],500*(p1.fangchan[2][fanghao]+1));
        scanf("%d",&a);
        if (a==1)
        {
            if (p1.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                system("pause");
                goto zuigao;
            }
            p1.fangchan[2][fanghao]++;
            p1.money=p1.money-500*p1.fangchan[2][fanghao];
            p1.fangchan[3][fanghao]=p1.fangchan[3][fanghao]+200*p1.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级旅馆\n",p1.fangchan[2][fanghao]);
            printf("输入任意数字返回\n");
            scanf("%d",&c);
        }
    }
    else
    {
        printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p1.fangchan[1][fanghao],500*p1.fangchan[2][fanghao]);
        scanf("%d",&a);
        if (a==1)
        {
            if (p1.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                printf("输入任意数字返回\n");
                scanf("%d",&c);
                goto zuigao;
            }
            p1.fangchan[2][fanghao]++;
            p1.money=p1.money-500*p1.fangchan[2][fanghao];
            p1.fangchan[4][fanghao]=p1.fangchan[4][fanghao]+10*p1.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级商店\n",p1.fangchan[2][fanghao]);
            system("pause");
        }
 
    }
    }
    else if (p2.fangchan[1][fanghao]==1)
    {
        printf("被收取过路费住宿费%d\n",p2.fangchan[3][fanghao]);
        p1.money=p1.money-p2.fangchan[3][fanghao];
        p2.money=p2.money+p2.fangchan[3][fanghao];
        system("pause");
    }
    }
    else
    {
        switch (p2.dangqian)
    {
        case 1:fanghao=0;break;
        case 2:fanghao=1;break;
        case 4:fanghao=2;break;
        case 5:fanghao=3;break;
        case 6:fanghao=4;break;
        case 7:fanghao=5;break;
        case 8:fanghao=6;break;
        case 10:fanghao=7;break;
        case 11:fanghao=8;break;
        case 12:fanghao=9;break;
        case 13:fanghao=10;break;
        case 14:fanghao=11;break;
        case 15:fanghao=12;break;
        case 17:fanghao=13;break;
        case 18:fanghao=14;break;
        case 19:fanghao=15;break;
        case 23:fanghao=16;break;
        case 24:fanghao=17;break;
        case 25:fanghao=18;break;
        default:break;
    }
    if (p1.fangchan[0][fanghao]==0)
    {
    if (p2.fangchan[0][fanghao]==0)
    {
        printf("1.购下该地皮,花费500,   其他任意数返回\n");
        scanf("%d",&a);
        if (a==1)
        {
            p2.fangchan[0][fanghao]=1;
            p2.money-=500;
        }
    }
    else if (p2.fangchan[1][fanghao]==0)
    {
        printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
        scanf("%d",&a);
        switch (a)
        {
        case 1:p2.fangchan[1][fanghao]=1;p2.money=p1.money-200;p2.fangchan[2][fanghao]=1;p2.fangchan[3][fanghao]=500;break;
        case 2:p2.fangchan[1][fanghao]=2;p2.money=p1.money-200;p2.fangchan[2][fanghao]=1;p2.fangchan[4][fanghao]=50;break;
        default:break;
        }
    }
    else if (p2.fangchan[1][fanghao]==1)
    {
        p2.fangchan[4][fanghao]=0;
        printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p2.fangchan[2][fanghao],500*(p2.fangchan[2][fanghao]+1));
        scanf("%d",&a);
        if (a==1)
        {
            if (p2.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                system("pause");
                goto zuigao;
            }
            p2.fangchan[2][fanghao]++;
            p2.money=p2.money-500*p2.fangchan[2][fanghao];
            p2.fangchan[3][fanghao]=p2.fangchan[3][fanghao]+200*p2.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级旅馆\n",p2.fangchan[2][fanghao]);
            printf("输入任意数字返回\n");
            scanf("%d",&c);
        }
    }
    else
    {
        printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p2.fangchan[1][fanghao],500*p2.fangchan[2][fanghao]);
        scanf("%d",&a);
        if (a==1)
        {
            if (p2.fangchan[2][fanghao]==5)
            {
                printf("已是最高级别!\n");
                printf("输入任意数字返回\n");
                scanf("%d",&c);
                goto zuigao;
            }
            p2.fangchan[2][fanghao]++;
            p2.money=p1.money-500*p2.fangchan[2][fanghao];
            p2.fangchan[4][fanghao]=p2.fangchan[4][fanghao]+10*p2.fangchan[2][fanghao];
            printf("升级完毕,当前为%d星级商店\n",p2.fangchan[2][fanghao]);
            system("pause");
        }
 
    }
    }
    else if (p1.fangchan[1][fanghao]==1)
    {
        printf("被收取过路费住宿费%d\n",p1.fangchan[3][fanghao]);
        p2.money=p2.money-p1.fangchan[3][fanghao];
        p1.money=p1.money+p1.fangchan[3][fanghao];
        system("pause");
    }
    }
zuigao:return 0;
}
 
    /*人品驿站!!*/
 
int renpin(int money)
{
    int a,b;
    a=rand()%10;
    b=rand()%2000;
    switch (a)
    {
    case 0:printf("路边捡到一个钱包,获得%d!!\n",b);money=money+b;break;
    case 1:printf("路遇恶狗被咬,住院花费200!!\n");money=money-200;break;
    case 2:printf("见到小偷行窃,见义勇为被奖励500!!\n");money=money+500;break;
    case 3:printf("见到小偷行窃,见义勇为,军体拳耍了16套被砍了32刀,住院花费1000!!");money=money-1000;break;
    case 4:printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是过期彩票,又打的返回~~\n");money=money-100;break;
    case 5:printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是中奖彩票,获得1000元!\n");money=money+1000;break;
    case 6:printf("人民币涨值,资金上涨20%!!\n");money=money+money/5;break;
    case 7:printf("路遇乞丐,被强行勒索100元.\n");money=money-100;break;
    case 8:printf("长得太丑被好心人施舍200\n");money=money+200;break;
    case 9:printf("路边破解残局摊,获利100\n");money=money+100;break;
    }
    system("pause");
    return money;
}
 
/*作死的加入赌场函数*/
 
    /*此函数用于判断骰子猜测结果*/
int touzi(int touzi1,int touzi2,int a)
{
    int b,daxiao;
    int he;
    he=touzi1+touzi2;
    if (he>6)
    {
        daxiao=13;
        printf("大!\n");
    }
    else
    {
        daxiao=14;
        printf("小!\n");
    }
 
    if (a<=12)
    {
        if (a==he)
        {
            b=5;
        }
        else
        {
            b=0;
        }
    }
    else if (a<=14)
    {
        if (a==daxiao)
        {
            b=2;
        }
        else
        {
            b=0;
        }
    }
    else
    {
        if (touzi1==touzi2)
        {
            b=3;
        }
        else
        {
            b=0;
        }
    }
 
    return b;
}
int duchang(int money)
{
        int z[2][5];
        int x[2][6]={0};
        double beilv;
        int a,b,c,n,d,e,m,choice;
        int touzi1,touzi2,touzi0;
        int num,times,guess,p,q;
        int result;
        int touru;
        char name[20];
        int touzi(int touzi1,int touzi2,int a);
        touzi0=0;
    printf("**************************拉斯维加斯****************************\n输入您的赌场外号:\n");
    gets(name);
 
    /*此处用于清屏并输出当前个人档案*/
 
xinxi:
    touzi0++;
    if (touzi0>3)
    {
        goto ended;
    }
    shijian(3);
    if (p1.days>=100)
    {
        goto ended;
    }
    system("cls");
    printf("********************拉斯维加斯********************\n");
    puts(name);
    printf("当前资产:%d",money);
    if (money<500)
    {
        printf("\n身份:贫民\n");
    }
        else if (money<1000)
    {
        printf("\n身份:平民\n");
    }
    else if (money<2000)
    {
        printf("\n身份:小资\n");
    }
    else if (money<5000)
    {
        printf("\n身份:富人\n");
    }
    else if (money<50000)
    {
        printf("\n身份:土豪\n");
    }
    else
    {
        printf("\n身份:首富\n");
    }
    if (money<0)
    {
        printf("没钱还想进赌城~?\n");
        goto ended;
    }
 
    /*此处开始选择赌博*/
 
    printf("选择一种活动吧:\n1.掷骰子\n2.猜数\n3.炸金花\n4.21点\n5.退出赌城\n");
    scanf("%d",&choice);
 
    /*开始掷骰子*/
 
    if (choice==1)
    {
        system("cls");
        printf("OOOOOOOOOOoooooooooo 掷骰子 ooooooooooOOOOOOOOOO\n");
    touzi1=rand()%6+1;
    touzi2=rand()%6+1;
    printf("开始掷骰子,买定离手咯!\n");
    printf("您要买的是:\n1-12.买点数\n13.买大\n14.买小\n15.买豹子\n");
    scanf("%d",&a);
error3:printf("您买入多少钱呢:\n");
    scanf("%d",&touru);
    if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error3;
        }
    if (touru<0)
    {
        printf("你他妈是在逗我~?\n");
        goto error3;
    }
    printf("开!骰子情况是%d,%d!",touzi1,touzi2);
    b=touzi(touzi1,touzi2,a);
    money=money-touru+touru*b;
    system("pause");
    }
 
    /*开始猜数*/
 
    else if (choice==2)
    {
        system("cls");
        printf("//////////////////// 猜数 \\\\\\\\\\\\\\\\\\\\\n");
error1:printf("请输入您的押金,将按您猜数次数呈倍数返还:\n");
        scanf("%d",&touru);
        if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error1;
        }
        if (touru<0)
        {
        printf("你他妈是在逗我~?\n");
        goto error1;
        }
              num=rand()%100;
              for(times=0;times<=10;times++)
              {
                       printf("第%d次猜数:",times+1);
                       scanf("%d",&guess);
                       if (guess>num)
                       {
                              printf("\n猜的大了\n");
                       }
                       else if(guess<num)
                       {
                             printf("\n猜的小了\n");
                       }
                       else
                       {
                              printf("恭喜猜对啦!");
                              break;
                        }
              }
              if (times>=10)
              {
                  printf("10次都猜不出,弱爆了!!\n");
              }
 
              money=money-touru;
              times=22-2*times;
              beilv=times/10.0;
              money=money+touru*beilv;
              system("pause");
    }
    /*开始炸金花*/
    else if (choice==3)
    {
        system("cls");
        printf("xxxxxxxxxxXXXXXXXXXX 炸金花 XXXXXXXXXXxxxxxxxxxx\n");
        printf("由于本行业为暴利行业,故收取手续费为总金额百分之五,两百元以内则扣十元\n");
        if (money<=200)
        {
            money=money-10;
        }
        else
        {
            money=money*0.95;
        }
        for (m=0;m<=2;m++)
    {
        z[0][m]=rand()%13+1;
        z[1][m]=rand()%13+1;
    }
    /*在此进行排序*/
   for (d=0;d<=1;d++)
    {
        if (z[d][1]>z[d][0])
        {
            e=z[d][0];
            z[d][0]=z[d][1];
            z[d][1]=e;
        }
        if (z[d][2]>z[d][1])
        {
            e=z[d][1];
            z[d][1]=z[d][2];
            z[d][2]=e;
        }
        if (z[d][1]>z[d][0])
        {
            e=z[d][0];
            z[d][0]=z[d][1];
            z[d][1]=e;
        }
    }
    printf("您的手牌是:%d,%d,%d\n",z[0][0],z[0][1],z[0][2]);
error2:printf("您选择跟多少:\n");
    scanf("%d",&touru);
    if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error2;
        }
    if (touru<0)
    {
        printf("你他妈是在逗我~?\n");
        goto error2;
    }
    money=money-touru;
 
    /*此处开始比大小出结果*/
 
    for (d=0;d<=1;d++)
    {
        if (z[d][0]==z[d][1] && z[d][1]==z[d][2])
        {
            z[d][3]=4;
            z[d][4]=z[d][0];
        }
        else if (z[d][0]==z[d][1] || z[d][1]==z[d][2] || z[d][0]==z[d][2])
        {
            z[d][3]=2;
            if (z[d][0]==z[d][1])
            {
                z[d][4]=z[d][0];
            }
            else if (z[d][1]==z[d][2])
            {
                z[d][4]=z[d][1];
            }
            else
            {
                z[d][4]=z[d][2];
            }
 
        }
        else
        {
            if (z[d][0]-z[d][1]==1 && z[d][1]-z[d][2]==1)
            {
                z[d][3]=3;
                z[d][4]=z[d][0];
            }
            else
            {
                z[d][3]=1;
                z[d][4]=z[d][0];
            }
        }
    }
        if (z[0][3]==z[1][3])
        {
            if (z[0][4]>=z[1][4])
            {
                n=2;
            }
            else
            {
                n=0;
            }
        }
        else if (z[0][3]>z[1][3])
        {
            n=2;
        }
        else
        {
            n=0;
        }
    touru=touru*n;
    printf("摊牌:%d,%d,%d \n",z[1][0],z[1][1],z[1][2]);
    printf("您获得%d \n",touru);
    money=money+touru;
 
    system("pause");
    }
    else if (choice==4)
        /*开始21点*/
    {
        system("cls");
        printf("################### 21点 ###################\n");
error4:printf("请投入押金:\n");
        scanf("%d",&touru);
        if (touru>money)
        {
            printf("没钱还敢乱喊价? \n");
            goto error4;
        }
        if (touru<0)
    {
        printf("你他妈是在逗我~?\n");
        goto error4;
    }
        money=money-touru;
/*双方发底牌*/
        for(m=0;m<=1;m++)
        {
            for(n=0;n<=1;n++)
            {
                x[m][n]=rand()%13;
                if (x[m][n]==0 || x[m][n]==11 || x[m][n]==12)
                {
                    x[m][n]=10;
                }
            }
        }
        printf("您当前的手牌为:%d,%d",x[0][0],x[0][1]);
        if(x[0][0]==1 && x[0][1]==1)
        {
            printf("玩家双龙!!!\n");
            beilv=5;
            goto under;
        }
        if((x[0][0]==1 && x[0][1]==10) || (x[0][0]==10 && x[0][1]==1))
        {
            printf("玩家21点!!\n");
            beilv=3;
            goto under;
        }
        if((x[1][0]==1 && x[1][1]==10) || (x[1][0]==10 && x[1][1]==1) || (x[1][0]==1 && x[1][1]==1))
        {
            printf("电脑21点!!\n");
            beilv=0;
            goto under;
        }
        printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
        scanf("%d",&a);
        if (a==1)
        {
            goto tanpai;
        }
        x[0][2]=rand()%13;
        if (x[0][2]==0 || x[0][2]==11 || x[0][2]==12)
        {
            x[0][2]=10;
        }
        printf("您的手牌为:%d,%d,%d \n",x[0][0],x[0][1],x[0][2]);
        x[0][5]=x[0][0]+x[0][1]+x[0][2];
        if (x[0][5]>21)
        {
            beilv=0;
            printf("胀死了!");
            goto under;
        }
        printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
        scanf("%d",&a);
        if (a==1)
        {
            goto tanpai;
        }
        x[0][3]=rand()%13;
        if (x[0][3]==0 || x[0][3]==11 || x[0][3]==12)
        {
            x[0][3]=10;
        }
        printf("您的手牌为:%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3]);
        x[0][5]=x[0][5]+x[0][3];
        if (x[0][5]>21)
        {
            beilv=0;
            printf("胀死了!! \n");
            goto under;
        }
        printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
        scanf("%d",&a);
        if (a==1)
        {
            goto tanpai;
        }
        x[0][4]=rand()%13;
        if (x[0][4]==0 || x[0][4]==11 || x[0][3]==12)
        {
            x[0][4]=10;
        }
        printf("您的手牌为:%d,%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3],x[0][4]);
        x[0][5]=x[0][5]+x[0][4];
        if (x[0][5]>21)
        {
            beilv=0;
            printf("胀死了!! \n");
            goto under;
        }
        printf("五小!!\n");
        beilv=3;
        goto under;
 
 
tanpai:x[1][5]=x[1][0]+x[1][1];
        for(b=2;(x[1][5]<=17 && b<=4);b++)
        {
            x[1][b]=rand()%13;
            if (x[1][b]==0 || x[1][b]==11 || x[1][b]==12)
            {
                x[1][b]=10;
            }
            printf("电脑加牌:%d\n",x[1][b]);
            x[1][5]=x[1][5]+x[1][b];
            scanf("%d",&a);
        }
        printf("电脑手牌:%d,%d,%d,%d,%d\n",x[1][0],x[1][1],x[1][2],x[1][3],x[1][4]);
 
        if (x[1][5]>21)
        {
            printf("电脑胀死!\n");
            beilv=2;
            goto under;
        }
 
        if (x[1][5]>x[0][5])
        {
            printf("电脑大!\n");
            beilv=0;
        }
        else
        {
            printf("玩家大!!\n");
            beilv=2;
        }
under:money=money+touru*beilv;
      system("pause");
    }
    else
    {
        goto ended;
    }
    if (money<=0)
    {
        printf("\n资产用尽,您已被赶出拉斯维加斯\n");
    }
    else
    {
        goto xinxi;
    }
 
ended:  system("pause");
    return money;
}

0
陈喆鹏
陈喆鹏
资深光能
资深光能

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <windows.h>
#include <conio.h>

using namespace std;

int block00[4][4] = { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } };
int block01[4][4] = { { 11,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 } };
int block02[4][4] = { { 12,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,1,0,0 } };
int block03[4][4] = { { 13,0,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block04[4][4] = { { 14,0,0,0 },{ 0,0,0,0 },{ 0,1,0,0 },{ 1,1,1,0 } };
int block05[4][4] = { { 15,0,0,0 },{ 0,1,0,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block06[4][4] = { { 16,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 1,0,0,0 } };
int block07[4][4] = { { 17,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block08[4][4] = { { 18,0,0,0 },{ 0,0,0,0 },{ 0,0,1,0 },{ 1,1,1,0 } };
int block09[4][4] = { { 19,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 0,1,1,0 } };
int block10[4][4] = { { 20,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,0,1,0 } };
int block11[4][4] = { { 21,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 } };
int block12[4][4] = { { 22,0,0,0 },{ 0,0,0,0 },{ 1,0,0,0 },{ 1,1,1,0 } };
int block13[4][4] = { { 23,0,0,0 },{ 0,1,1,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block14[4][4] = { { 24,0,0,0 },{ 0,0,0,0 },{ 0,1,1,0 },{ 1,1,0,0 } };
int block15[4][4] = { { 25,0,0,0 },{ 1,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block16[4][4] = { { 26,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 0,1,1,0 } };
int block17[4][4] = { { 27,0,0,0 },{ 0,0,1,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block18[4][4] = { { 28,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 1,1,0,0 } };

void initialWindow(HANDLE hOut);//初始化窗口
void initialPrint(HANDLE hOut);//初始化界面
void gotoXY(HANDLE hOut, int x, int y);//移动光标
void roundBlock(HANDLE hOut, int block[4][4]);//随机生成方块并打印到下一个方块位置
bool collisionDetection(int block[4][4], int map[21][12], int x, int y);//检测碰撞
void printBlock(HANDLE hOut, int block[4][4], int x, int y);//打印方块
void clearBlock(HANDLE hOut, int block[4][4], int x, int y);//消除方块
void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//左移
void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//右移
void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//顺时针旋转90度
int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y);//加速下落
void myStop(HANDLE hOut, int block[4][4]);//游戏暂停
void gameOver(HANDLE hOut, int block[4][4], int map[21][12]);//游戏结束
void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint);//判断是否能消行并更新分值
int main()
{
    int map[21][12];
    int blockA[4][4];//候选区的方块
    int blockB[4][4];//下落中的方块
    int positionX, positionY;//方块左上角的坐标
    bool check;//检查方块还能不能下落
    char key;//用来存储按键
    int val;//用来控制下落速度
    int fraction;//用来存储得分
    int checkpoint;//用来存储关卡
    int times;
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出设备句柄
    initialWindow(hOut);
initial:
    gotoXY(hOut, 0, 0);
    initialPrint(hOut);
    check = true;
    val = 50;
    fraction = 0;
    checkpoint = 1;
    times = val;
    for (int i = 0; i < 20; ++i)
    {
        for (int j = 1; j < 11; ++j)
        {
            map[i][j] = 0;
        }
    }
    for (int i = 0; i < 20; ++i)
    {
        map[i][0] = map[i][11] = 1;
    }
    for (int i = 0; i < 12; ++i)
    {
        map[20][i] = 1;
    }

    srand((unsigned)time(NULL));
    roundBlock(hOut, blockA);
    while (true)
    {
        if (check)
        {
            eliminateRow(hOut, map, val, fraction, checkpoint);
            check = false;
            positionX = -3;
            positionY = 4;
            if (collisionDetection(blockA, map, positionX, positionY))
            {
                for (int i = 0; i < 4; ++i)
                {
                    for (int j = 0; j < 4; ++j)
                    {
                        blockB[i][j] = blockA[i][j];
                    }
                }
                roundBlock(hOut, blockA);
            }
            else
            {
                gameOver(hOut, blockA, map);
                goto initial;
            }
        }
        printBlock(hOut, blockB, positionX, positionY);
        if (_kbhit())
        {
            key = _getch();
            switch (key)
            {
            case 72:
                myUp(hOut, blockB, map, positionX, positionY);
                break;
            case 75:
                myLeft(hOut, blockB, map, positionX, positionY);
                break;
            case 77:
                myRight(hOut, blockB, map, positionX, positionY);
                break;
            case 80:
                switch (myDown(hOut, blockB, map, positionX, positionY))
                {
                case 0:
                    check = false;
                    break;
                case 1:
                    check = true;
                    break;
                case 2:
                    gameOver(hOut, blockB, map);
                    goto initial;
                default:
                    break;
                }
                break;
            case 32:
                myStop(hOut, blockA);
                break;
            case 27:
                exit(0);
            default:
                break;
            }
        }
        Sleep(20);
        if (0 == --times)
        {
            switch (myDown(hOut, blockB, map, positionX, positionY))
            {
            case 0:
                check = false;
                break;
            case 1:
                check = true;
                break;
            case 2:
                gameOver(hOut, blockB, map);
                goto initial;
            default:
                break;
            }
            times = val;
        }
    }
    cin.get();
    return 0;
}

void initialWindow(HANDLE hOut)
{
    SetConsoleTitle("俄罗斯方块");
    COORD size = { 80, 25 };
    SetConsoleScreenBufferSize(hOut, size);
    SMALL_RECT rc = { 0, 0, 79, 24 };
    SetConsoleWindowInfo(hOut, true, &rc);
    CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
    SetConsoleCursorInfo(hOut, &cursor_info);
}

void initialPrint(HANDLE hOut)
{
    SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
    for (int i = 0; i < 20; ++i)
    {
        cout << "■                    ■☆                      ☆" << endl;
    }
    gotoXY(hOut, 26, 0);
    cout << "☆☆☆☆☆☆☆☆☆☆☆";
    gotoXY(hOut, 0, 20);
    cout << "■■■■■■■■■■■■☆☆☆☆☆☆☆☆☆☆☆☆☆";
    gotoXY(hOut, 26, 1);
    cout << "分    数:      ";
    gotoXY(hOut, 26, 2);
    cout << "关    卡:      ";
    gotoXY(hOut, 26, 4);
    cout << "下一方块:";
    gotoXY(hOut, 26, 9);
    cout << "操作方法:";
    gotoXY(hOut, 30, 11);
    cout << "↑:旋转 ↓:速降";
    gotoXY(hOut, 30, 12);
    cout << "→:右移 ←:左移";
    gotoXY(hOut, 30, 13);
    cout << "空格键:开始/暂停";
    gotoXY(hOut, 30, 14);
    cout << "Esc 键:退出";
    gotoXY(hOut, 26, 16);
    cout << "关    于:";
    gotoXY(hOut, 30, 18);
    cout << "俄罗斯方块V1.0";
    gotoXY(hOut, 35, 19);
    cout << "作者:李国良";
}

void gotoXY(HANDLE hOut, int x, int y)
{
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(hOut, pos);
}

void roundBlock(HANDLE hOut, int block[4][4])
{
    clearBlock(hOut, block, 5, 15);
    switch (rand() % 19)
    {
    case 0:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block00[i][j];
            }
        }
        break;
    case 1:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block01[i][j];
            }
        }
        break;
    case 2:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block02[i][j];
            }
        }
        break;
    case 3:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block03[i][j];
            }
        }
        break;
    case 4:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block04[i][j];
            }
        }
        break;
    case 5:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block05[i][j];
            }
        }
        break;
    case 6:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block06[i][j];
            }
        }
        break;
    case 7:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block07[i][j];
            }
        }
        break;
    case 8:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block08[i][j];
            }
        }
        break;
    case 9:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block09[i][j];
            }
        }
        break;
    case 10:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block10[i][j];
            }
        }
        break;
    case 11:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block11[i][j];
            }
        }
        break;
    case 12:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block12[i][j];
            }
        }
        break;
    case 13:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block13[i][j];
            }
        }
        break;
    case 14:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block14[i][j];
            }
        }
        break;
    case 15:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block15[i][j];
            }
        }
        break;
    case 16:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block16[i][j];
            }
        }
        break;
    case 17:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block17[i][j];
            }
        }
        break;
    case 18:
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j < 4; ++j)
            {
                block[i][j] = block18[i][j];
            }
        }
        break;
    default:
        break;
    }
    printBlock(hOut, block, 5, 15);
}

bool collisionDetection(int block[4][4], int map[21][12], int x, int y)
{
    for (int i = 0; i < 4; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            if (x + i >= 0 && y + j >= 0 && map[x + i][y + j] == 1 && block[i][j] == 1)
            {
                return false;
            }
        }
    }
    return true;
}

void printBlock(HANDLE hOut, int block[4][4], int x, int y)
{
    switch (block[0][0])
    {
    case 10:
    case 11:
        SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);
        break;
    case 12:
    case 13:
    case 14:
    case 15:
        SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        break;
    case 16:
    case 17:
    case 18:
    case 19:
        SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        break;
    case 20:
    case 21:
    case 22:
    case 23:
        SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
        break;
    case 24:
    case 25:
        SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        break;
    case 26:
    case 27:
        SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
        break;
    case 28:
        SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
        break;
    default:
        break;
    }
    for (int i = 0; i < 4; ++i)
    {
        if (i + x >= 0)
        {
            for (int j = 0; j < 4; ++j)
            {
                if (block[i][j] == 1)
                {

                    gotoXY(hOut, 2 * (y + j), x + i);
                    cout << "■";
                }
            }
        }
    }
}

void clearBlock(HANDLE hOut, int block[4][4], int x, int y)
{
    for (int i = 0; i < 4; ++i)
    {
        if (i + x >= 0)
        {
            for (int j = 0; j < 4; ++j)
            {
                if (block[i][j] == 1)
                {
                    gotoXY(hOut, 2 * (y + j), x + i);
                    cout << "  ";
                }
            }
        }
    }
}

void gameOver(HANDLE hOut, int block[4][4], int map[21][12])
{
    SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
    gotoXY(hOut, 9, 8);
    cout << "GAME OVER";
    gotoXY(hOut, 8, 9);
    cout << "空格键:重来";
    gotoXY(hOut, 8, 10);
    cout << "ESC键:退出";
    char key;
    while (true)
    {
        key = _getch();
        if (key == 32)
        {
            return;
        }
        if (key == 27)
        {
            exit(0);
        }
    }
}

int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y)
{
    if (collisionDetection(block, map, x + 1, y))
    {
        clearBlock(hOut, block, x, y);
        ++x;
        return 0;
    }
    if (x < 0)
    {
        return 2;
    }
    for (int i = 0; i < 4; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            if (block[i][j] == 1)
            {
                map[x + i][y + j] = 1;
                SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
                gotoXY(hOut, 2 * (y + j), x + i);
                cout << "■";
            }
        }
    }
    return 1;
}

void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
    if (collisionDetection(block, map, x, y - 1))
    {
        clearBlock(hOut, block, x, y);
        --y;
    }
}

void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
    if (collisionDetection(block, map, x, y + 1))
    {
        clearBlock(hOut, block, x, y);
        ++y;
    }
}

void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
    switch (block[0][0])
    {
    case 10:
        if (collisionDetection(block01, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block01[i][j];
                }
            }
        }
        break;
    case 11:
        if (collisionDetection(block00, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
        }
        else if (collisionDetection(block00, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block00, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            ++y;
        }
        else if (collisionDetection(block00, map, x, y - 2))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            y = y - 2;
        }
        else if (collisionDetection(block00, map, x, y + 2))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block00[i][j];
                }
            }
            y = y + 2;
        }
        break;
    case 12:
        if (collisionDetection(block03, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block03[i][j];
                }
            }
        }
        else if (collisionDetection(block03, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block03[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block03, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block03[i][j];
                }
            }
            ++y;
        }
        break;
    case 13:
        if (collisionDetection(block04, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block04[i][j];
                }
            }
        }
        else if (collisionDetection(block04, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block04[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block04, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block04[i][j];
                }
            }
            ++y;
        }
        break;
    case 14:
        if (collisionDetection(block05, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block05[i][j];
                }
            }
        }
        else if (collisionDetection(block05, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block05[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block05, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block05[i][j];
                }
            }
            ++y;
        }
        break;
    case 15:
        if (collisionDetection(block02, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block02[i][j];
                }
            }
        }
        else if (collisionDetection(block02, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block02[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block02, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block02[i][j];
                }
            }
            ++y;
        }
        break;

    case 16:
        if (collisionDetection(block07, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block07[i][j];
                }
            }
        }
        else if (collisionDetection(block07, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block07[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block07, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block07[i][j];
                }
            }
            ++y;
        }
        break;
    case 17:
        if (collisionDetection(block08, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block08[i][j];
                }
            }
        }
        else if (collisionDetection(block08, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block08[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block08, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block08[i][j];
                }
            }
            ++y;
        }
        break;
    case 18:
        if (collisionDetection(block09, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block09[i][j];
                }
            }
        }
        else if (collisionDetection(block09, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block09[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block09, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block09[i][j];
                }
            }
            ++y;
        }
        break;
    case 19:
        if (collisionDetection(block06, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block06[i][j];
                }
            }
        }
        else if (collisionDetection(block06, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block06[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block06, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block06[i][j];
                }
            }
            ++y;
        }
        break;
    case 20:
        if (collisionDetection(block11, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block11[i][j];
                }
            }
        }
        else if (collisionDetection(block11, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block11[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block11, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block11[i][j];
                }
            }
            ++y;
        }
        break;
    case 21:
        if (collisionDetection(block12, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block12[i][j];
                }
            }
        }
        else if (collisionDetection(block12, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block12[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block12, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block12[i][j];
                }
            }
            ++y;
        }
        break;
    case 22:
        if (collisionDetection(block13, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block13[i][j];
                }
            }
        }
        else if (collisionDetection(block13, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block13[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block13, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block13[i][j];
                }
            }
            ++y;
        }
        break;
    case 23:
        if (collisionDetection(block10, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block10[i][j];
                }
            }
        }
        else if (collisionDetection(block10, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block10[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block10, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block10[i][j];
                }
            }
            ++y;
        }
        break;
    case 24:
        if (collisionDetection(block15, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block15[i][j];
                }
            }
        }
        else if (collisionDetection(block15, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block15[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block15, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block15[i][j];
                }
            }
            ++y;
        }
        break;
    case 25:
        if (collisionDetection(block14, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block14[i][j];
                }
            }
        }
        else if (collisionDetection(block14, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block14[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block14, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block14[i][j];
                }
            }
            ++y;
        }
        break;
    case 26:
        if (collisionDetection(block17, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block17[i][j];
                }
            }
        }
        else if (collisionDetection(block17, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block17[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block17, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block17[i][j];
                }
            }
            ++y;
        }
        break;
    case 27:
        if (collisionDetection(block16, map, x, y))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block16[i][j];
                }
            }
        }
        else if (collisionDetection(block16, map, x, y - 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block16[i][j];
                }
            }
            --y;
        }
        else if (collisionDetection(block16, map, x, y + 1))
        {
            clearBlock(hOut, block, x, y);
            for (int i = 0; i < 4; ++i)
            {
                for (int j = 0; j < 4; ++j)
                {
                    block[i][j] = block16[i][j];
                }
            }
            ++y;
        }
        break;
    default:
        break;
    }
}

void myStop(HANDLE hOut, int block[4][4])
{
    clearBlock(hOut, block, 5, 15);
    SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
    gotoXY(hOut, 30, 7);
    cout << "游戏暂停";
    char key;
    while (true)
    {
        key = _getch();
        if (key == 32)
        {
            gotoXY(hOut, 30, 7);
            cout << "        ";
            printBlock(hOut, block, 5, 15);
            return;
        }
        if (key == 27)
        {
            exit(0);
        }
    }
}

void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint)
{
    SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
    for (int i = 19; i >= 0; --i)
    {
        int x = 0;
        for (int j = 1; j < 11; ++j)
        {
            x += map[i][j];
        }
        if (x == 10)
        {
            fraction += 100;
            if (val > 1 && fraction / 1000 + 1 != checkpoint)
            {
                checkpoint = fraction / 1000 + 1;
                val -= 5;
            }
            for (int m = i; m > 0; --m)
            {
                for (int n = 1; n < 11; ++n)
                {
                    map[m][n] = map[m - 1][n];
                    gotoXY(hOut, 2 * n, m);
                    if (map[m][n] == 1)
                    {
                        cout << "■";
                    }
                    else
                    {
                        cout << "  ";
                    }
                }
            }
            ++i;
        }
    }
    gotoXY(hOut, 36, 1);
    cout << fraction;
    gotoXY(hOut, 36, 2);
    cout << checkpoint;
}

0
陈喆鹏
陈喆鹏
资深光能
资深光能

#include<iostream>
 
#include<windows.h>
 
#include<conio.h>
 
#include<time.h>
 
#include<string>
 
using namespace std;
 
typedef struct Frame
 
{
 
    COORD position[2];
 
    int flag;
 
}Frame;
 
void SetPos(COORD a)
 
{
 
    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
 
    SetConsoleCursorPosition(out, a);
 
}
 
void SetPos(int i, int j)
 
{
 
    COORD pos={i, j};
 
    SetPos(pos);
 
}
 
void HideCursor()
 
{
 
    CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
 
}
 
 
 
//把第y行,[x1, x2) 之间的坐标填充为 ch
 
void drawRow(int y, int x1, int x2, char ch)
 
{
 
    SetPos(x1,y);
 
    for(int i = 0; i <= (x2-x1); i++) cout<<ch;
 
}
 
 
 
//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
 
void drawRow(COORD a, COORD b, char ch)
 
{
 
    if(a.Y == b.Y) drawRow(a.Y, a.X, b.X, ch);
 
    else {
 
        SetPos(0, 25);
 
        cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
 
        system("pause");
 
    }
 
}
 
 
 
//把第x列,[y1, y2] 之间的坐标填充为 ch
 
void drawCol(int x, int y1, int y2, char ch)
 
{
 
    int y=y1;
 
    while(y!=y2+1) {
 
        SetPos(x, y);
 
        cout<<ch;
 
        y++;
 
    }
 
}
 
 
 
//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
 
void drawCol(COORD a, COORD b, char ch)
 
{
 
    if(a.X == b.X) drawCol(a.X, a.Y, b.Y, ch);
 
    else {
 
        SetPos(0, 25);
 
        cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
 
        system("pause");
 
    }
 
}
 
 
 
//左上角坐标、右下角坐标、用row填充行、用col填充列
 
void drawFrame(COORD a, COORD  b, char row, char col)
 
{
 
    drawRow(a.Y, a.X+1, b.X-1, row);
 
    drawRow(b.Y, a.X+1, b.X-1, row);
 
    drawCol(a.X, a.Y+1, b.Y-1, col);
 
    drawCol(b.X, a.Y+1, b.Y-1, col);
 
}
 
 
 
void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
 
{
 
    COORD a={x1, y1};
 
    COORD b={x2, y2};
 
    drawFrame(a, b, row, col);
 
}
 
 
 
void drawFrame(Frame frame, char row, char col)
 
{
 
    COORD a = frame.position[0];
 
    COORD b = frame.position[1];
 
    drawFrame(a, b, row, col);
 
}
 
 
 
void drawPlaying()
 
{
 
    drawFrame(0, 0, 48, 24, '=', '|');//    draw map frame;
 
    drawFrame(49, 0, 79, 4, '-', '|');//        draw output frame
 
    drawFrame(49, 4, 79, 9, '-', '|');//        draw score frame
 
    drawFrame(49, 9, 79, 20, '-', '|');//   draw operate frame
 
    drawFrame(49, 20, 79, 24, '-', '|');//  draw other message frame
 
    SetPos(52, 6);
 
    cout<<"得分:";
 
    SetPos(52, 7);
 
    cout<<"称号:";
 
    SetPos(52,10);
 
    cout<<"操作方式:";
 
    SetPos(52,12);
 
    cout<<"  a,s,d,w 控制战机移动。";
 
    SetPos(52,14);
 
    cout<<"  p 暂停游戏。";
 
    SetPos(52,16);
 
    cout<<"  e 退出游戏。";
 
}
 
 
 
//在[a, b)之间产生一个随机整数
 
int random(int a, int b)
 
{
 
    int c=(rand() % (a-b))+ a;
 
    return c;
 
}
 
 
 
//在两个坐标包括的矩形框内随机产生一个坐标
 
COORD random(COORD a, COORD b)
 
{
 
    int x=random(a.X, b.X);
 
    int y=random(a.Y, b.Y);
 
    COORD c={x, y};
 
    return c;
 
}
 
 
 
bool  judgeCoordInFrame(Frame frame, COORD spot)
 
{
 
    if(spot.X>=frame.position[0].X)
 
        if(spot.X<=frame.position[1].X)
 
            if(spot.Y>=frame.position[0].Y)
 
                if(spot.Y<=frame.position[0].Y)
 
                    return true;
 
    return false;
 
}
 
 
 
void printCoord(COORD a)
 
{
 
    cout    <<"( "<<a.X<<" , "<<a.Y<<" )";
 
}
 
 
 
void printFrameCoord(Frame a)
 
{
 
    printCoord(a.position[0]);
 
    cout    <<" - ";
 
    printCoord(a.position[1]);
 
}
 
 
 
int drawMenu()
 
{
 
    SetPos(30, 1);
 
    cout<<"P l a n e  W a r";
 
    drawRow(3, 0, 79, '-');
 
    drawRow(5, 0, 79, '-');
 
    SetPos(28, 4);
 
    cout<<"w 和 s 选择, k 确定";
 
    SetPos(15, 11);
 
    cout<<"1. 简单的敌人";
 
    SetPos(15, 13);
 
    cout<<"2. 冷酷的敌人";
 
    drawRow(20, 0, 79, '-');
 
    drawRow(22, 0, 79, '-');
 
    SetPos(47, 11);
 
    cout<<"简单的敌人:";
 
    SetPos(51, 13);
 
    cout<<"简单敌人有着较慢的移动速度。";
 
    int j=11;
 
    cout<<">>";
 
    while(1) {
 
        if( _kbhit() ) {    
 
            char x=_getch();
 
            switch (x) {
 
              case 'w' : {  
 
                if( j == 13) {
 
                  SetPos(12, j);
 
                  cout<<" ";
 
                  j = 11;
 
                  SetPos(12, j);
 
                  cout<<">>";
 
                  SetPos(51, 13);
 
                  cout<<"            ";
 
                  SetPos(47, 11);
 
                  cout<<"简单的敌人:";
 
                  SetPos(51, 13);
 
                  cout<<"简单敌人有着较慢的移动速度。";
 
                }
 
                break;
 
              }
 
              case 's' : {  
 
                if( j == 11 ) {
 
                  SetPos(12, j);
 
                  cout<<" ";        
 
                  j = 13;
 
                  SetPos(12, j);
 
                  cout<<">>";
 
                  SetPos(51, 13);
 
                   cout<<"              ";
 
                   SetPos(47, 11);
 
                   cout<<"冷酷的敌人:";
 
                   SetPos(51, 13);
 
                   cout<<"冷酷的敌人移动速度较快。";
 
                }
 
                break;
 
              }
 
              case 'k' : {  
 
                if (j == 8) return 1; else return 2;
 
              }
 
            }
 
        }
 
    }
 
}
 
/*================== the Game Class ==================*/
 
 
 
class Game
 
{
 
public:
 
    COORD position[10];
 
    COORD bullet[10];
 
    Frame enemy[8];
 
    int score;
 
    int rank;
 
    int rankf;
 
    string title;
 
    int flag_rank;
 
 
 
    Game ();
 
 
 
    //初始化所有
 
    void initPlane();
 
    void initBullet();
 
    void initEnemy();
 
 
 
    //初始化其中一个
 
    //void initThisBullet( COORD );
 
    //void initThisEnemy( Frame );
 
 
 
    void planeMove(char);
 
    void bulletMove();
 
    void enemyMove();
 
 
 
    //填充所有
 
    void drawPlane();
 
    void drawPlaneToNull();
 
    void drawBullet();
 
    void drawBulletToNull();
 
    void drawEnemy();
 
    void drawEnemyToNull();
 
 
 
    //填充其中一个
 
    void drawThisBulletToNull( COORD );
 
    void drawThisEnemyToNull( Frame );
 
 
 
    void Pause();
 
    void Playing();
 
    void judgePlane();
 
    void judgeEnemy();
 
 
 
    void Shoot();
 
 
 
    void GameOver();
 
    void printScore();
 
};
 
 
 
Game::Game()
 
{
 
    initPlane();
 
    initBullet();
 
    initEnemy();
 
    score = 0;
 
    rank = 25;
 
    rankf = 0;
 
    flag_rank = 0;
 
}
 
 
 
void Game::initPlane()
 
{
 
    COORD centren={39, 22};
 
    position[0].X=position[5].X=position[7].X=position[9].X=centren.X;
 
    position[1].X=centren.X-2;  
 
    position[2].X=position[6].X=centren.X-1;
 
    position[3].X=position[8].X=centren.X+1;
 
    position[4].X=centren.X+2;
 
    for(int i=0; i<=4; i++)
 
        position[i].Y=centren.Y;
 
    for(int i=6; i<=8; i++)
 
        position[i].Y=centren.Y+1;
 
    position[5].Y=centren.Y-1;
 
    position[9].Y=centren.Y-2;
 
}
 
 
 
void Game::drawPlane()
 
{
 
    for(int i=0; i<9; i++)
 
    {
 
        SetPos(position[i]);
 
        if(i!=5)
 
            cout<<"O";
 
        else if(i==5)
 
            cout<<"|";      
 
    }
 
}
 
 
 
void Game::drawPlaneToNull()
 
{
 
    for(int i=0; i<9; i++)
 
    {
 
        SetPos(position[i]);
 
        cout<<" ";
 
    }   
 
}
 
 
 
void Game::initBullet()
 
{
 
    for(int i=0; i<10; i++)
 
        bullet[i].Y = 30;
 
}
 
 
 
void Game::drawBullet()
 
{
 
    for(int i=0; i<10; i++)
 
    {
 
        if( bullet[i].Y != 30)
 
        {
 
            SetPos(bullet[i]);
 
            cout<<"Φ";  
 
        }
 
    }
 
}
 
 
 
void Game::drawBulletToNull()
 
{
 
    for(int i=0; i<10; i++)
 
        if( bullet[i].Y != 30 )
 
            {
 
                COORD pos={bullet[i].X, bullet[i].Y+1};
 
                SetPos(pos);
 
                cout<<" ";
 
            }   
 
}
 
 
 
void Game::initEnemy()
 
{
 
    COORD a={1, 1};
 
    COORD b={45, 15};
 
    for(int i=0; i<8; i++)
 
    {
 
        enemy[i].position[0] = random(a, b);
 
        enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
        enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
 
    }
 
}
 
 
 
void Game::drawEnemy()
 
{
 
    for(int i=0; i<8; i++)
 
        drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');
 
}
 
 
 
void Game::drawEnemyToNull()
 
{
 
    for(int i=0; i<8; i++)
 
    {
 
        drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');
 
    }       
 
}
 
 
 
void Game::Pause()
 
{
 
    SetPos(61,2);
 
    cout<<"               ";
 
    SetPos(61,2);
 
    cout<<"暂停中...";
 
    char c=_getch();
 
    while(c!='p')
 
        c=_getch();
 
    SetPos(61,2);
 
    cout<<"         ";
 
}
 
 
 
void Game::planeMove(char x)
 
{
 
    if(x == 'a')
 
        if(position[1].X != 1)
 
            for(int i=0; i<=9; i++)
 
                position[i].X -= 2;
 
 
 
    if(x == 's')
 
        if(position[7].Y != 23)
 
            for(int i=0; i<=9; i++)
 
                position[i].Y += 1;
 
 
 
    if(x == 'd')
 
        if(position[4].X != 47)
 
            for(int i=0; i<=9; i++)
 
                position[i].X += 2;
 
 
 
    if(x == 'w')
 
        if(position[5].Y != 3)
 
            for(int i=0; i<=9; i++)
 
                position[i].Y -= 1;
 
}
 
 
 
void Game::bulletMove()
 
{
 
    for(int i=0; i<10; i++)
 
    {
 
        if( bullet[i].Y != 30)
 
        {
 
            bullet[i].Y -= 1;
 
            if( bullet[i].Y == 1 )
 
            {
 
                COORD pos={bullet[i].X, bullet[i].Y+1};
 
                drawThisBulletToNull( pos );
 
                bullet[i].Y=30;
 
            }
 
 
 
        }
 
    }
 
}
 
 
 
void Game::enemyMove()
 
{
 
    for(int i=0; i<8; i++)
 
    {
 
        for(int j=0; j<2; j++)
 
            enemy[i].position[j].Y++;
 
 
 
        if(24 == enemy[i].position[1].Y)
 
        {
 
            COORD a={1, 1};
 
            COORD b={45, 3};
 
            enemy[i].position[0] = random(a, b);
 
            enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
            enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
 
        }
 
    }
 
}
 
 
 
void Game::judgePlane()
 
{
 
    for(int i = 0; i < 8; i++)
 
        for(int j=0; j<9; j++)
 
            if(judgeCoordInFrame(enemy[i], position[j]))
 
            {
 
                SetPos(62, 1);
 
                cout<<"坠毁";
 
                drawFrame(enemy[i], '+', '+');
 
                Sleep(1000);
 
                GameOver();
 
                break;
 
            }
 
}
 
 
 
void Game::drawThisBulletToNull( COORD c)
 
{
 
    SetPos(c);
 
    cout<<" ";
 
}
 
 
 
void Game::drawThisEnemyToNull( Frame f )
 
{
 
    drawFrame(f, ' ', ' ');
 
}
 
 
 
void Game::judgeEnemy()
 
{
 
    for(int i = 0; i < 8; i++)
 
        for(int j = 0; j < 10; j++)
 
            if( judgeCoordInFrame(enemy[i], bullet[j]) )
 
            {
 
                score += 5;
 
                drawThisEnemyToNull( enemy[i] );
 
                COORD a={1, 1};
 
                COORD b={45, 3};
 
                enemy[i].position[0] = random(a, b);
 
                enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
                enemy[i].position[1].Y = enemy[i].position[0].Y + 2;                    
 
                drawThisBulletToNull( bullet[j] );
 
                bullet[j].Y = 30;
 
            }
 
}
 
 
 
void Game::Shoot()
 
{
 
    for(int i=0; i<10; i++)
 
        if(bullet[i].Y == 30)
 
        {
 
            bullet[i].X = position[5].X;
 
            bullet[i].Y = position[5].Y-1;
 
            break;
 
        }
 
}
 
 
 
void Game::printScore()
 
{
 
    if(score == 120 && flag_rank == 0)
 
    {
 
        rank -= 3;
 
        flag_rank = 1;
 
    }
 
 
 
    else if( score == 360 && flag_rank == 1)
 
    {
 
        rank -= 5;
 
        flag_rank = 2;
 
    }
 
    else if( score == 480 && flag_rank == 2)
 
    {
 
        rank -= 5;
 
        flag_rank = 3;
 
    }
 
    int x=rank/5;
 
    SetPos(60, 6);
 
    cout<<score;
 
 
 
    if( rank!=rankf )
 
    {
 
        SetPos(60, 7);
 
        if( x == 5)
 
            title="新手守护";
 
        else if( x == 4)
 
            title="资深守护";
 
        else if( x == 3)
 
            title="缔造者守护";
 
        else if( x == 2 )
 
            title="战狼守护";
            else if(x==1)
            title="绝地武士守护";
            else if(x=0)
            title="缔造者之神守护"; 
 
        cout<<title;
 
    }
 
    rankf = rank;
 
}
 
 
 
void Game::Playing()
 
{
 
 
 
 
    drawEnemy();
 
    drawPlane();
 
 
 
    int flag_bullet = 0;
 
    int flag_enemy = 0;
 
 
 
    while(1)
 
    {
 
        Sleep(8);
 
        if(_kbhit())
 
        {
 
            char x = _getch();
 
            if ('a' == x || 's' == x || 'd' == x || 'w' == x)
 
            {
 
                drawPlaneToNull();
 
                planeMove(x);
 
                drawPlane();
 
                judgePlane();
 
            }           
 
            else if ('p' == x)
 
                Pause();
 
            else if( 'k' == x)
 
                Shoot();
 
            else if( 'e' == x)
 
            {
 
                //CloseHandle(MFUN);
 
                GameOver();
 
                break;
 
            }
 
 
 
        }
 
        /* 处理子弹 */
 
        if( 0 == flag_bullet )
 
        {
 
            bulletMove();
 
            drawBulletToNull();
 
            drawBullet();
 
            judgeEnemy();
 
        }           
 
        flag_bullet++;
 
        if( 5 == flag_bullet )
 
            flag_bullet = 0;
 
 
 
        /* 处理敌人 */
 
        if( 0 == flag_enemy )
 
        {
 
            drawEnemyToNull();
 
            enemyMove();            
 
            drawEnemy();
 
            judgePlane();
 
        }
 
        flag_enemy++;
 
        if( flag_enemy >= rank )
 
            flag_enemy = 0;
 
 
 
        /* 输出得分 */
 
        printScore();
 
    }
 
}
 
 
 
void Game::GameOver()
 
{
 
    system("cls");              
 
    COORD p1={28,9};
 
    COORD p2={53,15};
 
    drawFrame(p1, p2, '=', '|');
 
    SetPos(36,12);
 
    string str="Game Over!";
 
    for(int i=0; i<str.size(); i++)
 
    {
 
        Sleep(80);
 
        cout<<str[i];
 
    }
 
    Sleep(1000);
 
    system("cls");
 
    drawFrame(p1, p2, '=', '|');
 
    SetPos(31, 11);
 
    cout<<"击落敌机:"<<score/5<<" 架";
 
    SetPos(31, 12);
 
    cout<<"得  分:"<<score<<" 分";
 
    SetPos(31, 13);
 
    cout<<"获得称号:"<<title;
 
    SetPos(30, 16);
 
    Sleep(1000);
 
    cout<<"继续? 是(y)| 否(n)";
 
as:
 
    char x=_getch();
 
    if (x == 'n')
 
        exit(0);
 
    else if (x == 'y')
 
    {
 
        system("cls");
 
        Game game;
 
        int a = drawMenu();
 
        if(a == 2)
 
            game.rank = 20;
 
        system("cls");
 
        drawPlaying();
 
        game.Playing();
 
    }
 
    else goto as;
 
}
 
 
 
/*================== the main function ==================*/
 
int main()
 
{
 
    //游戏准备
 
    srand((int)time(0));    //随机种子
 
    HideCursor();   //隐藏光标
 
 
 
    Game game;
 
    int a = drawMenu();
 
    if(a == 2)
 
        game.rank = 20;
 
    system("cls");
 
    drawPlaying();
 
    game.Playing();
 
}#include<iostream>
 
#include<windows.h>
 
#include<conio.h>
 
#include<time.h>
 
#include<string>
 
using namespace std;
 
typedef struct Frame
 
{
 
    COORD position[2];
 
    int flag;
 
}Frame;
 
void SetPos(COORD a)
 
{
 
    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
 
    SetConsoleCursorPosition(out, a);
 
}
 
void SetPos(int i, int j)
 
{
 
    COORD pos={i, j};
 
    SetPos(pos);
 
}
 
void HideCursor()
 
{
 
    CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
 
}
 
 
 
//把第y行,[x1, x2) 之间的坐标填充为 ch
 
void drawRow(int y, int x1, int x2, char ch)
 
{
 
    SetPos(x1,y);
 
    for(int i = 0; i <= (x2-x1); i++) cout<<ch;
 
}
 
 
 
//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
 
void drawRow(COORD a, COORD b, char ch)
 
{
 
    if(a.Y == b.Y) drawRow(a.Y, a.X, b.X, ch);
 
    else {
 
        SetPos(0, 25);
 
        cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
 
        system("pause");
 
    }
 
}
 
 
 
//把第x列,[y1, y2] 之间的坐标填充为 ch
 
void drawCol(int x, int y1, int y2, char ch)
 
{
 
    int y=y1;
 
    while(y!=y2+1) {
 
        SetPos(x, y);
 
        cout<<ch;
 
        y++;
 
    }
 
}
 
 
 
//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
 
void drawCol(COORD a, COORD b, char ch)
 
{
 
    if(a.X == b.X) drawCol(a.X, a.Y, b.Y, ch);
 
    else {
 
        SetPos(0, 25);
 
        cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
 
        system("pause");
 
    }
 
}
 
 
 
//左上角坐标、右下角坐标、用row填充行、用col填充列
 
void drawFrame(COORD a, COORD  b, char row, char col)
 
{
 
    drawRow(a.Y, a.X+1, b.X-1, row);
 
    drawRow(b.Y, a.X+1, b.X-1, row);
 
    drawCol(a.X, a.Y+1, b.Y-1, col);
 
    drawCol(b.X, a.Y+1, b.Y-1, col);
 
}
 
 
 
void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
 
{
 
    COORD a={x1, y1};
 
    COORD b={x2, y2};
 
    drawFrame(a, b, row, col);
 
}
 
 
 
void drawFrame(Frame frame, char row, char col)
 
{
 
    COORD a = frame.position[0];
 
    COORD b = frame.position[1];
 
    drawFrame(a, b, row, col);
 
}
 
 
 
void drawPlaying()
 
{
 
    drawFrame(0, 0, 48, 24, '=', '|');//    draw map frame;
 
    drawFrame(49, 0, 79, 4, '-', '|');//        draw output frame
 
    drawFrame(49, 4, 79, 9, '-', '|');//        draw score frame
 
    drawFrame(49, 9, 79, 20, '-', '|');//   draw operate frame
 
    drawFrame(49, 20, 79, 24, '-', '|');//  draw other message frame
 
    SetPos(52, 6);
 
    cout<<"得分:";
 
    SetPos(52, 7);
 
    cout<<"称号:";
 
    SetPos(52,10);
 
    cout<<"操作方式:";
 
    SetPos(52,12);
 
    cout<<"  a,s,d,w 控制战机移动。";
 
    SetPos(52,14);
 
    cout<<"  p 暂停游戏。";
 
    SetPos(52,16);
 
    cout<<"  e 退出游戏。";
 
}
 
 
 
//在[a, b)之间产生一个随机整数
 
int random(int a, int b)
 
{
 
    int c=(rand() % (a-b))+ a;
 
    return c;
 
}
 
 
 
//在两个坐标包括的矩形框内随机产生一个坐标
 
COORD random(COORD a, COORD b)
 
{
 
    int x=random(a.X, b.X);
 
    int y=random(a.Y, b.Y);
 
    COORD c={x, y};
 
    return c;
 
}
 
 
 
bool  judgeCoordInFrame(Frame frame, COORD spot)
 
{
 
    if(spot.X>=frame.position[0].X)
 
        if(spot.X<=frame.position[1].X)
 
            if(spot.Y>=frame.position[0].Y)
 
                if(spot.Y<=frame.position[0].Y)
 
                    return true;
 
    return false;
 
}
 
 
 
void printCoord(COORD a)
 
{
 
    cout    <<"( "<<a.X<<" , "<<a.Y<<" )";
 
}
 
 
 
void printFrameCoord(Frame a)
 
{
 
    printCoord(a.position[0]);
 
    cout    <<" - ";
 
    printCoord(a.position[1]);
 
}
 
 
 
int drawMenu()
 
{
 
    SetPos(30, 1);
 
    cout<<"P l a n e  W a r";
 
    drawRow(3, 0, 79, '-');
 
    drawRow(5, 0, 79, '-');
 
    SetPos(28, 4);
 
    cout<<"w 和 s 选择, k 确定";
 
    SetPos(15, 11);
 
    cout<<"1. 简单的敌人";
 
    SetPos(15, 13);
 
    cout<<"2. 冷酷的敌人";
 
    drawRow(20, 0, 79, '-');
 
    drawRow(22, 0, 79, '-');
 
    SetPos(47, 11);
 
    cout<<"简单的敌人:";
 
    SetPos(51, 13);
 
    cout<<"简单敌人有着较慢的移动速度。";
 
    int j=11;
 
    cout<<">>";
 
    while(1) {
 
        if( _kbhit() ) {    
 
            char x=_getch();
 
            switch (x) {
 
              case 'w' : {  
 
                if( j == 13) {
 
                  SetPos(12, j);
 
                  cout<<" ";
 
                  j = 11;
 
                  SetPos(12, j);
 
                  cout<<">>";
 
                  SetPos(51, 13);
 
                  cout<<"            ";
 
                  SetPos(47, 11);
 
                  cout<<"简单的敌人:";
 
                  SetPos(51, 13);
 
                  cout<<"简单敌人有着较慢的移动速度。";
 
                }
 
                break;
 
              }
 
              case 's' : {  
 
                if( j == 11 ) {
 
                  SetPos(12, j);
 
                  cout<<" ";        
 
                  j = 13;
 
                  SetPos(12, j);
 
                  cout<<">>";
 
                  SetPos(51, 13);
 
                   cout<<"              ";
 
                   SetPos(47, 11);
 
                   cout<<"冷酷的敌人:";
 
                   SetPos(51, 13);
 
                   cout<<"冷酷的敌人移动速度较快。";
 
                }
 
                break;
 
              }
 
              case 'k' : {  
 
                if (j == 8) return 1; else return 2;
 
              }
 
            }
 
        }
 
    }
 
}
 
/*================== the Game Class ==================*/
 
 
 
class Game
 
{
 
public:
 
    COORD position[10];
 
    COORD bullet[10];
 
    Frame enemy[8];
 
    int score;
 
    int rank;
 
    int rankf;
 
    string title;
 
    int flag_rank;
 
 
 
    Game ();
 
 
 
    //初始化所有
 
    void initPlane();
 
    void initBullet();
 
    void initEnemy();
 
 
 
    //初始化其中一个
 
    //void initThisBullet( COORD );
 
    //void initThisEnemy( Frame );
 
 
 
    void planeMove(char);
 
    void bulletMove();
 
    void enemyMove();
 
 
 
    //填充所有
 
    void drawPlane();
 
    void drawPlaneToNull();
 
    void drawBullet();
 
    void drawBulletToNull();
 
    void drawEnemy();
 
    void drawEnemyToNull();
 
 
 
    //填充其中一个
 
    void drawThisBulletToNull( COORD );
 
    void drawThisEnemyToNull( Frame );
 
 
 
    void Pause();
 
    void Playing();
 
    void judgePlane();
 
    void judgeEnemy();
 
 
 
    void Shoot();
 
 
 
    void GameOver();
 
    void printScore();
 
};
 
 
 
Game::Game()
 
{
 
    initPlane();
 
    initBullet();
 
    initEnemy();
 
    score = 0;
 
    rank = 25;
 
    rankf = 0;
 
    flag_rank = 0;
 
}
 
 
 
void Game::initPlane()
 
{
 
    COORD centren={39, 22};
 
    position[0].X=position[5].X=position[7].X=position[9].X=centren.X;
 
    position[1].X=centren.X-2;  
 
    position[2].X=position[6].X=centren.X-1;
 
    position[3].X=position[8].X=centren.X+1;
 
    position[4].X=centren.X+2;
 
    for(int i=0; i<=4; i++)
 
        position[i].Y=centren.Y;
 
    for(int i=6; i<=8; i++)
 
        position[i].Y=centren.Y+1;
 
    position[5].Y=centren.Y-1;
 
    position[9].Y=centren.Y-2;
 
}
 
 
 
void Game::drawPlane()
 
{
 
    for(int i=0; i<9; i++)
 
    {
 
        SetPos(position[i]);
 
        if(i!=5)
 
            cout<<"O";
 
        else if(i==5)
 
            cout<<"|";      
 
    }
 
}
 
 
 
void Game::drawPlaneToNull()
 
{
 
    for(int i=0; i<9; i++)
 
    {
 
        SetPos(position[i]);
 
        cout<<" ";
 
    }   
 
}
 
 
 
void Game::initBullet()
 
{
 
    for(int i=0; i<10; i++)
 
        bullet[i].Y = 30;
 
}
 
 
 
void Game::drawBullet()
 
{
 
    for(int i=0; i<10; i++)
 
    {
 
        if( bullet[i].Y != 30)
 
        {
 
            SetPos(bullet[i]);
 
            cout<<"Φ";  
 
        }
 
    }
 
}
 
 
 
void Game::drawBulletToNull()
 
{
 
    for(int i=0; i<10; i++)
 
        if( bullet[i].Y != 30 )
 
            {
 
                COORD pos={bullet[i].X, bullet[i].Y+1};
 
                SetPos(pos);
 
                cout<<" ";
 
            }   
 
}
 
 
 
void Game::initEnemy()
 
{
 
    COORD a={1, 1};
 
    COORD b={45, 15};
 
    for(int i=0; i<8; i++)
 
    {
 
        enemy[i].position[0] = random(a, b);
 
        enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
        enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
 
    }
 
}
 
 
 
void Game::drawEnemy()
 
{
 
    for(int i=0; i<8; i++)
 
        drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');
 
}
 
 
 
void Game::drawEnemyToNull()
 
{
 
    for(int i=0; i<8; i++)
 
    {
 
        drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');
 
    }       
 
}
 
 
 
void Game::Pause()
 
{
 
    SetPos(61,2);
 
    cout<<"               ";
 
    SetPos(61,2);
 
    cout<<"暂停中...";
 
    char c=_getch();
 
    while(c!='p')
 
        c=_getch();
 
    SetPos(61,2);
 
    cout<<"         ";
 
}
 
 
 
void Game::planeMove(char x)
 
{
 
    if(x == 'a')
 
        if(position[1].X != 1)
 
            for(int i=0; i<=9; i++)
 
                position[i].X -= 2;
 
 
 
    if(x == 's')
 
        if(position[7].Y != 23)
 
            for(int i=0; i<=9; i++)
 
                position[i].Y += 1;
 
 
 
    if(x == 'd')
 
        if(position[4].X != 47)
 
            for(int i=0; i<=9; i++)
 
                position[i].X += 2;
 
 
 
    if(x == 'w')
 
        if(position[5].Y != 3)
 
            for(int i=0; i<=9; i++)
 
                position[i].Y -= 1;
 
}
 
 
 
void Game::bulletMove()
 
{
 
    for(int i=0; i<10; i++)
 
    {
 
        if( bullet[i].Y != 30)
 
        {
 
            bullet[i].Y -= 1;
 
            if( bullet[i].Y == 1 )
 
            {
 
                COORD pos={bullet[i].X, bullet[i].Y+1};
 
                drawThisBulletToNull( pos );
 
                bullet[i].Y=30;
 
            }
 
 
 
        }
 
    }
 
}
 
 
 
void Game::enemyMove()
 
{
 
    for(int i=0; i<8; i++)
 
    {
 
        for(int j=0; j<2; j++)
 
            enemy[i].position[j].Y++;
 
 
 
        if(24 == enemy[i].position[1].Y)
 
        {
 
            COORD a={1, 1};
 
            COORD b={45, 3};
 
            enemy[i].position[0] = random(a, b);
 
            enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
            enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
 
        }
 
    }
 
}
 
 
 
void Game::judgePlane()
 
{
 
    for(int i = 0; i < 8; i++)
 
        for(int j=0; j<9; j++)
 
            if(judgeCoordInFrame(enemy[i], position[j]))
 
            {
 
                SetPos(62, 1);
 
                cout<<"坠毁";
 
                drawFrame(enemy[i], '+', '+');
 
                Sleep(1000);
 
                GameOver();
 
                break;
 
            }
 
}
 
 
 
void Game::drawThisBulletToNull( COORD c)
 
{
 
    SetPos(c);
 
    cout<<" ";
 
}
 
 
 
void Game::drawThisEnemyToNull( Frame f )
 
{
 
    drawFrame(f, ' ', ' ');
 
}
 
 
 
void Game::judgeEnemy()
 
{
 
    for(int i = 0; i < 8; i++)
 
        for(int j = 0; j < 10; j++)
 
            if( judgeCoordInFrame(enemy[i], bullet[j]) )
 
            {
 
                score += 5;
 
                drawThisEnemyToNull( enemy[i] );
 
                COORD a={1, 1};
 
                COORD b={45, 3};
 
                enemy[i].position[0] = random(a, b);
 
                enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
                enemy[i].position[1].Y = enemy[i].position[0].Y + 2;                    
 
                drawThisBulletToNull( bullet[j] );
 
                bullet[j].Y = 30;
 
            }
 
}
 
 
 
void Game::Shoot()
 
{
 
    for(int i=0; i<10; i++)
 
        if(bullet[i].Y == 30)
 
        {
 
            bullet[i].X = position[5].X;
 
            bullet[i].Y = position[5].Y-1;
 
            break;
 
        }
 
}
 
 
 
void Game::printScore()
 
{
 
    if(score == 120 && flag_rank == 0)
 
    {
 
        rank -= 3;
 
        flag_rank = 1;
 
    }
 
 
 
    else if( score == 360 && flag_rank == 1)
 
    {
 
        rank -= 5;
 
        flag_rank = 2;
 
    }
 
    else if( score == 480 && flag_rank == 2)
 
    {
 
        rank -= 5;
 
        flag_rank = 3;
 
    }
 
    int x=rank/5;
 
    SetPos(60, 6);
 
    cout<<score;
 
 
 
    if( rank!=rankf )
 
    {
 
        SetPos(60, 7);
 
        if( x == 5)
 
            title="新手守护";
 
        else if( x == 4)
 
            title="资深守护";
 
        else if( x == 3)
 
            title="缔造者守护";
 
        else if( x == 2 )
 
            title="战狼守护";
            else if(x==1)
            title="绝地武士守护";
            else if(x=0)
            title="缔造者之神守护"; 
 
        cout<<title;
 
    }
 
    rankf = rank;
 
}
 
 
 
void Game::Playing()
 
{
 
 
 
 
    drawEnemy();
 
    drawPlane();
 
 
 
    int flag_bullet = 0;
 
    int flag_enemy = 0;
 
 
 
    while(1)
 
    {
 
        Sleep(8);
 
        if(_kbhit())
 
        {
 
            char x = _getch();
 
            if ('a' == x || 's' == x || 'd' == x || 'w' == x)
 
            {
 
                drawPlaneToNull();
 
                planeMove(x);
 
                drawPlane();
 
                judgePlane();
 
            }           
 
            else if ('p' == x)
 
                Pause();
 
            else if( 'k' == x)
 
                Shoot();
 
            else if( 'e' == x)
 
            {
 
                //CloseHandle(MFUN);
 
                GameOver();
 
                break;
 
            }
 
 
 
        }
 
        /* 处理子弹 */
 
        if( 0 == flag_bullet )
 
        {
 
            bulletMove();
 
            drawBulletToNull();
 
            drawBullet();
 
            judgeEnemy();
 
        }           
 
        flag_bullet++;
 
        if( 5 == flag_bullet )
 
            flag_bullet = 0;
 
 
 
        /* 处理敌人 */
 
        if( 0 == flag_enemy )
 
        {
 
            drawEnemyToNull();
 
            enemyMove();            
 
            drawEnemy();
 
            judgePlane();
 
        }
 
        flag_enemy++;
 
        if( flag_enemy >= rank )
 
            flag_enemy = 0;
 
 
 
        /* 输出得分 */
 
        printScore();
 
    }
 
}
 
 
 
void Game::GameOver()
 
{
 
    system("cls");              
 
    COORD p1={28,9};
 
    COORD p2={53,15};
 
    drawFrame(p1, p2, '=', '|');
 
    SetPos(36,12);
 
    string str="Game Over!";
 
    for(int i=0; i<str.size(); i++)
 
    {
 
        Sleep(80);
 
        cout<<str[i];
 
    }
 
    Sleep(1000);
 
    system("cls");
 
    drawFrame(p1, p2, '=', '|');
 
    SetPos(31, 11);
 
    cout<<"击落敌机:"<<score/5<<" 架";
 
    SetPos(31, 12);
 
    cout<<"得  分:"<<score<<" 分";
 
    SetPos(31, 13);
 
    cout<<"获得称号:"<<title;
 
    SetPos(30, 16);
 
    Sleep(1000);
 
    cout<<"继续? 是(y)| 否(n)";
 
as:
 
    char x=_getch();
 
    if (x == 'n')
 
        exit(0);
 
    else if (x == 'y')
 
    {
 
        system("cls");
 
        Game game;
 
        int a = drawMenu();
 
        if(a == 2)
 
            game.rank = 20;
 
        system("cls");
 
        drawPlaying();
 
        game.Playing();
 
    }
 
    else goto as;
 
}
 
 
 
/*================== the main function ==================*/
 
int main()
 
{
 
    //游戏准备
 
    srand((int)time(0));    //随机种子
 
    HideCursor();   //隐藏光标
 
 
 
    Game game;
 
    int a = drawMenu();
 
    if(a == 2)
 
        game.rank = 20;
 
    system("cls");
 
    drawPlaying();
 
    game.Playing();
 
}#include<iostream>
 
#include<windows.h>
 
#include<conio.h>
 
#include<time.h>
 
#include<string>
 
using namespace std;
 
typedef struct Frame
 
{
 
    COORD position[2];
 
    int flag;
 
}Frame;
 
void SetPos(COORD a)
 
{
 
    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
 
    SetConsoleCursorPosition(out, a);
 
}
 
void SetPos(int i, int j)
 
{
 
    COORD pos={i, j};
 
    SetPos(pos);
 
}
 
void HideCursor()
 
{
 
    CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
 
}
 
 
 
//把第y行,[x1, x2) 之间的坐标填充为 ch
 
void drawRow(int y, int x1, int x2, char ch)
 
{
 
    SetPos(x1,y);
 
    for(int i = 0; i <= (x2-x1); i++) cout<<ch;
 
}
 
 
 
//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
 
void drawRow(COORD a, COORD b, char ch)
 
{
 
    if(a.Y == b.Y) drawRow(a.Y, a.X, b.X, ch);
 
    else {
 
        SetPos(0, 25);
 
        cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
 
        system("pause");
 
    }
 
}
 
 
 
//把第x列,[y1, y2] 之间的坐标填充为 ch
 
void drawCol(int x, int y1, int y2, char ch)
 
{
 
    int y=y1;
 
    while(y!=y2+1) {
 
        SetPos(x, y);
 
        cout<<ch;
 
        y++;
 
    }
 
}
 
 
 
//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
 
void drawCol(COORD a, COORD b, char ch)
 
{
 
    if(a.X == b.X) drawCol(a.X, a.Y, b.Y, ch);
 
    else {
 
        SetPos(0, 25);
 
        cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
 
        system("pause");
 
    }
 
}
 
 
 
//左上角坐标、右下角坐标、用row填充行、用col填充列
 
void drawFrame(COORD a, COORD  b, char row, char col)
 
{
 
    drawRow(a.Y, a.X+1, b.X-1, row);
 
    drawRow(b.Y, a.X+1, b.X-1, row);
 
    drawCol(a.X, a.Y+1, b.Y-1, col);
 
    drawCol(b.X, a.Y+1, b.Y-1, col);
 
}
 
 
 
void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
 
{
 
    COORD a={x1, y1};
 
    COORD b={x2, y2};
 
    drawFrame(a, b, row, col);
 
}
 
 
 
void drawFrame(Frame frame, char row, char col)
 
{
 
    COORD a = frame.position[0];
 
    COORD b = frame.position[1];
 
    drawFrame(a, b, row, col);
 
}
 
 
 
void drawPlaying()
 
{
 
    drawFrame(0, 0, 48, 24, '=', '|');//    draw map frame;
 
    drawFrame(49, 0, 79, 4, '-', '|');//        draw output frame
 
    drawFrame(49, 4, 79, 9, '-', '|');//        draw score frame
 
    drawFrame(49, 9, 79, 20, '-', '|');//   draw operate frame
 
    drawFrame(49, 20, 79, 24, '-', '|');//  draw other message frame
 
    SetPos(52, 6);
 
    cout<<"得分:";
 
    SetPos(52, 7);
 
    cout<<"称号:";
 
    SetPos(52,10);
 
    cout<<"操作方式:";
 
    SetPos(52,12);
 
    cout<<"  a,s,d,w 控制战机移动。";
 
    SetPos(52,14);
 
    cout<<"  p 暂停游戏。";
 
    SetPos(52,16);
 
    cout<<"  e 退出游戏。";
 
}
 
 
 
//在[a, b)之间产生一个随机整数
 
int random(int a, int b)
 
{
 
    int c=(rand() % (a-b))+ a;
 
    return c;
 
}
 
 
 
//在两个坐标包括的矩形框内随机产生一个坐标
 
COORD random(COORD a, COORD b)
 
{
 
    int x=random(a.X, b.X);
 
    int y=random(a.Y, b.Y);
 
    COORD c={x, y};
 
    return c;
 
}
 
 
 
bool  judgeCoordInFrame(Frame frame, COORD spot)
 
{
 
    if(spot.X>=frame.position[0].X)
 
        if(spot.X<=frame.position[1].X)
 
            if(spot.Y>=frame.position[0].Y)
 
                if(spot.Y<=frame.position[0].Y)
 
                    return true;
 
    return false;
 
}
 
 
 
void printCoord(COORD a)
 
{
 
    cout    <<"( "<<a.X<<" , "<<a.Y<<" )";
 
}
 
 
 
void printFrameCoord(Frame a)
 
{
 
    printCoord(a.position[0]);
 
    cout    <<" - ";
 
    printCoord(a.position[1]);
 
}
 
 
 
int drawMenu()
 
{
 
    SetPos(30, 1);
 
    cout<<"P l a n e  W a r";
 
    drawRow(3, 0, 79, '-');
 
    drawRow(5, 0, 79, '-');
 
    SetPos(28, 4);
 
    cout<<"w 和 s 选择, k 确定";
 
    SetPos(15, 11);
 
    cout<<"1. 简单的敌人";
 
    SetPos(15, 13);
 
    cout<<"2. 冷酷的敌人";
 
    drawRow(20, 0, 79, '-');
 
    drawRow(22, 0, 79, '-');
 
    SetPos(47, 11);
 
    cout<<"简单的敌人:";
 
    SetPos(51, 13);
 
    cout<<"简单敌人有着较慢的移动速度。";
 
    int j=11;
 
    cout<<">>";
 
    while(1) {
 
        if( _kbhit() ) {    
 
            char x=_getch();
 
            switch (x) {
 
              case 'w' : {  
 
                if( j == 13) {
 
                  SetPos(12, j);
 
                  cout<<" ";
 
                  j = 11;
 
                  SetPos(12, j);
 
                  cout<<">>";
 
                  SetPos(51, 13);
 
                  cout<<"            ";
 
                  SetPos(47, 11);
 
                  cout<<"简单的敌人:";
 
                  SetPos(51, 13);
 
                  cout<<"简单敌人有着较慢的移动速度。";
 
                }
 
                break;
 
              }
 
              case 's' : {  
 
                if( j == 11 ) {
 
                  SetPos(12, j);
 
                  cout<<" ";        
 
                  j = 13;
 
                  SetPos(12, j);
 
                  cout<<">>";
 
                  SetPos(51, 13);
 
                   cout<<"              ";
 
                   SetPos(47, 11);
 
                   cout<<"冷酷的敌人:";
 
                   SetPos(51, 13);
 
                   cout<<"冷酷的敌人移动速度较快。";
 
                }
 
                break;
 
              }
 
              case 'k' : {  
 
                if (j == 8) return 1; else return 2;
 
              }
 
            }
 
        }
 
    }
 
}
 
/*================== the Game Class ==================*/
 
 
 
class Game
 
{
 
public:
 
    COORD position[10];
 
    COORD bullet[10];
 
    Frame enemy[8];
 
    int score;
 
    int rank;
 
    int rankf;
 
    string title;
 
    int flag_rank;
 
 
 
    Game ();
 
 
 
    //初始化所有
 
    void initPlane();
 
    void initBullet();
 
    void initEnemy();
 
 
 
    //初始化其中一个
 
    //void initThisBullet( COORD );
 
    //void initThisEnemy( Frame );
 
 
 
    void planeMove(char);
 
    void bulletMove();
 
    void enemyMove();
 
 
 
    //填充所有
 
    void drawPlane();
 
    void drawPlaneToNull();
 
    void drawBullet();
 
    void drawBulletToNull();
 
    void drawEnemy();
 
    void drawEnemyToNull();
 
 
 
    //填充其中一个
 
    void drawThisBulletToNull( COORD );
 
    void drawThisEnemyToNull( Frame );
 
 
 
    void Pause();
 
    void Playing();
 
    void judgePlane();
 
    void judgeEnemy();
 
 
 
    void Shoot();
 
 
 
    void GameOver();
 
    void printScore();
 
};
 
 
 
Game::Game()
 
{
 
    initPlane();
 
    initBullet();
 
    initEnemy();
 
    score = 0;
 
    rank = 25;
 
    rankf = 0;
 
    flag_rank = 0;
 
}
 
 
 
void Game::initPlane()
 
{
 
    COORD centren={39, 22};
 
    position[0].X=position[5].X=position[7].X=position[9].X=centren.X;
 
    position[1].X=centren.X-2;  
 
    position[2].X=position[6].X=centren.X-1;
 
    position[3].X=position[8].X=centren.X+1;
 
    position[4].X=centren.X+2;
 
    for(int i=0; i<=4; i++)
 
        position[i].Y=centren.Y;
 
    for(int i=6; i<=8; i++)
 
        position[i].Y=centren.Y+1;
 
    position[5].Y=centren.Y-1;
 
    position[9].Y=centren.Y-2;
 
}
 
 
 
void Game::drawPlane()
 
{
 
    for(int i=0; i<9; i++)
 
    {
 
        SetPos(position[i]);
 
        if(i!=5)
 
            cout<<"O";
 
        else if(i==5)
 
            cout<<"|";      
 
    }
 
}
 
 
 
void Game::drawPlaneToNull()
 
{
 
    for(int i=0; i<9; i++)
 
    {
 
        SetPos(position[i]);
 
        cout<<" ";
 
    }   
 
}
 
 
 
void Game::initBullet()
 
{
 
    for(int i=0; i<10; i++)
 
        bullet[i].Y = 30;
 
}
 
 
 
void Game::drawBullet()
 
{
 
    for(int i=0; i<10; i++)
 
    {
 
        if( bullet[i].Y != 30)
 
        {
 
            SetPos(bullet[i]);
 
            cout<<"Φ";  
 
        }
 
    }
 
}
 
 
 
void Game::drawBulletToNull()
 
{
 
    for(int i=0; i<10; i++)
 
        if( bullet[i].Y != 30 )
 
            {
 
                COORD pos={bullet[i].X, bullet[i].Y+1};
 
                SetPos(pos);
 
                cout<<" ";
 
            }   
 
}
 
 
 
void Game::initEnemy()
 
{
 
    COORD a={1, 1};
 
    COORD b={45, 15};
 
    for(int i=0; i<8; i++)
 
    {
 
        enemy[i].position[0] = random(a, b);
 
        enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
        enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
 
    }
 
}
 
 
 
void Game::drawEnemy()
 
{
 
    for(int i=0; i<8; i++)
 
        drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');
 
}
 
 
 
void Game::drawEnemyToNull()
 
{
 
    for(int i=0; i<8; i++)
 
    {
 
        drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');
 
    }       
 
}
 
 
 
void Game::Pause()
 
{
 
    SetPos(61,2);
 
    cout<<"               ";
 
    SetPos(61,2);
 
    cout<<"暂停中...";
 
    char c=_getch();
 
    while(c!='p')
 
        c=_getch();
 
    SetPos(61,2);
 
    cout<<"         ";
 
}
 
 
 
void Game::planeMove(char x)
 
{
 
    if(x == 'a')
 
        if(position[1].X != 1)
 
            for(int i=0; i<=9; i++)
 
                position[i].X -= 2;
 
 
 
    if(x == 's')
 
        if(position[7].Y != 23)
 
            for(int i=0; i<=9; i++)
 
                position[i].Y += 1;
 
 
 
    if(x == 'd')
 
        if(position[4].X != 47)
 
            for(int i=0; i<=9; i++)
 
                position[i].X += 2;
 
 
 
    if(x == 'w')
 
        if(position[5].Y != 3)
 
            for(int i=0; i<=9; i++)
 
                position[i].Y -= 1;
 
}
 
 
 
void Game::bulletMove()
 
{
 
    for(int i=0; i<10; i++)
 
    {
 
        if( bullet[i].Y != 30)
 
        {
 
            bullet[i].Y -= 1;
 
            if( bullet[i].Y == 1 )
 
            {
 
                COORD pos={bullet[i].X, bullet[i].Y+1};
 
                drawThisBulletToNull( pos );
 
                bullet[i].Y=30;
 
            }
 
 
 
        }
 
    }
 
}
 
 
 
void Game::enemyMove()
 
{
 
    for(int i=0; i<8; i++)
 
    {
 
        for(int j=0; j<2; j++)
 
            enemy[i].position[j].Y++;
 
 
 
        if(24 == enemy[i].position[1].Y)
 
        {
 
            COORD a={1, 1};
 
            COORD b={45, 3};
 
            enemy[i].position[0] = random(a, b);
 
            enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
            enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
 
        }
 
    }
 
}
 
 
 
void Game::judgePlane()
 
{
 
    for(int i = 0; i < 8; i++)
 
        for(int j=0; j<9; j++)
 
            if(judgeCoordInFrame(enemy[i], position[j]))
 
            {
 
                SetPos(62, 1);
 
                cout<<"坠毁";
 
                drawFrame(enemy[i], '+', '+');
 
                Sleep(1000);
 
                GameOver();
 
                break;
 
            }
 
}
 
 
 
void Game::drawThisBulletToNull( COORD c)
 
{
 
    SetPos(c);
 
    cout<<" ";
 
}
 
 
 
void Game::drawThisEnemyToNull( Frame f )
 
{
 
    drawFrame(f, ' ', ' ');
 
}
 
 
 
void Game::judgeEnemy()
 
{
 
    for(int i = 0; i < 8; i++)
 
        for(int j = 0; j < 10; j++)
 
            if( judgeCoordInFrame(enemy[i], bullet[j]) )
 
            {
 
                score += 5;
 
                drawThisEnemyToNull( enemy[i] );
 
                COORD a={1, 1};
 
                COORD b={45, 3};
 
                enemy[i].position[0] = random(a, b);
 
                enemy[i].position[1].X = enemy[i].position[0].X + 3;
 
                enemy[i].position[1].Y = enemy[i].position[0].Y + 2;                    
 
                drawThisBulletToNull( bullet[j] );
 
                bullet[j].Y = 30;
 
            }
 
}
 
 
 
void Game::Shoot()
 
{
 
    for(int i=0; i<10; i++)
 
        if(bullet[i].Y == 30)
 
        {
 
            bullet[i].X = position[5].X;
 
            bullet[i].Y = position[5].Y-1;
 
            break;
 
        }
 
}
 
 
 
void Game::printScore()
 
{
 
    if(score == 120 && flag_rank == 0)
 
    {
 
        rank -= 3;
 
        flag_rank = 1;
 
    }
 
 
 
    else if( score == 360 && flag_rank == 1)
 
    {
 
        rank -= 5;
 
        flag_rank = 2;
 
    }
 
    else if( score == 480 && flag_rank == 2)
 
    {
 
        rank -= 5;
 
        flag_rank = 3;
 
    }
 
    int x=rank/5;
 
    SetPos(60, 6);
 
    cout<<score;
 
 
 
    if( rank!=rankf )
 
    {
 
        SetPos(60, 7);
 
        if( x == 5)
 
            title="新手守护";
 
        else if( x == 4)
 
            title="资深守护";
 
        else if( x == 3)
 
            title="缔造者守护";
 
        else if( x == 2 )
 
            title="战狼守护";
            else if(x==1)
            title="绝地武士守护";
            else if(x=0)
            title="缔造者之神守护"; 
 
        cout<<title;
 
    }
 
    rankf = rank;
 
}
 
 
 
void Game::Playing()
 
{
 
 
 
 
    drawEnemy();
 
    drawPlane();
 
 
 
    int flag_bullet = 0;
 
    int flag_enemy = 0;
 
 
 
    while(1)
 
    {
 
        Sleep(8);
 
        if(_kbhit())
 
        {
 
            char x = _getch();
 
            if ('a' == x || 's' == x || 'd' == x || 'w' == x)
 
            {
 
                drawPlaneToNull();
 
                planeMove(x);
 
                drawPlane();
 
                judgePlane();
 
            }           
 
            else if ('p' == x)
 
                Pause();
 
            else if( 'k' == x)
 
                Shoot();
 
            else if( 'e' == x)
 
            {
 
                //CloseHandle(MFUN);
 
                GameOver();
 
                break;
 
            }
 
 
 
        }
 
        /* 处理子弹 */
 
        if( 0 == flag_bullet )
 
        {
 
            bulletMove();
 
            drawBulletToNull();
 
            drawBullet();
 
            judgeEnemy();
 
        }           
 
        flag_bullet++;
 
        if( 5 == flag_bullet )
 
            flag_bullet = 0;
 
 
 
        /* 处理敌人 */
 
        if( 0 == flag_enemy )
 
        {
 
            drawEnemyToNull();
 
            enemyMove();            
 
            drawEnemy();
 
            judgePlane();
 
        }
 
        flag_enemy++;
 
        if( flag_enemy >= rank )
 
            flag_enemy = 0;
 
 
 
        /* 输出得分 */
 
        printScore();
 
    }
 
}
 
 
 
void Game::GameOver()
 
{
 
    system("cls");              
 
    COORD p1={28,9};
 
    COORD p2={53,15};
 
    drawFrame(p1, p2, '=', '|');
 
    SetPos(36,12);
 
    string str="Game Over!";
 
    for(int i=0; i<str.size(); i++)
 
    {
 
        Sleep(80);
 
        cout<<str[i];
 
    }
 
    Sleep(1000);
 
    system("cls");
 
    drawFrame(p1, p2, '=', '|');
 
    SetPos(31, 11);
 
    cout<<"击落敌机:"<<score/5<<" 架";
 
    SetPos(31, 12);
 
    cout<<"得  分:"<<score<<" 分";
 
    SetPos(31, 13);
 
    cout<<"获得称号:"<<title;
 
    SetPos(30, 16);
 
    Sleep(1000);
 
    cout<<"继续? 是(y)| 否(n)";
 
as:
 
    char x=_getch();
 
    if (x == 'n')
 
        exit(0);
 
    else if (x == 'y')
 
    {
 
        system("cls");
 
        Game game;
 
        int a = drawMenu();
 
        if(a == 2)
 
            game.rank = 20;
 
        system("cls");
 
        drawPlaying();
 
        game.Playing();
 
    }
 
    else goto as;
 
}
 
 
 
/*================== the main function ==================*/
 
int main()
 
{
 
    //游戏准备
 
    srand((int)time(0));    //随机种子
 
    HideCursor();   //隐藏光标
 
 
 
    Game game;
 
    int a = drawMenu();
 
    if(a == 2)
 
        game.rank = 20;
 
    system("cls");
 
    drawPlaying();
 
    game.Playing();
 
}

0
蒋智航
蒋智航
高级天翼
高级天翼
#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.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 = 1800, 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;

}

/*for(i=2;i<=23;i++)

{ Position(1,i);PR_Bg_Y;printf("%d",i-1);

Position(79,i);PR_Bg_Y;

}*/

}

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(" ■■ ■■ C语言版 Flappy Bird\n");

printf(" ■■ ■■ 瞎搞人:yyposs\n");

printf(" ■■ ■■ 瞎搞日期:2014.2\n");

printf(" ■■ ■■ 耗时:4小时\n");

printf(" ■■■ ■■ 游戏说明:\n");

printf(" ■■ 1-按上箭头使鸟起飞\n");

printf(" ■■ 2-等级越高,难度越大!\n");

printf(" Ю123  ■■■\n");

printf("\n");

printf(" ■■■ 欢迎各路大神与我探讨C、\nC++、VB、PHP、C#\n");

printf(" ■■\n");

printf(" ■■\n");

printf(" ■■ ■■■ \n");

printf(" ■■ ■■\n");

printf(" ■■ Ф ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\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(180);

}

    i = 0;

}

    Position(38, 10);

    printf("输了!!!!");

    Position(1, 25);

    system("pause");

    return 0;

}

 

蒋智航在2018-10-06 19:02:15追加了内容
#include<iostream>

#include<windows.h>

#include<conio.h>

#include<time.h>

#include<string>

using namespace std;

typedef struct Frame

{

    COORD position[2];

    int flag;

}Frame;

void SetPos(COORD a)

{

    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);

    SetConsoleCursorPosition(out, a);

}

void SetPos(int i, int j)

{

    COORD pos={i, j};

    SetPos(pos);

}

void HideCursor()

{

    CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 

    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

}

 

//把第y行,[x1, x2) 之间的坐标填充为 ch

void drawRow(int y, int x1, int x2, char ch)

{

    SetPos(x1,y);

    for(int i = 0; i <= (x2-x1); i++) cout<<ch;

}

 

//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch

void drawRow(COORD a, COORD b, char ch)

{

    if(a.Y == b.Y) drawRow(a.Y, a.X, b.X, ch);

    else {

        SetPos(0, 25);

        cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";

        system("pause");

    }

}

 

//把第x列,[y1, y2] 之间的坐标填充为 ch

void drawCol(int x, int y1, int y2, char ch)

{

    int y=y1;

    while(y!=y2+1) {

        SetPos(x, y);

        cout<<ch;

        y++;

    }

}

 

//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch

void drawCol(COORD a, COORD b, char ch)

{

    if(a.X == b.X) drawCol(a.X, a.Y, b.Y, ch);

    else {

        SetPos(0, 25);

        cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";

        system("pause");

    }

}

 

//左上角坐标、右下角坐标、用row填充行、用col填充列

void drawFrame(COORD a, COORD  b, char row, char col)

{

    drawRow(a.Y, a.X+1, b.X-1, row);

    drawRow(b.Y, a.X+1, b.X-1, row);

    drawCol(a.X, a.Y+1, b.Y-1, col);

    drawCol(b.X, a.Y+1, b.Y-1, col);

}

 

void drawFrame(int x1, int y1, int x2, int y2, char row, char col)

{

    COORD a={x1, y1};

    COORD b={x2, y2};

    drawFrame(a, b, row, col);

}

 

void drawFrame(Frame frame, char row, char col)

{

    COORD a = frame.position[0];

    COORD b = frame.position[1];

    drawFrame(a, b, row, col);

}

 

void drawPlaying()

{

    drawFrame(0, 0, 48, 24, '=', '|');//    draw map frame;

    drawFrame(49, 0, 79, 4, '-', '|');//        draw output frame

    drawFrame(49, 4, 79, 9, '-', '|');//        draw score frame

    drawFrame(49, 9, 79, 20, '-', '|');//   draw operate frame

    drawFrame(49, 20, 79, 24, '-', '|');//  draw other message frame

    SetPos(52, 6);

    cout<<"得分:";

    SetPos(52, 7);

    cout<<"称号:";

    SetPos(52,10);

    cout<<"操作方式:";

    SetPos(52,12);

    cout<<"  a,s,d,w 控制战机移动。";

    SetPos(52,14);

    cout<<"  p 暂停游戏。";

    SetPos(52,16);

    cout<<"  e 退出游戏。";

}

 

//在[a, b)之间产生一个随机整数

int random(int a, int b)

{

    int c=(rand() % (a-b))+ a;

    return c;

}
void color(int b)         //颜色函数 

{

    HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ; 

    SetConsoleTextAttribute(hConsole,b) ;

} 

 
 

//在两个坐标包括的矩形框内随机产生一个坐标

COORD random(COORD a, COORD b)

{

    int x=random(a.X, b.X);

    int y=random(a.Y, b.Y);

    COORD c={x, y};

    return c;

}

 

bool  judgeCoordInFrame(Frame frame, COORD spot)

{

    if(spot.X>=frame.position[0].X)

        if(spot.X<=frame.position[1].X)

            if(spot.Y>=frame.position[0].Y)

                if(spot.Y<=frame.position[0].Y)

                    return true;

    return false;

}

 

void printCoord(COORD a)

{

    cout    <<"( "<<a.X<<" , "<<a.Y<<" )";

}

 

void printFrameCoord(Frame a)

{

    printCoord(a.position[0]);

    cout    <<" - ";

    printCoord(a.position[1]);

}

 

int drawMenu()

{

    SetPos(30, 1);

    cout<<"P l a n e  W a r";

    drawRow(3, 0, 79, '-');

    drawRow(5, 0, 79, '-');

    SetPos(28, 4);

    cout<<"w 和 s 选择, k 确定";

    SetPos(15, 11);

    cout<<"1. 简单的敌人";

    SetPos(15, 13);

    cout<<"2. 冷酷的敌人";

    drawRow(20, 0, 79, '-');

    drawRow(22, 0, 79, '-');

    SetPos(47, 11);

    cout<<"简单的敌人:";

    SetPos(51, 13);

    cout<<"简单敌人有着较慢的移动速度。";

    int j=11;

    cout<<">>";

    while(1) {

        if( _kbhit() ) {    

            char x=_getch();

            switch (x) {

              case 'w' : {  

                if( j == 13) {

                  SetPos(12, j);

                  cout<<" ";

                  j = 11;

                  SetPos(12, j);

                  cout<<">>";

                  SetPos(51, 13);

                  cout<<"            ";

                  SetPos(47, 11);

                  cout<<"简单的敌人:";

                  SetPos(51, 13);

                  cout<<"简单敌人有着较慢的移动速度。";

                }

                break;

              }

              case 's' : {  

                if( j == 11 ) {

                  SetPos(12, j);

                  cout<<" ";        

                  j = 13;

                  SetPos(12, j);

                  cout<<">>";

                  SetPos(51, 13);

                   cout<<"              ";

                   SetPos(47, 11);

                   cout<<"冷酷的敌人:";

                   SetPos(51, 13);

                   cout<<"冷酷的敌人移动速度较快。";

                }

                break;

              }

              case 'k' : {  

                if (j == 8) return 1; else return 2;

              }

            }

        }

    }

}

/*================== the Game Class ==================*/

 

class Game

{

public:

    COORD position[10];

    COORD bullet[10];

    Frame enemy[8];

    int score;

    int rank;

    int rankf;

    string title;

    int flag_rank;

 

    Game ();

 

    //初始化所有

    void initPlane();

    void initBullet();

    void initEnemy();

 

    //初始化其中一个

    //void initThisBullet( COORD );

    //void initThisEnemy( Frame );

 

    void planeMove(char);

    void bulletMove();

    void enemyMove();

 

    //填充所有

    void drawPlane();

    void drawPlaneToNull();

    void drawBullet();

    void drawBulletToNull();

    void drawEnemy();

    void drawEnemyToNull();

 

    //填充其中一个

    void drawThisBulletToNull( COORD );

    void drawThisEnemyToNull( Frame );

 

    void Pause();

    void Playing();

    void judgePlane();

    void judgeEnemy();

 

    void Shoot();

 

    void GameOver();

    void printScore();

};

 

Game::Game()

{

    initPlane();

    initBullet();

    initEnemy();

    score = 0;

    rank = 25;

    rankf = 0;

    flag_rank = 0;

}

 

void Game::initPlane()

{

    COORD centren={39, 22};

    position[0].X=position[5].X=position[7].X=position[9].X=centren.X;

    position[1].X=centren.X-2;  

    position[2].X=position[6].X=centren.X-1;

    position[3].X=position[8].X=centren.X+1;

    position[4].X=centren.X+2;

    for(int i=0; i<=4; i++)

        position[i].Y=centren.Y;

    for(int i=6; i<=8; i++)

        position[i].Y=centren.Y+1;

    position[5].Y=centren.Y-1;

    position[9].Y=centren.Y-2;

}

 

void Game::drawPlane()

{

    for(int i=0; i<9; i++)

    {

        SetPos(position[i]);

        if(i!=5)

            cout<<"O";

        else if(i==5)

            cout<<"|";      

    }

}

 

void Game::drawPlaneToNull()

{

    for(int i=0; i<9; i++)

    {

        SetPos(position[i]);

        cout<<" ";

    }   

}

 

void Game::initBullet()

{

    for(int i=0; i<10; i++)

        bullet[i].Y = 30;

}

 

void Game::drawBullet()

{

    for(int i=0; i<10; i++)

    {

        if( bullet[i].Y != 30)

        {

            SetPos(bullet[i]);

            cout<<"Φ";  

        }

    }

}

 

void Game::drawBulletToNull()

{

    for(int i=0; i<10; i++)

        if( bullet[i].Y != 30 )

            {

                COORD pos={bullet[i].X, bullet[i].Y+1};

                SetPos(pos);

                cout<<" ";

            }   

}

 

void Game::initEnemy()

{

    COORD a={1, 1};

    COORD b={45, 15};

    for(int i=0; i<8; i++)

    {

        enemy[i].position[0] = random(a, b);

        enemy[i].position[1].X = enemy[i].position[0].X + 3;

        enemy[i].position[1].Y = enemy[i].position[0].Y + 2;

    }

}

 

void Game::drawEnemy()

{

    for(int i=0; i<8; i++)

        drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');

}

 

void Game::drawEnemyToNull()

{

    for(int i=0; i<8; i++)

    {

        drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');

    }       

}

 

void Game::Pause()

{

    SetPos(61,2);

    cout<<"               ";

    SetPos(61,2);

    cout<<"暂停中...";

    char c=_getch();

    while(c!='p')

        c=_getch();

    SetPos(61,2);

    cout<<"         ";

}

 

void Game::planeMove(char x)

{

    if(x == 'a')

        if(position[1].X != 1)

            for(int i=0; i<=9; i++)

                position[i].X -= 2;

 

    if(x == 's')

        if(position[7].Y != 23)

            for(int i=0; i<=9; i++)

                position[i].Y += 1;

 

    if(x == 'd')

        if(position[4].X != 47)

            for(int i=0; i<=9; i++)

                position[i].X += 2;

 

    if(x == 'w')

        if(position[5].Y != 3)

            for(int i=0; i<=9; i++)

                position[i].Y -= 1;

}

 

void Game::bulletMove()

{

    for(int i=0; i<10; i++)

    {

        if( bullet[i].Y != 30)

        {

            bullet[i].Y -= 1;

            if( bullet[i].Y == 1 )

            {

                COORD pos={bullet[i].X, bullet[i].Y+1};

                drawThisBulletToNull( pos );

                bullet[i].Y=30;

            }

 

        }

    }

}

 

void Game::enemyMove()

{

    for(int i=0; i<8; i++)

    {

        for(int j=0; j<2; j++)

            enemy[i].position[j].Y++;

 

        if(24 == enemy[i].position[1].Y)

        {

            COORD a={1, 1};

            COORD b={45, 3};

            enemy[i].position[0] = random(a, b);

            enemy[i].position[1].X = enemy[i].position[0].X + 3;

            enemy[i].position[1].Y = enemy[i].position[0].Y + 2;

        }

    }

}

 

void Game::judgePlane()

{

    for(int i = 0; i < 8; i++)

        for(int j=0; j<9; j++)

            if(judgeCoordInFrame(enemy[i], position[j]))

            {

                SetPos(62, 1);

                cout<<"坠毁";

                drawFrame(enemy[i], '+', '+');

                Sleep(1000);

                GameOver();

                break;

            }

}

 

void Game::drawThisBulletToNull( COORD c)

{

    SetPos(c);

    cout<<" ";

}

 

void Game::drawThisEnemyToNull( Frame f )

{

    drawFrame(f, ' ', ' ');

}

 

void Game::judgeEnemy()

{

    for(int i = 0; i < 8; i++)

        for(int j = 0; j < 10; j++)

            if( judgeCoordInFrame(enemy[i], bullet[j]) )

            {

                score += 5;

                drawThisEnemyToNull( enemy[i] );

                COORD a={1, 1};

                COORD b={45, 3};

                enemy[i].position[0] = random(a, b);

                enemy[i].position[1].X = enemy[i].position[0].X + 3;

                enemy[i].position[1].Y = enemy[i].position[0].Y + 2;                    

                drawThisBulletToNull( bullet[j] );

                bullet[j].Y = 30;

            }

}

 

void Game::Shoot()

{

    for(int i=0; i<10; i++)

        if(bullet[i].Y == 30)

        {

            bullet[i].X = position[5].X;

            bullet[i].Y = position[5].Y-1;

            break;

        }

}

 

void Game::printScore()

{

    if(score == 120 && flag_rank == 0)

    {

        rank -= 3;

        flag_rank = 1;

    }

 

    else if( score == 360 && flag_rank == 1)

    {

        rank -= 5;

        flag_rank = 2;

    }

    else if( score == 480 && flag_rank == 2)

    {

        rank -= 5;

        flag_rank = 3;

    }

    int x=rank/5;

    SetPos(60, 6);

    cout<<score;

 

    if( rank!=rankf )

    {

        SetPos(60, 7);

        if( x == 5)

            title="新手守护";

        else if( x == 4)

            title="资深守护";

        else if( x == 3)

            title="缔造者守护";

        else if( x == 2 )

            title="战狼守护";
            else if(x==1)
            title="绝地武士守护";
            else if(x=0)
            title="缔造者之神守护"; 

        cout<<title;

    }

    rankf = rank;

}

 

void Game::Playing()

{


 

    drawEnemy();

    drawPlane();

 

    int flag_bullet = 0;

    int flag_enemy = 0;

 

    while(1)

    {

        Sleep(8);

        if(_kbhit())

        {

            char x = _getch();

            if ('a' == x || 's' == x || 'd' == x || 'w' == x)

            {

                drawPlaneToNull();

                planeMove(x);

                drawPlane();

                judgePlane();

            }           

            else if ('p' == x)

                Pause();

            else if( 'k' == x)

                Shoot();

            else if( 'e' == x)

            {

                //CloseHandle(MFUN);

                GameOver();

                break;

            }

 

        }

        /* 处理子弹 */

        if( 0 == flag_bullet )

        {

            bulletMove();

            drawBulletToNull();

            drawBullet();

            judgeEnemy();

        }           

        flag_bullet++;

        if( 5 == flag_bullet )

            flag_bullet = 0;

 

        /* 处理敌人 */

        if( 0 == flag_enemy )

        {

            drawEnemyToNull();

            enemyMove();            

            drawEnemy();

            judgePlane();

        }

        flag_enemy++;

        if( flag_enemy >= rank )

            flag_enemy = 0;

 

        /* 输出得分 */

        printScore();

    }

}

 

void Game::GameOver()

{

    system("cls");              

    COORD p1={28,9};

    COORD p2={53,15};

    drawFrame(p1, p2, '=', '|');

    SetPos(36,12);

    string str="Game Over!";

    for(int i=0; i<str.size(); i++)

    {

        Sleep(80);

        cout<<str[i];

    }

    Sleep(1000);

    system("cls");

    drawFrame(p1, p2, '=', '|');

    SetPos(31, 11);

    cout<<"击落敌机:"<<score/5<<" 架";

    SetPos(31, 12);

    cout<<"得  分:"<<score<<" 分";

    SetPos(31, 13);

    cout<<"获得称号:"<<title;

    SetPos(30, 16);

    Sleep(1000);

    cout<<"继续? 是(y)| 否(n)";

as:

    char x=_getch();

    if (x == 'n')

        exit(0);

    else if (x == 'y')

    {

        system("cls");

        Game game;

        int a = drawMenu();

        if(a == 2)

            game.rank = 20;

        system("cls");

        drawPlaying();

        game.Playing();

    }

    else goto as;

}

 

/*================== the main function ==================*/

int main()

{

    //游戏准备

    srand((int)time(0));    //随机种子

    HideCursor();   //隐藏光标

 

    Game game;

    int a = drawMenu();

    if(a == 2)

        game.rank = 20;

    system("cls");

    drawPlaying();

    game.Playing();

}

 

0
我要回答