人生之路代码5

本文展示了几个不同的游戏编程实现,包括贪吃蛇、石头剪刀布、扫雷和2048,涉及游戏逻辑、碰撞检测、用户输入处理等。同时,文章提到了游乐场和市场,玩家可以通过参与赌博和工作赚取金钱。此外,还介绍了一个名为“Duchang”的地方,玩家可以在这里进行赌博活动。
摘要由CSDN通过智能技术生成

点我查看全部代码

#define framex 5
#define framey 5
#define wide 20
#define high 20
int i,j,a[2];    
//游戏封面
void Gotoxy(HANDLE hout,int x,int y){
    //COORD是WindowsAPI中定义的一种结构,表示一个字符在控制台屏幕上的坐标
    COORD pos;
    pos.X=x;
    pos.Y=y;
    //SetConsoleCursorPosition是API中定位光标位置的函数。
    SetConsoleCursorPosition(hout,pos);
}
void cover (HANDLE hout){
    char a;
    a=getchar();
    system("cls");
} 
//定义蛇的结构体 
struct  Snake{
    int x[100];
    int y[100];
    int speed;
    int length;
    int count;
};
//定义食物的结构体 
struct Food{
    int x;
    int y;
};
//制作框架 
void makeframe(struct Snake snake){
    //定义显示器变量句柄 
    HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
    color(7);
    Gotoxy(hout,framex+wide*2+5,framey);
    printf( "   贪吃蛇"); 
    Gotoxy(hout,framex+wide*2+5,framey+3);
    printf("使用方向键或wasd移动");
    Gotoxy(hout,framex+wide*2+5,framey+5);
    printf("长按方向键可加速");
    Gotoxy(hout,framex+wide*2+5,framey+7);
    printf("按任意键暂停,方向键继续");
    //打印上边框 
    for(i=0;i<wide*2+1;i++){
        Gotoxy(hout,framex+i,framey);
        printf("*");
    }
    //打印下边框 
    for(i=0;i<wide*2+2;i++){
        Gotoxy(hout,framex+i,framey+high);
        printf("*");
    }
    //打印左边框 
    for(i=0;i<high;i++){
        Gotoxy(hout,framex,framey+i);
        printf("■");
    }
    //打印右边框 
    for(i=0;i<high;i++){
        Gotoxy(hout,framex+wide*2+1,framey+i);
        printf("■");
    }
}
//游戏信息
void infor(HANDLE hout,struct Snake* snake){
    Gotoxy(hout,framex+wide*2+5,framey+15);
    color(6);
    printf("当前速度:%d",-snake->speed+500);
    Gotoxy(hout,framex+wide*2+5,framey+17);
    color(8);
    printf("当前得分:%d",snake->count);
    Gotoxy(hout,framex+wide*2+5,framey+19);
    color(4);
    printf("当前长度:%d",snake->length);
} 
//初始化蛇 
void initsnake(struct Snake *snake){
    snake->x[0]=framex+2;
    snake->y[0]=framey+high/2;
    snake->count=0;
    snake->length=3;
    snake->speed=400;
    //初始化由蛇尾至蛇头的坐标 
    for(i=1;i<snake->length;i++){
        snake->x[i]=snake->x[i-1]+1;
        snake->y[i]=snake->y[i-1];
    }
}
//打印蛇 
void printsnake(HANDLE hout ,struct Snake *snake){
    for(i=0;i<snake->length;i++){
        Gotoxy(hout,snake->x[i],snake->y[i]);
        if(i==snake->length-1) 
          { 
            color(6);
            printf("·");
          }
        else if(i==0)
          {
              color(8);
            printf("0");
          }
        else 
          {
              color(4);
            printf("■"); 
          }
    }
}
//移动蛇 
void movesnake(HANDLE hout,struct Snake *snake){
    Gotoxy(hout,snake->x[0],snake->y[0]);
    //清除蛇尾 
    printf("  ");
    //蛇的后一节坐标变成前一节的坐标 
    for(i=1;i<snake->length;i++){
        snake->x[i-1]=snake->x[i];
        snake->y[i-1]=snake->y[i];
    }
}
//打印食物 
void printfood (HANDLE hout,struct Snake *snake,struct Food* food){
    //用计算机时间获取随机值 
    srand((unsigned)time(NULL));
    while(1){
        //将食物的横纵坐标的大小限定在窗口大小内 
        food->x=rand()%(wide-2)+1;
        food->y=rand()%(high-2)+1;
        //避免食物出现在边框上 
        if(food->x==0&&food->y==0)
            continue;
        //将食物的坐标放置在窗口内 
        food->x=2*food->x+framex;
        food->y+=framey;
        //如果食物出现在蛇上,重新产生食物 
        for(i=0;i<snake->length;i++){
            if(food->x==snake->x[i]&&food->y==snake->y[i])
                break;
        }
        //食物不在蛇上,打印食物,结束循环 
        if(i==snake->length){
            Gotoxy(hout,food->x,food->y);
            color(7);
            printf("Q");
            break;  
        }
    }

}
//吃食物 
void eatfood(HANDLE hout,struct Snake * snake,struct Food *food){
    //如果蛇头的坐标等于食物的坐标 
    if(snake->x[snake->length-1]==food->x&&snake->y[snake->length-1]==food->y){
        //蛇长加一 
        snake->length++;
        //蛇身(不包括蛇尾)整体像前移动一格 
        for(i=snake->length-1;i>0;i--){
            snake->x[i]=snake->x[i-1];
            snake->y[i]=snake->y[i-1];
        }
        //得到蛇尾的坐标(即蛇移动前的蛇尾坐标) 
        snake->x[0]=a[0];      
        snake->y[0]=a[1];
        printfood(hout,snake,food);
        snake->count++;
        if(snake->count%3==0)
            snake->speed-=50;
    }
}
//死亡判断 
int ifdead(struct Snake* snake){
    //如果碰到左边界 返回0;
    if(snake->x[snake->length-1]==framex)
        return 0;
    //如果碰到右边界 返回0;
    if(snake->x[snake->length-1]==framex+wide*2)
        return 0;
    //如果碰到上边界 返回0;
    if(snake->y[snake->length-1]==framey)
        return 0;
    //如果碰到下边界 返回0;
    if(snake->y[snake->length-1]==framey+high)
        return 0;
    //如果碰到自己身体 返回0; 
    for(i=0; i<snake->length-1; i++) 
        if( snake->x[snake->length-1]==snake->x[i] && snake->y[snake->length-1]==snake->y[i] ) 
            return 0;
    //否则返回1; 
    return 1;
}
//开始游戏 
int Snake(){
    unsigned char ch =77;
    //定义显示器句柄 
    HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
    cover(hout);
    struct Snake s, *snake=&s;
    struct Food  f,  *food=&f;
    makeframe(*snake);
    initsnake(snake);
    printfood(hout,snake,food);
    Sleep(500);
    while(1){
        infor(hout,snake);
        //保存蛇尾横纵坐标 
        a[0]=snake->x[0];
        a[1]=snake->y[0];
        j=0;
        //如果用户敲击键盘
        if(kbhit()){ 
            //用ch接收输入 ,注意是getch(),不需敲击回车
            ch=getch();
            if(kbhit()){
            //长按时间
                Sleep(20);
                j=1;
            }
        }
        switch(ch){
            //向上移动 
            case'W':
            case 'w' :
            case 72:{
                movesnake(hout,snake);
                //蛇头纵坐标减一 
                snake->y[snake->length-1]-=1;
                break;
            }
            //向下移动 
            case'S':
            case 's':
            case 80:{
                movesnake(hout,snake);
                //蛇头纵坐标加一 
                snake->y[snake->length-1]+=1;
                break;
            }
            //向左移动 
            case'A':
            case 'a':
            case 75:{
                movesnake(hout,snake);
                //蛇头横坐标减二 
                snake->x[snake->length-1]-=2;
                break;
            }
            //向右移动 
            case'D':
            case 'd':
            case 77:{
                movesnake(hout,snake);
                //蛇头横坐标加二 
                snake->x[snake->length-1]+=2;
                break;
            }
        }

        eatfood(hout,snake,food);
        printsnake(hout,snake);
        //如果判断蛇死亡,跳出循环 
        if(ifdead(snake)==0||ch==27||snake->speed==0){
            Gotoxy(hout,framex+wide/2,framey-2);
            if(snake->speed==0)
                printf("恭喜你通关了!!!");
            else
                printf("糟糕 T_T");
            break;
        }

        if(j==0)
        //如果没有长按,蛇滞留的时间为 
            Sleep(snake->speed);
        //如果长按,蛇滞留的时间为 20ms,即加速 
        else 
            Sleep(20);
    }
    //跳出循环时 ,滞留死亡场景一段时间
    Sleep(3000);
    //清屏 
    system("cls");
    //显示结束界面 
    if(snake->speed==0) {
    
        printf("\n\n\n\n\n\t\t\t哈哈,你赢了\n\n\t\t\t你得到了满分:24\n\n\n");return 24;}
    else {
        printf("\n\n\n\n\n\t\t\t哈哈,你输了\n\n\t\t\t你的最终得分是:%d\n\n\n",snake->count);return snake->count; }
    Sleep(3000);
    return 0; 
}

