自编的一款小游戏【比较蒟蒻】

直接上代码吧:

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
char P;
int player,num=0,player1_e=0,player2_e=0,player1_d=0,player2_d=0,t=0,n1=0;
int player1_m=0,player2_m=0,n2=0,true1=0,true2=0;
void game();void shop();void home();void rule();void play();void money();void people();
void before(){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
}
void blue_C(){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
}
void red_C(){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
}
void green_C(){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
}
void pink_C(){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_BLUE);
}
void home(){
    char game;
    printf("||商城(s)||开始游戏(p)||游戏规则(r)||离开游戏(o)||玩家属性查询(m)||编写人员(z)||\n");
    Sleep(1000); 
    cin>>game;
    switch(game){ 
        case 's':{
            Sleep(1000);
            printf("页面跳转中,请稍候……\n");
            Sleep(1000);
            shop(); 
            break;
        }
        case 'p':{
            Sleep(1000);
            printf("页面跳转中,请稍候……\n");
            Sleep(1000);
            play(); 
            break;
        }
        case 'r':{
            Sleep(1000);
            printf("页面跳转中,请稍候……\n");
            Sleep(1000);
            rule(); 
            break;
        }
        case 'o':{
            Sleep(1000);
            printf("页面跳转中,请稍候……\n");
            Sleep(1000);
            printf("欢迎您随时返回游戏!\n");
            break;
        }
        case 'm':{
            Sleep(1000);
            printf("页面跳转中,请稍候……\n");
            Sleep(1000);
            money();
            break;
        } 
        case 'z':{
            Sleep(1000);
            printf("页面跳转中,请稍候……\n");
            Sleep(1000);
            people();
            break;
        } 
        default :{
            printf("输入不正确,请重新输入!\n");
            Sleep(1000);
            home();
            return ; 
        }
    }
}
void people(){
    before();
    printf("编写人员:均由DreamShadow创编\n");
    Sleep(1000);
    switch(P){
        case 'B':{
            blue_C();
            break;
        }
        case 'R':{
            red_C();
            break;
        }
        case 'G':{
            green_C();
            break;
        }
    }
    home(); 
}
void money(){
    printf(" 玩家      金币   蓝色魔法药水     红色魔法药水\n");
    printf(" 玩家一 || %d$    ||   %d       ||     %d\n",player1_m,player1_e,player1_d);
    Sleep(2000);
    printf(" 玩家二 || %d$    ||   %d       ||     %d\n",player2_m,player2_e,player2_d);
    Sleep(2000);
    home();
}
void shop(){
    char buy;
    pink_C(); 
    printf("   商品名称                         作用                         价格($)\n"); 
    Sleep(1000);
    printf("蓝色魔法药水(e)  ||  在最后错误计算完毕时可以减掉5次错误次数  ||   1000\n");
    Sleep(1000);
    printf("红色魔法药水(d)  ||                pass一道题目               ||   100\n");
    Sleep(1000);
    printf("P1玩家?(1)P2玩家?(2)放弃交易?(3)");cin>>player;
    if(player==3){
        switch(P){
        case 'B':{
            blue_C();
            break;
        }
        case 'R':{
            red_C();
            break;
        }
        case 'G':{
            green_C();
            break;
        }
    }
        home();
        return ;
    }
    printf("\n请选择要买的商品名称:");cin>>buy;
    Sleep(1000);
    printf("\n购买数量(切记不可超过购买最大值,否则系统自动清零当前玩家的钱币):");cin>>num;
    switch(buy){
        case 'e':{
            if(player==1){
                if(player1_m>=1000*num){
                    player1_e+=num;
                    player1_m-=1000*num;
                    printf("交易成功!\n");
                    printf("剩余金币:%d\n",player1_m);
                    Sleep(1000);
                }else
                {
                    printf("P1玩家试图超过购买最大值,金币清零!下不为例\n");
                    Sleep(2000);
                    player1_m=0; 
                }
            }else{
                if(player2_m>=1000*num){
                    player2_e+=num;
                    player2_m-=1000*num;
                    printf("交易成功!\n");
                    printf("剩余金币:%d\n",player1_m);
                    Sleep(1000);
                }else
                {
                    printf("P2玩家试图超过购买最大值,金币清零!下不为例\n");
                    Sleep(2000);
                    player2_e=0; 
                }
            }
            num=0;
            break;
        }
        case 'd':{
            if(player==1){
                if(player1_m>=100*num){
                    player1_d+=num;
                    player1_m-=100*num;
                    printf("交易成功!\n");
                    Sleep(1000);
                }else
                {
                    printf("P1玩家试图超过购买最大值,金币清零!下不为例\n");
                    Sleep(2000);
                    player1_e=0; 
                }
            }else{
                if(player2_m>=100*num){
                    player2_d+=num;
                    player2_m-=100*num;
                    printf("交易成功!\n");
                    Sleep(1000);
                }else
                {
                    printf("P2玩家试图超过购买最大值,金币清零!下不为例\n");
                    Sleep(2000);
                    player2_m=0; 
                }
            }
            num=0;
            break;
        }
    } 
    Sleep(2000);
    printf("欢迎再次光临!\n"); 
    switch(P){
        case 'B':{
            blue_C();
            break;
        }
        case 'R':{
            red_C();
            break;
        }
        case 'G':{
            green_C();
            break;
        }
    }
    
    home();

}
void rule(){
    printf("游戏规则:\n");
    Sleep(1000);
    printf("本游戏由两个玩家参与,在游戏界面中开始进行猜随机数的游戏,并有钱币奖励,钱币可在商城中购买一些道具\n");
    Sleep(3000);
    printf("温馨提示:建议折半查找这个数据,猜的次数越少,钱币越多(建立在对方错的次数上,也就是说,对方错的越多,你得到的金币越多),反之,越少!\n");
    Sleep(6000);
    printf("本款游戏出现的BUG可联系创编者哦!\n钦此!\n");
    Sleep(1000);
    printf("-----------------------------------------------------------------------------\n");
    home();
}
void play(){
    before();
    srand( (unsigned)time( NULL ) );
    Sleep(1000);
    cout<<"随机数生成中……"<<endl;
    Sleep(1000); 
    int player1_num = rand() % 1000 + 1;
    srand( (unsigned)time( NULL ) );
    int player2_num = rand() % 1000 + 1;
    printf("玩家一开始猜数(本次数据范围为0~1000)\n");
    Sleep(1000);
    n1=0;
    while(true1!=player1_num){
        cin>>true1;
        if(true1>player1_num){
            printf("猜错了!大了!\n");
            Sleep(1000); 
            if(player1_d>=1){
                printf("是否使用红色魔法药水?是(1)否(2):");
                Sleep(1100);
                cin>>t;
                if(t==1){
                    player1_d--;
                    printf("\n剩余红色魔法药水:%d\n",player1_d);
                    Sleep(1000);
                    n1--;
                }
            }
            n1++;
        }else if(true1<player1_num){
            printf("猜错了!小了!\n");
            Sleep(1000); 
            if(player1_d>=1){
                printf("是否使用红色魔法药水?是(1)否(2):");
                Sleep(1000);
                cin>>t;
                if(t==1){
                    player1_d--;
                    printf("\n剩余红色魔法药水:%d\n",player1_d);
                    Sleep(1000);
                    n1--;
                };
            }
            n1++;
        }
    } 
    printf("猜对喽!二号玩家准备!\n") ;
    Sleep(2000);
    printf("玩家二开始猜数(本次数据范围为0~1000)\n");
    Sleep(1000);
    n2=0;
    while(true2!=player2_num){
        cin>>true2;
        if(true2>player2_num){
            printf("猜错了!大了!\n");
            Sleep(1000); 
            if(player2_d>=1){
                printf("是否使用红色魔法药水?是(1)否(2):");
                Sleep(1000);
                cin>>t;
                if(t==1){
                    player2_d--;
                    printf("\n剩余红色魔法药水:%d\n",player2_d);
                    Sleep(1000);
                    n2--;
                    printf("继续猜!\n");
                }
            }
            n2++;
        }else if(true2<player2_num){
            printf("猜错了!小了○!\n");
            Sleep(1000); 
            if(player2_d>=1){
                printf("是否使用红色魔法药水?是(1)否(2):");
                Sleep(1000);
                cin>>t;
                if(t==1){
                    player2_d--;
                    printf("\n剩余红色魔法药水:%d\n",player2_d);
                    Sleep(1000);
                    n2--;
                    printf("继续猜!\n");
                }
            }
            n2++;
        }
    }
    pink_C();
    printf("猜对喽!\n");
    Sleep(4000); 
    if(player1_e>=1){
                printf("是否使用蓝色魔法药水?是(1)否(2):");
                Sleep(1000);
                cin>>t;
                if(t==1){
                    player1_e--;
                    printf("\n剩余蓝色魔法药水:%d\n",player2_d);
                    Sleep(1000);
                    n1-=5;
                }
            }
    if(player2_e>=1){
                printf("是否使用蓝色魔法药水?是(1)否(2):");
                Sleep(1000);
                cin>>t;
                if(t==1){
                    player2_e--;
                    printf("\n剩余蓝色魔法药水:%d\n",player2_d);
                    Sleep(1000);
                    n2-=5;
                }
            }
    printf("玩家一猜的次数为:%d 得到的金币数为: %d\n",n1,n2*5);
    Sleep(1000);
    printf("玩家二猜的次数为:%d 得到的金币数为: %d\n",n2,n1*5);
    Sleep(2000);
    printf("目前玩家一的金币为:%d\n",player1_m+=n2*5);
    Sleep(1000);
    printf("目前玩家二的金币为:%d\n",player2_m+=n1*5);
    Sleep(1000);
    switch(P){
        case 'B':{
            blue_C();
            break;
        }
        case 'R':{
            red_C();
            break;
        }
        case 'G':{
            green_C();
            break;
        }
    }
    home();
}
void findt(int n){
    if(n<2)printf("%d",n);
    if(n>=2){
        findt(n/2);
        printf("%d",n%2);
    }
}
void finde(int n){
    if(n<8)printf("%d",n);
    if(n>=8){
        finde(n/8);
        printf("%d",n%8);
    }
}
void finds1(int n){
    switch(n){
        case 10:printf("A");break;
        case 11:printf("B");break;
        case 12:printf("C");break;
        case 13:printf("D");break;
        case 14:printf("E");break;
        case 15:printf("F");break;
        default:printf("%d",n);
    }
}
void finds2(int n){
    if(n<16){
        finds1(n);
    }
    if(n>=16){
        finds2(n/16);
        finds1(n%16);
    }
}

 

以上为子程序,经供参考,若需要完整版,请点击关注,然后问楼主所要即可。

posted @ 2019-04-20 20:31  DreamShadow  阅读(318)  评论(0编辑  收藏  举报