问题标题: 求游戏代码(越多越好)

1
1

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;
}
#include<iostream>  
#include<windows.h>  
#include<conio.h>  
#include<time.h>  
#include<string>  
using namespace std;  

/*=============== all the structures ===============*/  

typedef struct Frame  
{  
    COORD position[2];  
    int flag;  
}Frame;  


/*=============== all the functions ===============*/  

void SetPos(COORD a)// set cursor   
{  
    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);  
    SetConsoleCursorPosition(out, a);  
}  

void SetPos(int i, int j)// set cursor  
{  
    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<<"简单敌人有着较慢的移动速度。";  
    SetPos(24, 21);  
    cout<<"制作:LJF神犇";  
    int j=11;  
    SetPos(12, j);  
    cout<<">>";  

    //drawFrame(45, 9, 79, 17, '=', '|');  

    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;  
                    }  
            }  
        }  
    }  
}  

/*  
DWORD WINAPI MusicFun(LPVOID lpParamte) 
{ 
    //DWORD OBJ; 
    sndPlaySound(TEXT("bgm.wav"), SND_FILENAME|SND_ASYNC); 
    return 0; 
} 
*/  


/*================== 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 == 4)  
            title="初级飞行员";  
        else if( x == 3)  
            title="中级飞行员";  
        else if( x == 2)  
            title="高级飞行员";  
        else if( x == 1 )  
            title="王牌飞行员";  
        cout<<title;  
    }  
    rankf = rank;  
}  

void Game::Playing()  
{  
    //HANDLE MFUN;  
    //MFUN= CreateThread(NULL, 0, MusicFun, NULL, 0, NULL);   

    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)制作:最牛的LJF";  
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<time.h>
#include<conio.h>
using namespace std;
// 刷新当前屏幕
inline void Refresh(char q[][22], int grade, int gamespeed){
    system("cls");     //  清屏
 int i,j;
 cout << endl;
 for(i=0;i<22;i++){
     cout << "\t";
  for(j=0;j<22;j++)
   cout<<q[i][j]<<' ';    //  输出贪吃蛇棋盘
        if(i==0) cout << "\t等级为:" << grade;
        if(i==4) cout << "\t自动前进时间";
        if(i==6) cout << "\t间隔为:" << gamespeed << "ms";
  cout<<endl;
 }
}
int main(){
    char tcsQipan[22][22];     //  贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)
    int i,j;
    for(i=1;i<=20;i++)
        for(j=1;j<=20;j++)
            tcsQipan[i][j]=' ';     //     初始化贪吃蛇棋盘中间空白部分
    for(i=0;i<=21;i++)
        tcsQipan[0][i] = tcsQipan[21][i] = '-';      //初始化贪吃蛇棋盘上下墙壁
    for(i=1;i<=20;i++)
        tcsQipan[i][0] = tcsQipan[i][21] = '|';      //初始化贪吃蛇棋盘左右墙壁
    int tcsZuobiao[2][100];     //蛇的坐标数组
    for(i=0; i<4; i++){
        tcsZuobiao[0][i] = 1;
        tcsZuobiao[1][i] = i + 1;
    }
    int head = 3,tail = 0;
    for(i=1;i<=3;i++)
        tcsQipan[1][i]='*';    //蛇身
    tcsQipan[1][4]='@';       //蛇头
    int x1, y1;           // 随机出米
    srand(time(0));
    do{
  x1=rand()%20+1;
  y1=rand()%20+1;
 }while(tcsQipan[x1][y1]!=' ');
 tcsQipan[x1][y1]='*';
 cout<<"\n\n\t\t贪吃蛇游戏即将开始 !"<<endl;//准备开始;;
 long start;
    int grade = 1, length = 4;
    int gamespeed = 500;  //前进时间间隔
 for(i=3;i>=0;i--){
  start=clock();
  while(clock()-start<=1000);
  system("cls");
  if(i>0)
   cout << "\n\n\t\t进入倒计时:" << i << endl;
  else
   Refresh(tcsQipan,grade,gamespeed);
 }
    int timeover;
    char direction = 77;  // 初始情况下,向右运动
    int x,y;
    while(1){
        timeover = 1;
        start = clock();
        while((timeover=(clock()-start<=gamespeed))&&!kbhit());
             //如果有键按下或时间超过自动前进时间间隔则终止循环
        if(timeover){
            getch();direction = getch();
        }
        switch(direction){
        case 72: x= tcsZuobiao[0][head]-1; y= tcsZuobiao[1][head];break;     // 向上
        case 80: x= tcsZuobiao[0][head]+1; y= tcsZuobiao[1][head];break;      // 向下
        case 75: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]-1;break;      // 向左
        case 77: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]+1;           // 向右
        }
        if(!(direction==72||direction==80||direction==75 ||direction==77)){   //  按键非方向键
            cout << "\tGame over!" << endl;return 0;
        }
        if(x==0 || x==21 ||y==0 || y==21){   // 碰到墙壁
            cout << "\tGame over!" << endl;return 0;
        }
        if(tcsQipan[x][y]!=' '&&!(x==x1&&y==y1)){ //   蛇头碰到蛇身
            cout << "\tGame over!" << endl;return 0;
        }
        if(x==x1 && y==y1){      //  吃米,长度加1
            length ++;
            if(length>=8){
                length -= 8;
                grade ++;
                if(gamespeed>=200)
                    gamespeed = 550 - grade * 50; // 改变自动前进时间间隔
            }
            tcsQipan[x][y]= '@';
            tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]] = '*';
            head = (head+1)%100;
            tcsZuobiao[0][head] = x;
            tcsZuobiao[1][head] = y;
            do
            {
                x1=rand()%20+1;
                y1=rand()%20+1;
            }while(tcsQipan[x1][y1]!=' ');
            tcsQipan[x1][y1]='*';
            Refresh(tcsQipan,grade,gamespeed);
        }

        else{       //  不吃米
            tcsQipan [tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=' ';
            tail=(tail+1)%100;
            tcsQipan [tcsZuobiao[0][head]][tcsZuobiao[1][head]]='*';
            head=(head+1)%100;
            tcsZuobiao[0][head]=x;
            tcsZuobiao[1][head]=y;
            tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]='@';
            Refresh(tcsQipan,grade,gamespeed);
        }
    }
    return 0;
}

 

2
陆麟瑞
陆麟瑞
资深天翼
资深天翼

好好学习,不要想什么游戏(逃

0
黄昊轩
黄昊轩
新手守护
新手守护

#include<iostream> 

#include<windows.h> 

#include<conio.h> 

#include<time.h> 

#include<string> 

using namespace std; 

 

/*=============== all the structures ===============*/ 

 