int psss()
{
    string what[3]={"石头","剪刀","布"};
    int n,m,i,j,k;
    for(i=0;i<=2;i++)
      printf("%d.%s\n",i,what[i].c_str());
    cout<<"你出什么?";
    cin>>n;
    srand(time(0));
    m=random(0,2);
    cout<<"你出的是"<<what[n]<<",老板出了"<<what[m];
    switch(n-m)
      {
          case -1:
          case 2:cout<<"你赢了!";return 2;
          case 0:cout<<"平局!";return 1;
          default:cout<<"你输了!";return 0;
      }
}
bool saolei(){
int delta[8][2] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int row =0,col = 0,num = 0;
char map[10][10] = {0};
char show[10][10] = {0};
srand(time(0));
for(row = 0;row <= 9;row++){
for(col = 0;col <= 9;col++){
map[row][col] = '0';
}
}
do{
row = rand() % 10;
col = rand() % 10;
if(map[row][col] == '0'){
map[row][col] = 'x';
num++;
}
}while(num < 10);
for (row = 0;row <= 9;row++){
for (col = 0;col <= 9;col++){
if(map[row][col] != 'x'){
int cnt = 0;
for (num = 0;num <= 7;num++){
if(row + delta[num][0] < 0){
continue;
}
if(row + delta[num][0] > 9){
continue;
}
if(col + delta[num][1] < 0){
continue;
}
if(col + delta[num][1] > 9){
continue;
}
if(map[row + delta[num][0]][col + delta[num][1]]== 'x'){
cnt++;
}
}
map[row][col] = '0' + cnt;
}
}
}
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
printf("* ");
}
printf("\n");
}
num = 0;
int x,y;
do{
printf("please enter the coordinate of array:");
scanf("%d%d",&x,&y);
show[x-1][y-1] = 1;
if(map[x-1][y-1] == '0'){
for (num = 0;num <= 7;num++){
if(x-1 + delta[num][0] < 0){
continue;
}
if(x-1 + delta[num][0] > 9){
continue;
}
if(y -1+ delta[num][1] < 0){
continue;
}
if(y-1 + delta[num][1] > 9){
continue;
}
show[x-1+delta[num][0]][y-1+delta[num][1]] = 1;
}
}
if (map[x-1][y-1]!= 'x'&&map[x-1][y-1] != '0'){
for (num = 0;num <= 7;num++){
int cnt = 0;
if(x-1 + delta[num][0] < 0){
continue;
}
if(x-1 + delta[num][0] > 9){
continue;
}
if(y-1 + delta[num][1] < 0){
continue;
}
if(y-1 + delta[num][1] > 9){
continue;
}
if( map[x -1 + delta[num][0]][y -1+ delta[num][1]] != 'x'){
show[x-1  + delta[num][0]][y -1+ delta[num][1]] = 1 ;
}
}

}
if(map[x-1][y-1] == 'x') {
printf("game over!\n");
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
printf("%c ",map[row][col]);
}
printf("\n");
}
return 0;
}
system("cls");
printf("mine sweeping:\n");
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
if (show[row][col] == 1)
{
printf("%c ", map[row][col]);
}
else
{
printf("* ");
}
}
printf("\n");
}
num = 0;
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
if (show[row][col] == 1 )
{
num++;
}
}
}
printf("num:%d\n",num);
}while(num < 90);
printf("you win!");
return 1;
}
int dazi()
{
    string Right="tyduafidooduaepepeidiaeofpdiaepdd\nincldiepapdpeedfidncfidkdledeidd\njdicndleiicneldiapapppeodmcmcadfad\naofdahldkfiehalfdfhoea\n$#$#$!$#@><$dfa>#?!$32>$!#@?\n>$!#@?$#314321FSAD?$@!\nFAdfadl.3$!@#>afdsk4ml132>adfadsl\njflasdfiawehochodackodhiossdjafoisjoifudhalfdlsfhwe8hlfefafjeiajfls\nhfadshioewclzxkdjhfldshadsujcndalheicdjalfsd\nhfdshioqwefawiew#$#!ndafslkdwifdsalhuwoiefdsaiufhuefohoeiafdsa\nfqwelcdxnzleuwiqrwiofadsjflsdfjldsaj\nhfkdlsffhklashflwiuehcnczksiewaolkdsahifls\nhflaidshiohafusehriokndasfjihlueo\nfhakdsfhwei#$!#@$kadhf#R9ofa#$dsf89ewq#$sdfihf3#R;sdfEWQ#RFDSFEAqliru9dss\n";
   char c;
    printf("在屏幕上打出这段话,随时按`加enter结束(随时可以按回车,不算错字)\n\n%s\n",Right.c_str());
    char ch;
    int n=0,right=0;
    time_t t1,t2;
    time(&t1);
    while(1)
      { 
      ch=_getch();
      cout<<ch;
          if (ch==Right[n])
            right++;
        if (ch=='`')
          break;
          n++;
      } 
    time(&t2);
    printf("\n总的输入字符数;%d",n);
    printf("\n对的字符数:%d",right);
    printf("\n总时长:%d秒",t2-t1); 
    printf("\n平均录入速度;%.2f/s",1.0*right/(t2-t1));
    printf("\n平均每分钟速度:%.2f/s",1.0*right/(t2-t1)*60);
    int S=1;
    printf("\n段位:");
    int s=1.0*right/(t2-t1)*60;
    if (s>=0&&s<50)
      printf("LV.1初学者");
    if (s>=50&&s<100)
      printf("LV.2有点水平");
    if (s>=100&&s<150)
      printf("LV.3超越正常人");
    if (s>=150&&s<220)
      printf("LV.4编程队员的水平");
    if (s>=220&&s<300)
      printf("LV.5程序猿");
    if (s>=300&&s<400)
      printf("LV.6速度不是盖的");
    if (s>=400&&s<480)
      printf("LV.7打字能手");
    if (s>=480&&s<550)
      printf("LV.8超级程序员");
    if (s>=550&&s<650)
      printf("LV.9电脑大师");
    if (s>=650&&s<850)
      printf("LV.10计算机大佬");
    if (s>=850)
      printf("LV.11世界冠军"); 
    return s;
}
int const ROW = 4;
int const COL = 4;
int gamemap[ROW][COL] = {0};
 
//上下左右
int const UP = 1;
int const DOWN = 2;
int const LEFT = 3;
int const RIGHT = 4;
 
//游戏所处的状态
int const GAME_OVER = 1;
int const GAME_WIN = 2;
int const GAME_CONTINUE = 3;
 
enum GameNum
{
    Game_2 = 2,
    Game_4 = 4,
    Game_8 = 8,
    Game_16 = 16,
    Game_32 = 32,
    Game_64 = 64,
    Game_128 = 128,
    Game_256 = 256,
    Game_512 = 512,
    Game_1024 = 1024,
    Game_2048 = 2048,
};


//打印所得的数组
void Print()
{
    system("cls");
    cout << "*****************  2048 小 游 戏  ******************" << endl;
    cout << "*****************  GAME 2048  ******************" << endl << endl;
    for (int i = 0; i < ROW; ++i)
    {
        cout << "---------------------------------"<< endl;
        for (int j = 0; j < COL; ++j)
        {
            if (gamemap[i][j] == 0)
            {
                cout <<"|   \t";
            }
            else 
            {
                cout <<"|   " << gamemap[i][j] << "\t";
            }
        }
        cout << "|" << endl;
    }
    cout << "---------------------------------"<< endl;
}
 
 
bool CreateNumber()
{
    int x = -1;
    int y = -1;
    int times = 0;
    int maxTimes = ROW * COL;
    //三分之二的概率生成2,三分之一的概率生成4
    int whitch = rand() % 3;
    do 
    {
        x = rand() % ROW;
        y = rand() % COL;
        ++times;
    } while (gamemap[x][y] != 0 && times <= maxTimes);
 
    //说明格子已经满了
    if(times >= maxTimes)
    {
        return false;
    }
    else
    {
        GameNum num;
        if(whitch == 0)
        {
            num = Game_4;
        }
        else if(whitch)
        {
            num = Game_2;
        }
        gamemap[x][y] = num;
    }
 
    return true;
}
 