typedef struct Frame 

    COORD position[2]; 

    int flag; 

}Frame; 

 

 

/*=============== all the functions ===============*/ 

 

void SetPos(COORD a)// set cursor  

    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE); 

    SetConsoleCursorPosition(out, a); 

 

void SetPos(int i, int j)// set cursor 

    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<<"简单敌人有着较慢的移动速度。"; 

    SetPos(24, 21); 

    cout<<"制作:LJF神犇"; 

    int j=11; 

    SetPos(12, j); 

    cout<<">>"; 

 

    //drawFrame(45, 9, 79, 17, '=', '|'); 

 

    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; 

                    } 

            } 

        } 

    } 

 

/* 

DWORD WINAPI MusicFun(LPVOID lpParamte)

{

    //DWORD OBJ;

    sndPlaySound(TEXT("bgm.wav"), SND_FILENAME|SND_ASYNC);

    return 0;

}

*/ 

 

 

/*================== 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="王牌飞行员"; 

        cout<<title; 

    } 

    rankf = rank; 

 

void Game::Playing() 

    //HANDLE MFUN; 

    //MFUN= CreateThread(NULL, 0, MusicFun, NULL, 0, NULL);  

 

    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)制作:最牛的LJF"; 

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
陈天宇
陈天宇
资深守护
资深守护

你再发这种问题,我就要告诉老师了,我们是同班的。

0
0
0
我要回答