void Process(int direction)
{
    switch (direction)
    {
    case UP:
        //最上面一行不动
        for(int row = 1; row < ROW; ++row)
        {
            for(int crow = row; crow >= 1; --crow)
            {
                for(int col = 0; col < COL; ++col)
                {
                    //上一个格子为空
                    if(gamemap[crow-1][col] == 0)
                    {
                        gamemap[crow-1][col] = gamemap[crow][col];
                        gamemap[crow][col] = 0;
                    }
                    else 
                    {
                        //合并
                        if(gamemap[crow-1][col] == gamemap[crow][col])
                        {
                            gamemap[crow - 1][col] *= 2;
                            gamemap[crow][col] = 0;
                        }
 
                    }
                }
            }
        }
        break;
    case DOWN:
        //最下面一行不动
        for(int row = ROW - 2; row >= 0; --row)
        {
            for(int crow = row; crow < ROW - 1; ++crow)
            {
                for(int col = 0; col < COL; ++col)
                {
                    //上一个格子为空
                    if(gamemap[crow + 1][col] == 0)
                    {
                        gamemap[crow + 1][col] = gamemap[crow][col];
                        gamemap[crow][col] = 0;

                        

}
                    else 
                    {
                        //合并
                        if(gamemap[crow + 1][col] == gamemap[crow][col])
                        {
                            gamemap[crow + 1][col] *= 2;
                            gamemap[crow][col] = 0;
                        }
 
                    }
                }
            }
        }
        break;
    case LEFT:
        //最左边一列不动
        for(int  col = 1; col < COL; ++col)
        {
            for(int ccol = col; ccol >= 1; --ccol)
            {
                for(int row = 0; row < ROW; ++row)
                {
                    //上一个格子为空
                    if(gamemap[row][ccol-1] == 0)
                    {
                        gamemap[row][ccol - 1] = gamemap[row][ccol];
                        gamemap[row][ccol] = 0;
                    }
                    else 
                    {
                        //合并
                        if(gamemap[row][ccol - 1] == gamemap[row][ccol])
                        {
                            gamemap[row][ccol - 1] *= 2;
                            gamemap[row][ccol] = 0;
                        }
 
                    }
                }
            }
        }
        break;
    case RIGHT:
        //最右边一列不动
        for(int  col = COL - 2; col >= 0; --col)
        {
            for(int ccol = col; ccol <= COL - 2; ++ccol)
            {
                for(int row = 0; row < ROW; ++row)
                {
                    //上一个格子为空
                    if(gamemap[row][ccol + 1] == 0)
                    {
                        gamemap[row][ccol + 1] = gamemap[row][ccol];
                        gamemap[row][ccol] = 0;
                    }
                    else 
                    {
                        //合并
                        if(gamemap[row][ccol + 1] == gamemap[row][ccol])
                        {
                            gamemap[row][ccol + 1] *= 2;
                            gamemap[row][ccol] = 0;
                        }
 
                    }
                }
            }
        }
        break;
    }
 
}
 
//处理输入输出,返回上下左右
int Input()
{
    //读取上下左右四个方向键
    int upArrow = 0;
    int downArrow = 0;
    int leftArrow = 0;
    int rightArrow = 0;
    int direction = 0;
    while (true)
    {
        upArrow = GetAsyncKeyState(VK_UP);
        downArrow = GetAsyncKeyState(VK_DOWN);
        leftArrow = GetAsyncKeyState(VK_LEFT);
        rightArrow = GetAsyncKeyState(VK_RIGHT);
 
        if(upArrow)
        {
            direction = UP;
            break;
        }
        else if(downArrow)
        {
            direction = DOWN;
            break;
        }
        else if(leftArrow)
        {
            direction = LEFT;
            break;
        }
        else if(rightArrow)
        {
            direction = RIGHT;
            break;
        }
 
    }
 
    return direction;
}
 
//判断游戏状态
int Judge()
{
    //赢得游戏
    for(int i = 0; i < ROW; ++i)
    {
        for(int j = 0; j < COL; ++j)
        {
            if(gamemap[i][j] == 2048)
            {
                return GAME_WIN;
                break;
            }
        }
    }
 
    //横向检查
    for(int i = 0 ; i < ROW; ++i)
    {
        for(int j = 0; j < COL - 1; ++j)
        {
            if(!gamemap[i][j] || (gamemap[i][j] == gamemap[i][j+1]))
            {
                return GAME_CONTINUE;
                break;
            }
        }
    }
    //纵向检查
    for(int j = 0; j< COL; ++j)
    {
        for(int i = 0; i < ROW -1; ++i)
        {
            if(!gamemap[i][j] || (gamemap[i][j] == gamemap[i+1][j]))
            {
                return GAME_CONTINUE;
                break;
            }
        }
    }
 
    //不符合上述两种状况,游戏结束
    return GAME_OVER;
 
}
 
bool game2048()
{
    CreateNumber();
    CreateNumber();
    //数组初始化
    for(int i=0;i<4;i++)
      for(int j=0;j<4;j++)
        gamemap[i][j]=0; 
    Print();
    int direction = 0;
    int gameState = -1;
    while(true)
    {
        direction = Input();
 
        gameState = Judge();
        if(direction && gameState == GAME_CONTINUE)
        {
            Process(direction);
            CreateNumber();
            Print();
            Sleep(100);
        }
        else if(gameState == GAME_WIN)
        {
            Print();
            cout << "You Win!" << endl;
            hdcj(2);
            return 1;
        }
        else if(gameState == GAME_OVER)
        {
            Print();
            cout <<"You lose!" << endl;
            return 0;
        }
    }
}
void carnie()
{
    cls();
    while(1)
      {
          cout<<"欢迎来到游乐场~按下序号即可玩相应的游戏~\n";
          const string where[]=
          {"贪吃蛇","石头剪刀布","扫雷","打字游戏","2048","离开"};
          int i,j,k,n,m;
          for(i=0;i<=5;i++)
            printf("%d.%s\n",i,where[i].c_str());
          char l=_getch();
          switch(l)
            {
                case '0':{
                    use(39);
                    happened+=(name+"在游乐场畅玩贪吃蛇/");
                    tepan();
                    things[8]-=5;
                cls();
                cout<<"你要押多少钱?(注:9分以下血本无归,10分获得50%押钱,11~13获得70%押钱,14获得90%,15获得100%,以后每分增加5%\n";
                cin>>k;
                if (things[7]<k)
                  {
                      cout<<"钱不够!";
                      break;
                  }
                things[7]-=k;
                float cl[25]=
                {0,0,0,0,0,0,0,0,0,0,0.5,0.7,0.7,0.7,0.9,1,1.05,1.1,1.15,1.2,1.25,1.3,1.35,1.4,1.45};
            n=Snake();
                cls();
                m=k*cl[n];
                printf("你获得了:%d元",m);
                things[7]+=m;
                break;}
                case '1':
                    {
                        use(40);
                        happened+=(name+"在游乐场和老板玩石头剪刀布/");
                        tepan();
                        things[8]-=5;
                    cls();
                    cout<<"你要押多少钱?(注:输了血本无归,平局回本,赢了双倍收获\n";
                    cin>>k;
                    if (things[7]<k)
                      {
                          cout<<"钱不够!";
                          break;
                      }
                    cls();
                  things[7]-=k;
                  n=psss();
                  if (n==1)
                    things[7]+=k;
                  if (n==2)
                    things[7]+=k*2;
                  break;
              }
              case '2':
                  {tepan();
                  use(41);
                        things[8]-=5;
                  cls();
                  cout<<"你要押多少钱?(注:输了血本无归,赢了双倍收获)\n";
                  cin>>k;
                  if (things[7]<k)
                    {
                        cout<<"钱不够!";
                        break;
                    }
                cls();
                things[7]-=k;
                n=saolei();
                if (n)
                  {
                      happened+=(name+"玩扫雷游戏,还成功了/");
                      cout<<"你赢了!";
                      things[7]+=k*2;
                      hdcj(40);
                  }
                else
                  {
                    cout<<"你输了!";
                    happened+=(name+"在玩扫雷游戏时被雷炸飞了/");
                  }
                break;
            }
            case '3':{tepan();
            use(42);
                        things[8]-=5;
            cout<<"你要押多少钱?(注:60每分钟以下没钱,60回本,以后每50增加10%)"; 
            cin>>n;
            if (things[7]<n)
                {
                    cout<<"钱不够!";
                    break;
                }
            things[7]-=n;
            j=dazi();
            if (j>=250)
              hdcj(8);
            m=0;
            if (j==60)
              m=n;
             if (j>60)
               {
                   m=n*(1+(float(j/50)*0.1));
                } 
            cout<<"你赚到了:"<<m<<"元!\n";
            gs();
            things[7]+=m;
            break;}
            case '4':
                {
                    printf("你要押多少钱?(输了无钱,赢了双倍收获)\n");
                    cin>>m;
                    if (m>things[7])
                      {
                          cout<<"钱不够!";
                          break;
                      }
                    things[7]-=m;
                    if (game2048())
                      m*=2;
                    else
                      m=0;
                    things[7]+=m;
                    cout<<"你赚到了"<<m<<"元";
                    happened+=(name+"在游乐场玩2048/");
                    break;
                }
            case '5':tepan();
                        things[8]-=5;return;
                case '/':
                {
                    int num;
                    string dm;
                    string one,two,three,four;
                    cin>>dm>>one>>two>>three>>four;
                    cin>>num;
                    if (dm!="/")
                      break;
                    //gamemode
                    if (one=="gamemode"&&three=="*"&&four=="*")
                      things[21]=two[0]-'0';
                    //things
                    if (one=="gamethings"&&three=="of"&&four=="*")
                      {
                          int a,b;
                          a=(two[0]-'0')*100+(two[1]-'0')*10+(two[2]-'0')*1;
                          things[a]+=num;
                      }
                    //fost
                    if (one=="fost"&&three=="of"&&four=="*")
                      {
                          int a,b;
                          a=(two[0]-'0')*100+(two[1]-'0')*10+(two[2]-'0')*1;
                          fost[a]+=num;
                      }
                    break;
                } 
        }
            gs();
      }
}


void market()
{
    cout<<"WAH:小子,又来打工了啊,你这样的小身板还敢来人力市场!\n";
    const string where[]=
    {"搬砖(60%概率成功,得500块)(临工)","抄作业(100%概率成功,可以批量接受,但是要密码,100块)","文字录入(40%概率成功,1000)(临时工)","离开","找工作","领取挂机收益"};
    int i,j,k,n,m;
    while(1)
      {cls();
         for(i=0;i<6;i++)
           printf("%d.%s\n",i,where[i].c_str());
          char l=_getch();
          tepan();
          things[8]-=15;
          switch(l)
            {
                case '0':
                    use(43);
                    happened+=(name+"在工地上搬砖/");
                    Sout("你费力地搬起一堆堆沉重的砖头,砖头却纹丝不动,你又使出了吃奶的劲儿。");
                    hdcj(28);
                    jdt(10);
                    if (rand()%5<=2)
                      {
                          cout<<"获得:500元";
                          things[7]+=500;
                      }
                    else
                      cout<<"WAH:你才搬了几块砖头?!没有工资!!";
                    gs();
                    break;
                case '1':
                    {
                    cout<<"密码:";
                    bool Right=true;
                    string MM="ZJL20090206";
                    for(j=0;j<11;j++)
                      {
                          char m=_getch();
                          cout<<'*';
                          if (m!=MM[j])
                            Right=false;
                      }
                    if (Right)
                      {
                          happened+=(name+"窃取了抄作业的密码,疯狂抄作业/");
                          cout<<"抄几次?";
                          cin>>m;
                          jdt(10);
                          things[7]+=100*m; 
                      }
                    else
                      {
                        cout<<"没有密码就别逞强!";
                        happened+=(name+"竟然没有密码也想抄作业赚钱/");
                      }
                    gs();
                    break;
                }
                case '2':
                    use(44);
                    Sout("你费力地看着一行行文字,感觉眼睛生疼,但是为了赚到钱,你拼了!");
                    jdt(10);
                    if (rand()%5<=1)
                      {
                          cout<<"获得1000元!";
                          things[7]+=1000;
                      }
                    else
                      cout<<"WAH:打错了好几个字,没有工资!!";
                    gs();
                    break;
                case '3':return;
                case '4':
                    {
                        use(45);
                        switch(things[28])
                          {
                              case 4:
                                  cls();
                                  Sout("老板:这位可是白云大学的呢!来这里!工资高!");
                                  gs();
                                  cout<<"你被SORT_TIS公司录取了,(挂机收益:70元/分钟)";
                                  things[29]=70;
                                  happened+=(name+"被SORT_TIS公司录取为高级程序员/");
                                  break;
                              case 3:
                                  cls();
                                  Sout("老板:你是白云大学的啊。还不错哦~");
                                  gs();
                                  cout<<"你被WAMVA公司录取了,(挂机收益:55元/分钟)";
                                  things[29]=55;
                                  happened+=(name+"被WAMVA公司录取为经理/");
                                  break;
                              case 2:
                                  cls();
                                  Sout("老板:emmmmm...白云大学,没听说过呢。");
                                  gs();
                                  cout<<"你被WMC公司录取了,(挂机收益:35元/分钟)";
                                  happened+=(name+"被WMC公司录取为科长/");
                                  things[29]=35;break;
                              case 1:
                                  cls();
                                  Sout("老板:(很为难的样子)白云大学,不怎么样啊,公司缺人,你还是来上班吧。。。");
                                  gs();
                                  cout<<"你被NOTSH公司录取了,(挂机收益10元/分钟)";
                                  happened+=(name+"被NOTSH公司录取为一名普通职员/");
                                  things[29]=10;break;
                              case 0:
                                  cls();
                                  Sout("老板:你连大学都没上啊,你去办公室扫地吧。。。");
                                  gs();
                                  cout<<"你被CLEAN_FLOOR公司录取了,(挂机收益3元/分钟)";
                                  happened+=(name+"被CLEAN_FLOOR公司录取为清洁工/");
                                  things[29]=3;
                                  break;
                          }
                        break;
                    }
                case '5':
                    {
                        use(46);
                        time_t temp;
                        time(&temp);
                        m=temp-start;
                        cout<<"挂机开始时间:"<<start<<'\n';
                        cout<<"挂机结束时间:"<<temp<<'\n';
                        cout<<"你挂机了"<<m<<"秒\n"; 
                        m/=60;
                        if (m>=480)
                          hdcj(29);
                        if (m>=2880)
                          hdcj(30);
                        cout<<"你已经挂机了"<<m<<"分钟\n";
                        if (m>=things[30])
                          m=things[30];
                        cout<<"收益:"<<things[29]<<"元/分钟\n";
                        cout<<"获得:"<<m*things[29]<<"元钱!\n";
                        things[7]+=things[29]*m;
                        time_t te;
                        time(&te);
                        start=te;
                        gs();
                        break;
                    }
                }    
       } 
}
void Duchang()
{
    cls();
    srand(time(0));
    cout<<"WYQ:小子,又来赌场了啊,哈哈哈";
    const string where[]=
    {"赌大小","猜数","彩票","取数游戏","离开"};
    int i,j,k,n,m;
    while(1)
      {
          cls();
          for(i=0;i<5;i++)
            {
                printf("%d.%s\n",i,where[i].c_str());
            }
        char l=_getch();
        tepan();
        things[8]-=10;
        switch(l)
          {
              case '0':
                  {
                      use(47);
                      hdcj(16);
                      system("cls");
                      cout<<"1-大 2-小\n";
                      cin>>m;
                      cout<<"赌多少钱?";
                      cin>>i;
                      k=0;
                      if (things[7]<i)
                        {
                            cout<<"钱不够!";
                            break;
                        }
                      things[7]-=i;
                      for(j=1;j<=6;j++)
                        {
                            n=rand()%6+1;
                            printf("%d\n",n);
                            k+=n;
                        }
                    if (k>21)
                      j=1;
                    else
                      j=0;
                    if (m==j)
                      {
                          cout<<"赚到了!";
                          things[7]+=i*2;
                          happened+=(name+"在赌场大赚一笔/");
                      }
                    else
                      {
                        cout<<"血本无归!";
                        happened+=(name+"在赌场血亏/");
                      }
                    break;
                  }
                case '1':
                    {
                    use(48);
                    cout<<"赌多少钱?";
                      cin>>i;
                      k=0;
                      if (things[7]<i)
                        {
                            cout<<"钱不够!";
                            break;
                        }
                      things[7]-=i;
                        n=random(1,50);
                        for(j=1;j<=6;j++)
                          {
                              system("cls");
                              cout<<"猜一个数,1~50之间,你还有"<<7-j<<"次机会\n";
                              cin>>m;
                              if (m>n)
                                cout<<"Too big!";
                              if (m<n)
                                cout<<"Too small!";
                              if (m==n)
                                {
                                    things[69]++;
                                    cout<<"猜中了!你赚到了"<<i*2<<"元!";
                                    happened+=(name+"在猜数游戏中赚了很多钱/");
                                    things[7]+=i*2;
                                    break;
                              }
                            gs();
                          }
                        if (j==7)
                          {
                            cout<<"血本无归!";
                            happened+=(name+"竟然连猜数游戏都猜不中/");
                            things[69]=0;
                          }
                        if (things[69]>=5)
                          hdcj(37);
                        break;
                    }
                    case '2':
                        {
                            use(49);
                            int a[6]={0,1,100,10000,500000,1000},b[6]={0,100,10000,500000,10000000,1000000};
                            int c[6]={0,20,10,5,4,1};
                            cout<<"你要买什么彩票?\n";
                            cout<<"1.1-->100 20%概率中\n";
                            cout<<"2.100-->10000 10%\n";
                            cout<<"3.10000-->500000 5%\n";
                            cout<<"4.500000-->10000000 4%\n";
                            cout<<"5.1000 --> 1000000 1%\n";
                            cin>>m;
                            if (things[7]<a[m]){
                              cout<<"钱不够!";break;}
                            if (rand()%100+1<=c[m])
                              {
                                  cout<<"中奖了!简直是好运附体!";
                                  happened+=(name+"买彩票中奖了!/");
                                  things[7]+=b[m];
                              }
                            else
                              {
                                cout<<"毛都没抽到!";
                                happened+=(name+"早上没洗脸,买彩票遭血亏/");
                              }
                            break;
                        }
                    case '3':
                        {
                            cls();
                            cout<<"赌多少钱?\n";
                            cin>>m;
                            if (things[7]>=m)
                              things[7]-=m;
                            else
                              {
                                  cout<<"钱不够";
                                  break;
                              }
                            int a[21];
                            cls();
                            for(i=1;i<=20;i++)
                              a[i]=random(1,10000);
                            for(i=1;i<=20;i++)
                              {
                                  gotoxy(0,0);
                                  cout<<a[i]<<' ';
                                  gotoxy(1,0);
                                  cout<<"1.选择 2.下一个";
                                  char l=_getch();
                                  switch(l)
                                    {
                                        case '1':k=a[i];i=5555;
                                        case '2':break;
                                  }
                              }
                            j=0;
                            for(i=1;i<=20;i++)
                              j+=(a[i]>k);
                            cls();
                            cout<<"得分:"<<20-j;
                            switch(j)
                              {
                                  case 0:k=400;break;
                                  case 1:k=330;break;
                                  case 2:k=260;break;
                                  case 3:k=185;break;
                                  case 4:k=115;break;
                                  case 5:k=84;break;
                                  default:k=0;break;
                              }
                            m*=(k/100.0);
                            cout<<"\n赚了"<<m<<"元\n";
                            cout<<"序列为:";
                            for(i=1;i<=20;i++)
                              cout<<a[i]<<' ';
                            things[7]+=m;
                            gs();
                            break;
                        }
                    case '4':return;
          }
          gs();
       } 
}
void Mid_School()
{
    const string where[]={"家(存档的地方)","学校(学习的地方)","小超市(购物的地方)","公园(运动)","游乐场(玩耍,赚点零花钱)","保存并退出","关于游戏","自杀","人力市场","赌场"};
    int i,j,k,n,m,l;
    while(1)
      {
          cls();
          if (things[0]>=4)
            return;
          if (things[10]>=18)
            things[0]++;
          cout<<" Day "<<things[16]+((things[10]-6)*30)<<'\n';
        cout<<"你想去哪里,按下序号\n";
        for(i=0;i<10;i++)
          printf("%d.%s\n",i,where[i].c_str());
        char s=_getch();
        switch(s)
          {
              case '0':home();break;
              case '1':school();break;
              case '2':shop();break;
              case '3':park();break;
              case '4':carnie();break;
              case '5':Write_File();exit(0);
              case '6':about();break;
              case '7':Sout("Ftr:????");Die();break;
              case '8':market();break;
              case '9':Duchang();break;
          }
      }
}
int Exa()
{
    use(50);
    string q[100],a[100],b;
    int i,j,k;
    int n,m;
    n=50;
    q[1]="赌场老板叫什么名字?";
    a[1]="WYQ";
    q[2]="作者的生日你打算送什么?(Tips:水题)";
    a[2]="GIFT";
    q[3]="作者生活在哪个城市?(格式:例如广东广州为GDGZ)";
    a[3]="GDDG";
    q[4]="中序遍历的顺序?(父节点F,左节点L,右节点R)";
    a[4]="LFR";
    q[5]="1.01的12次方?(精确结果)";
    a[5]="1.126825030131969720661201";
    q[6]="360分解质因数的结果是:(Tips:格式,假如数据是35,那么输入结果为5*7";
    a[6]="2*2*2*3*3*5";
    q[7]="雪米拉的儿子叫什么?";
    a[7]="DM";
    q[8]="布鲁特斯是谁的老师?";
    a[8]="KASS";
    q[9]="克艾索斯和百夫长的决斗中谁赢了?";
    a[9]="KASS";
    q[10]="沙暴天气是谁释放的?(称号)";
    a[10]="QZ";
    q[11]="冰雪世界是谁的必杀技?";
    a[11]="KZD";
    q[12]="MC创作于哪一年?";
    a[12]="2009";
    q[13]="作者的出生日期?";
    a[13]="20090206";
    q[14]="MC的吉祥物是JS,KL和_____";
    a[14]="PXZ";
    q[15]="凋零的血量是:";
    a[15]="600";
    q[16]="MC最强的附魔属性是:";
    a[16]="JYXB";
    q[17]="用锋利V的木剑打人造成的伤害是多少?";
    a[17]="12";
    q[18]="娑丽丝的外号?";
    a[18]="HL";
    q[19]="扎普拉尔的克星?";
    
    a[19]="LKLDY";
    q[20]="三体星系就是______";
    a[20]="BRMZ";
    int num=19;
    int wincount=0;
    bool quested[100];
    memset(quested,0,sizeof(quested));
    string yourans;
    int count=0;
    while(count<=19)
    {
        system("cls");
        int number=rand()%num+1;
        while(quested[number])number=rand()%num+1;
        for(i=0;i<19;i++)
          if (quested[i]==0)
            break;
        if (i>=19)
          break;
        cout<<"第";cout<<count;cout<<"轮"<<endl; 
        w_out(""),w_out(q[number]);
        cout<<endl<<"请回答:";
        string yourans;
        cin>>yourans;
        if(yourans==a[number])
        {
            w_out("恭喜你,你答对了!"); 
            wincount++;
            w_out("你已经累计答对"),cout<<wincount<<"次!";
            cout<<endl; 
            _getch();
        }
        else
        {
            w_out("很抱歉,你答错了");
            w_out("正确答案是:"),cout<<a[number]<<endl;
            _getch(); 
        }
        quested[number]=1;
        count++;
        if (count>=19)
          break;
    }
    happened+=(name+"参加了高考/");
    Sout("你已经答完了题库中现有的所有题!你的正确率是");
    printf("%llf",(wincount*1.0)/(num*1.0)*100);
    cout<<"%"<<endl;
    Sout("\n你的得分是:");
    cout<<wincount*38;
    _getch();
    return wincount*38;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值