问题标题: 酷町堂:哪位大佬有游戏代码?

0
0

0
已采纳
丁浩然
丁浩然
新手光能
新手光能

tcs


#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <cstring>
#include <cstdio>
#include <iostream>
#define  N 22
using namespace std;

int gameover;

int x1, y1; // 随机出米

int x,y;

long start;

//=======================================
//类的实现与应用initialize  a
//=======================================

//下面定义贪吃蛇的坐标类
class snake_position
{
  public:

    int x,y;      //x表示行,y表示列

    snake_position() {};

    void initialize(int &);//坐标初始化


};

snake_position position[(N-2)*(N-2)+1]; //定义贪吃蛇坐标类数组,有(N-2)*(N-2)个坐标

void snake_position::initialize(int &j)
{
  x = 1;

  y = j;
}


//下面定义贪吃蛇的棋盘图

class snake_map
{

  private:

    char s[N][N];//定义贪吃蛇棋盘,包括墙壁。

    int grade, length;

    int gamespeed; //前进时间间隔

    char direction; // 初始情况下,向右运动

    int head,tail;

    int score;

    bool gameauto;

  public:

    snake_map(int h=4,int t=1,int l=4,char d=77,int s=0):length(l),direction(d),head(h),tail(t),score(s) {}

    void initialize();   //初始化函数

    void show_game();

    int updata_game();

    void setpoint();

    void getgrade();

    void display();


};

//定义初始化函数,将贪吃蛇的棋盘图进行初始化

void snake_map::initialize()
{
  int i,j;

  for(i=1; i<=3; i++)

    s[1][i] = '*';

  s[1][4] = '#';

  for(i=1; i<=N-2; i++)

    for(j=1; j<=N-2; j++)

      s[i][j]=' '; // 初始化贪吃蛇棋盘中间空白部分

  for(i=0; i<=N-1; i++)

    s[0][i] = s[N-1][i] = '-'; //初始化贪吃蛇棋盘上下墙壁

  for(i=1; i<=N-2; i++)

    s[i][0] = s[i][N-1] = '|'; //初始化贪吃蛇棋盘左右墙壁
}


//============================================
//输出贪吃蛇棋盘信息

void snake_map::show_game()

{

  system("cls"); // 清屏

  int i,j;

  cout << endl;

  for(i=0; i<N; i++)
  {

    cout << '\t';

    for(j=0; j<N; j++)

      cout<<s[i][j]<<' '; // 输出贪吃蛇棋盘

    if(i==2) cout << "\t等级:" << grade;

    if(i==6) cout << "\t速度:" << gamespeed;

    if(i==10) cout << "\t得分:" << score << "分" ;

    if(i==14) cout << "\t暂停:按一下空格键" ;

    if(i==18) cout << "\t继续:按两下空格键" ;

    cout<<endl;
  }
}

//输入选择等级
void snake_map::getgrade()
{
  cin>>grade;

  while( grade>7 || grade<1 )
  {
    cout << "请输入数字1-7选择等级,输入其他数字无效" << endl;

    cin >> grade;
  }
  switch(grade)
  {
    case 1:
      gamespeed = 1000;
      gameauto = 0;
      break;

    case 2:
      gamespeed = 800;
      gameauto = 0;
      break;

    case 3:
      gamespeed = 600;
      gameauto = 0;
      break;

    case 4:
      gamespeed = 400;
      gameauto = 0;
      break;

    case 5:
      gamespeed = 200;
      gameauto = 0;
      break;

    case 6:
      gamespeed = 100;
      gameauto = 0;
      break;

    case 7:
      grade = 1;
      gamespeed = 1000;
      gameauto = 1;
      break;

  }

}

//输出等级,得分情况以及称号

void snake_map::display()
{

  cout << "\n\t\t\t\t等级:" << grade;

  cout << "\n\n\n\t\t\t\t速度:" << gamespeed;

  cout << "\n\n\n\t\t\t\t得分:" << score << "分" ;

}

//随机产生米
void snake_map::setpoint()
{
  srand(time(0));

  do
  {

    x1 = rand() % (N-2) + 1;

    y1 = rand() % (N-2) + 1;

  }
  while(s[x1][y1]!=' ');

  s[x1][y1]='*';
}

char key;

int snake_map::updata_game()
{
  gameover = 1;

  key = direction;

  start = clock();

  while((gameover=(clock()-start<=gamespeed))&&!kbhit());

  //如果有键按下或时间超过自动前进时间间隔则终止循环



  if(gameover)
  {

    getch();

    key = getch();
  }

  if(key == ' ')

  {
    while(getch()!=' ') {}; //这里实现的是按空格键暂停,按空格键继续的功能,但不知为何原因,需要按两下空格才能继续。这是个bug。
  }

  else

    direction = key;

  switch(direction)
  {
    case 72:
      x= position[head].x-1;
      y= position[head].y;
      break; // 向上

    case 80:
      x= position[head].x+1;
      y= position[head].y;
      break; // 向下

    case 75:
      x= position[head].x;
      y= position[head].y-1;
      break; // 向左

    case 77:
      x= position[head].x;
      y= position[head].y+1; // 向右

  }

  if(!(direction==72||direction==80||direction==75 ||direction==77))   // 按键非方向键

    gameover = 0;

  else if(x==0 || x==N-1 ||y==0 || y==N-1)   // 碰到墙壁

    gameover = 0;

  else if(s[x][y]!=' '&&!(x==x1&&y==y1))    // 蛇头碰到蛇身

    gameover = 0;

  else if(x==x1 && y==y1)

  {
    // 吃米,长度加1

    length ++;

    if(length>=8 && gameauto)

    {

      length -= 8;

      grade ++;

      if(gamespeed>=200)

        gamespeed -= 200; // 改变贪吃蛇前进速度

      else

        gamespeed = 100;

    }

    s[x][y]= '#';  //更新蛇头

    s[position[head].x][position[head].y] = '*'; //吃米后将原先蛇头变为蛇身

    head = (head+1) % ( (N-2)*(N-2) );   //取蛇头坐标

    position[head].x = x;

    position[head].y = y;

    show_game();

    gameover = 1;

    score += grade*20;  //加分

    setpoint();   //产生米

  }

  else
  {
    // 不吃米

    s[position[tail].x][position[tail].y]=' ';//将蛇尾置空

    tail= (tail+1) % ( (N-2) * (N-2) );//更新蛇尾坐标

    s[position[head].x][position[head].y]='*';  //将蛇头更为蛇身

    head= (head+1) % ( (N-2) * (N-2) );

    position[head].x = x;

    position[head].y = y;

    s[position[head].x][position[head].y]='#'; //更新蛇头

    gameover = 1;

  }
  return gameover;

}
//====================================
//主函数部分
//====================================
int main()
{
  char ctn = 'y';

  int nodead;

  cout<<"\n\n\n\n\n\t\t\t 欢迎进入贪吃蛇游戏!"<<endl;//欢迎界面;

  cout<<"\n\n\n\t\t\t 按任意键马上开始。。。"<<endl;//准备开始;;

  getch();

  while( ctn=='y' )
  {
    system("cls"); // 清屏

    snake_map snake;

    snake.initialize();

    cout << "\n\n请输入数字选择游戏等级:" << endl;

    cout << "\n\n\n\t\t\t1.等级一:速度 1000 \n\n\t\t\t2.等级二:速度 800 \n\n\t\t\t3.等级三:速度 600 ";

    cout << "\n\n\t\t\t4.等级四:速度 400 \n\n\t\t\t5.等级五:速度 200 \n\n\t\t\t6.等级六:速度 100 \n\n\t\t\t7.自动升级模式" << endl;

    snake.getgrade();//获取等级

    for(int i=1; i<=4; i++)
    {
      position[i].initialize(i);//初始化坐标
    }

    snake.setpoint();  // 产生第一个米

    do
    {
      snake.show_game();

      nodead = snake.updata_game();

    }
    while(nodead);

    system("cls"); //清屏



    cout << "\n\n\n\t\t\t\tGameover!\n\n"<<endl;

    snake.display();//输出等级/得分情况

    cout << "\n\n\n\t\t    是否选择继续游戏?输入 y 继续,n 退出" << endl;

    cin >> ctn;

  }

  return 0;
}

 

0
徐硕
徐硕
高级守护
高级守护
//打飞机

#include<iostream>
#include<windows.h>
#include<conio.h>kak
#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
徐硕
徐硕
高级守护
高级守护
//大富翁

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

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

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

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

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

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

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


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

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

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

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

    system("pause");

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

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

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

    return 0;
}


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

    return 0;
}

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

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

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

        return dangqian;
    }


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

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

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

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

    /*人品驿站!!*/

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

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

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

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

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

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

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

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

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

    /*开始掷骰子*/

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

    /*开始猜数*/

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

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

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

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

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

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


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

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

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

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

 

0
0
丁浩然
丁浩然
新手光能
新手光能

扫雷

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>
#include <conio.h>
#define KEY_UP    0xE048
#define KEY_DOWN  0xE050
#define KEY_LEFT  0xE04B
#define KEY_RIGHT 0xE04D
#define KEY_ESC   0x001B
#define KEY_1     '1'
#define KEY_2     '2'
#define KEY_3     '3'
#define GAME_MAX_WIDTH   100
#define GAME_MAX_HEIGHT  100
#define STR_GAMETITLE "ArrowKey:MoveCursor  1:打开  \
2:插旗子  3:OpenNeighbors"
#define STR_GAMEWIN   "Congratulations! You Win! Thank you for playing!\n"
#define STR_GAMEOVER  "Game Over, thank you for playing!\n"
#define STR_GAMEEND   "Presented by yzfy . Press ESC to exit\n"
class CConsoleWnd
{
  public:
    static int TextOut(const char*);
    static int GotoXY(int, int);
    static int CharOut(int, int, const int);
    static int TextOut(int, int, const char*);
    static int GetKey();
  public:
};

int CConsoleWnd::GetKey()
{
  int nkey=getch(),nk=0;
  if(nkey>=128||nkey==0)nk=getch();
  return nk>0?nkey*256+nk:nkey;
}
int CConsoleWnd::GotoXY(int x, int y)
{
  COORD cd;
  cd.X = x;
  cd.Y = y;
  return SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cd);
}
int CConsoleWnd::TextOut(const char* pstr)
{
  for(; *pstr; ++pstr)putchar(*pstr);
  return 0;
}
int CConsoleWnd::CharOut(int x, int y, const int pstr)
{
  GotoXY(x, y);
  return putchar(pstr);
}
int CConsoleWnd::TextOut(int x, int y, const char* pstr)
{
  GotoXY(x, y);
  return TextOut(pstr);
}
class CSLGame:public CConsoleWnd
{
  private:
  private:
    int curX,curY;
    int poolWidth,poolHeight;
    int bm_gamepool[GAME_MAX_HEIGHT+2][GAME_MAX_WIDTH+2];
  public:
    CSLGame():curX(0),curY(0)
    {
      poolWidth=poolHeight=0;
    }
    int InitPool(int, int, int);
    int MoveCursor()
    {
      return CConsoleWnd::GotoXY(curX, curY);
    }
    int DrawPool(int);
    int WaitMessage();
    int GetShowNum(int, int);
    int TryOpen(int, int);
  private:
    int DFSShowNum(int, int);
  private:
    const static int GMARK_BOOM;
    const static int GMARK_EMPTY;
    const static int GMARK_MARK;
};
const int CSLGame::GMARK_BOOM =  0x10;
const int CSLGame::GMARK_EMPTY=  0x100;
const int CSLGame::GMARK_MARK =  0x200;



int CSLGame::InitPool(int Width, int Height, int nBoom)
{
  poolWidth = Width;
  poolHeight = Height;
  if(nBoom<=0 || nBoom>=Width*Height
      || Width <=0 || Width >GAME_MAX_WIDTH
      || Height<=0 || Height>GAME_MAX_HEIGHT
    )
  {
    return 1;
  }
  for(int y=0; y<=Height+1; ++y)
  {
    for(int x=0; x<=Width+1; ++x)
    {
      bm_gamepool[y][x]=0;
    }
  }
  srand(time(NULL));
  while(nBoom)
  {
    int x = rand()%Width + 1, y = rand()%Height + 1;
    if(bm_gamepool[y][x]==0)
    {
      bm_gamepool[y][x] = GMARK_BOOM;
      --nBoom;
    }
  }
  curX = curY = 1;
  MoveCursor();
  return 0;
}



int CSLGame::DrawPool(int bDrawBoom = 0)
{
  for(int y=1; y<=poolHeight; ++y)
  {
    CConsoleWnd::GotoXY(1, y);
    for(int x=1; x<=poolWidth; ++x)
    {
      if(bm_gamepool[y][x]==0)
      {
        putchar('.');
      }
      else if(bm_gamepool[y][x]==GMARK_EMPTY)
      {
        putchar(' ');
      }
      else if(bm_gamepool[y][x]>0 && bm_gamepool[y][x]<=8)
      {
        putchar('0'+bm_gamepool[y][x]);
      }
      else if(bDrawBoom==0 && (bm_gamepool[y][x] & GMARK_MARK))
      {
        putchar('#');
      }
      else if(bm_gamepool[y][x] & GMARK_BOOM)
      {
        if(bDrawBoom)
          putchar('*');
        else
          putchar('.');
      }
    }
  }
  return 0;
}
int CSLGame::GetShowNum(int x, int y)
{
  int nCount = 0;
  for(int Y=-1; Y<=1; ++Y)
    for(int X=-1; X<=1; ++X)
    {
      if(bm_gamepool[y+Y][x+X] & GMARK_BOOM)++nCount;
    }
  return nCount;
}
int CSLGame::TryOpen(int x, int y)
{
  int nRT = 0;
  if(bm_gamepool[y][x] & GMARK_BOOM)
  {
    nRT = EOF;
  }
  else
  {
    int nCount = GetShowNum(x,y);
    if(nCount==0)
    {
      DFSShowNum(x, y);
    }
    else bm_gamepool[y][x] = nCount;
  }
  return nRT;
}
int CSLGame::DFSShowNum(int x, int y)
{
  if((0<x && x<=poolWidth) &&
      (0<y && y<=poolHeight) &&
      (bm_gamepool[y][x]==0))
  {
    int nCount = GetShowNum(x, y);
    if(nCount==0)
    {
      bm_gamepool[y][x] = GMARK_EMPTY;
      for(int Y=-1; Y<=1; ++Y)
        for(int X=-1; X<=1; ++X)
        {
          DFSShowNum(x+X,y+Y);
        }
    }
    else bm_gamepool[y][x] = nCount;
  }
  return 0;
}
int CSLGame::WaitMessage()
{
  int nKey = CConsoleWnd::GetKey();
  int nRT = 0, nArrow = 0;
  switch (nKey)
  {
    case KEY_UP:
    {
      if(curY>1)--curY;
      nArrow=1;
    }
    break;
    case KEY_DOWN:
    {
      if(curY<poolHeight)++curY;
      nArrow=1;
    }
    break;
    case KEY_LEFT:
    {
      if(curX>1)--curX;
      nArrow=1;
    }
    break;
    case KEY_RIGHT:
    {
      if(curX<poolWidth)++curX;
      nArrow=1;
    }
    break;
    case KEY_1:
    {
      nRT = TryOpen(curX, curY);
    }
    break;
    case KEY_2:
    {
      if((bm_gamepool[curY][curX]
          & ~(GMARK_MARK|GMARK_BOOM))==0)
      {
        bm_gamepool[curY][curX] ^= GMARK_MARK;
      }
    }
    break;
    case KEY_3:
    {
      if(bm_gamepool[curY][curX] & 0xF)
      {
        int nb = bm_gamepool[curY][curX] & 0xF;
        for(int y=-1; y<=1; ++y)
          for(int x=-1; x<=1; ++x)
          {
            if(bm_gamepool[curY+y][curX+x] & GMARK_MARK)
              --nb;
          }
        if(nb==0)
        {
          for(int y=-1; y<=1; ++y)
            for(int x=-1; x<=1; ++x)
            {
              if((bm_gamepool[curY+y][curX+x]
                  & (0xF|GMARK_MARK)) == 0)
              {
                nRT |= TryOpen(curX+x, curY+y);
              }
            }
        }
      }
    }
    break;
    case KEY_ESC:
    {
      nRT = EOF;
    }
    break;
  }
  if(nKey == KEY_1 || nKey == KEY_3)
  {
    int y=1;
    for(; y<=poolHeight; ++y)
    {
      int x=1;
      for(; x<=poolWidth; ++x)
      {
        if(bm_gamepool[y][x]==0)break;
      }
      if(x<=poolWidth) break;
    }
    if(! (y<=poolHeight))
    {
      nRT = 1;
    }
  }
  if(nArrow==0)
  {
    DrawPool();
  }
  MoveCursor();
  return nRT;
}
int main(void)
{
  int x=50, y=20, b=100,n;
  CSLGame slGame;
  {
    CConsoleWnd::GotoXY(0,0);
    CConsoleWnd::TextOut(STR_GAMETITLE);
    slGame.InitPool(x,y,b);
    slGame.DrawPool();
    slGame.MoveCursor();
  }
  while((n=slGame.WaitMessage())==0)
    ;
  {
    slGame.DrawPool(1);
    CConsoleWnd::TextOut("\n");
    if(n==1)
    {
      CConsoleWnd::TextOut(STR_GAMEWIN);
    }
    else
    {
      CConsoleWnd::TextOut(STR_GAMEOVER);
    }
    CConsoleWnd::TextOut(STR_GAMEEND);
  }
  while(CConsoleWnd::GetKey()!=KEY_ESC)
    ;
  return 0;
}

 

0
丁浩然
丁浩然
新手光能
新手光能

大富翁

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
struct player
{
  char allname[20];
  int money,dangqian;
  int fangchan[5][19];
  char name;
  int hours;
  int days;
  int turns;
} p1,p2;
int main(void)
{
  FILE *fp;
  int shijian(int a);
  int qipan(char weizhi[28]);
  int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name);
  int houtui(int houtuibs,int dangqian,char weizhi[28],char name);
  int renpin(int money);
  int duchang(int money);
  int meiqian(int money);
  int houtuibs;
  int choice;
  int qianjinbs;
  int m,n,p,q;
  int a,b,c;
  char weizhi[28]="                          ";
  int fang(int turns);
  srand( (unsigned)time( NULL ) );
  p1.turns=1;
  p1.hours=0;
  p1.days=0;
  p1.dangqian=0;
  p2.dangqian=0;
  b=0;
  p1.money=5000;
  p2.money=5000;
  printf("欢迎来到大富翁的世界!!大富翁的世界有你更精彩!!!\n");
  printf("1.新的旅程\n2.旧的回忆\n");
  scanf("%d",&a);
  if (a==2)
  {
    printf("请输入存档时1p的名字:\n");
    getchar();
    gets(p1.allname);
    printf("%s", p1.allname);
    fp=fopen(p1.allname,"rb");
    fread(&p1,sizeof(struct player),1,fp);
    fread(&p2,sizeof(struct player),1,fp);
    fclose(fp);
    goto turn;
  }
  printf("输入1p的名字(注意首字母最好为英文):\n");
  scanf("%d",&a);
  gets(p1.allname);
  p1.name=1;
  printf("输入2P的名字(注意首字母最好为英文): \n");
  scanf("%d",&a);
  gets(p2.allname);
  p2.name=2;
turn:
  if (p1.turns)
  {
    system("cls");
    weizhi[p1.dangqian]=1;
    weizhi[p2.dangqian]=2;
    qipan(weizhi);
    printf("第%d天\n",p1.days);
    if (p1.money<500)
    {
      printf("身份:贫民:   ");
    }
    else if (p1.money<10000)
    {
      printf("身份:平民:   ");
    }
    else if (p1.money<20000)
    {
      printf("身份:小资:   ");
    }
    else if (p1.money<50000)
    {
      printf("身份:富人:   ");
    }
    else if (p1.money<500000)
    {
      printf("身份:土豪:   ");
    }
    else
    {
      printf("身份:首富:   ");
    }
    puts(p1.allname);
    printf("金钱:%d\n",p1.money);
    weizhi[p1.dangqian]=' ';
    printf("请选择操作:0.存档         1.查看个人房产       2.前进\n");
    scanf("%d",&choice);
    if (choice==0)
    {
      fp=fopen(p1.allname,"wb");
      fwrite(&p1,sizeof(struct player),1,fp);
      fwrite(&p2,sizeof(struct player),1,fp);
      fclose(fp);
      goto turn;
    }
    else if (choice==1)
    {
      for (a=0; a<=19; a++)
      {
        if (p1.fangchan[0][a]==1)
        {
          switch (a)
          {
            case 0:
              printf("火星大道1号\n");
              b=1;
              break;
            case 1:
              printf("火星大道2号\n");
              b=1;
              break;
            case 2:
              printf("解放路1号\n");
              b=1;
              break;
            case 3:
              printf("解放路2号\n");
              b=1;
              break;
            case 4:
              printf("解放路3号\n");
              b=1;
              break;
            case 5:
              printf("解放路4号\n");
              b=1;
              break;
            case 6:
              printf("解放路5号\n");
              b=1;
              break;
            case 7:
              printf("花炮大道1号\n");
              b=1;
              break;
            case 8:
              printf("花炮大道2号\n");
              b=1;
              break;
            case 9:
              printf("花炮大道3号\n");
              b=1;
              break;
            case 10:
              printf("花炮大道4号\n");
              b=1;
              break;
            case 11:
              printf("花炮大道5号\n");
              b=1;
              break;
            case 12:
              printf("花炮大道6号\n");
              b=1;
              break;
            case 13:
              printf("花炮大道7号\n");
              b=1;
              break;
            case 14:
              printf("花炮大道8号\n");
              b=1;
              break;
            case 15:
              printf("花炮大道9号\n");
              b=1;
              break;
            case 16:
              printf("桂花路1号\n");
              b=1;
              break;
            case 17:
              printf("桂花路2号\n");
              b=1;
              break;
            case 18:
              printf("桂花路3号\n");
              b=1;
              break;
            default:
              break;
          }
          if (b==1)
          {
            if (p1.fangchan[1][a]==1)
            {
              printf("建设旅馆一座:\n");
              printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
              printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
              printf("\n");
            }
            else if(p1.fangchan[1][a]==2)
            {
              printf("建设商店一座:\n");
              switch (p1.fangchan[2][a])
              {
                case 1:
                  printf("等级:小卖部\n");
                  break;
                case 2:
                  printf("等级:商店\n");
                  break;
                case 3:
                  printf("等级:超市\n");
                  break;
                case 4:
                  printf("等级:全国连锁超市\n");
                  break;
                case 5:
                  printf("等级:世界连锁贸易市场\n");
                  break;
                default:
                  break;
              }
              printf("每回合收入为:%d",p1.fangchan[4][a]);
              printf("\n");
            }
            else
            {
              printf("仅有地皮一份。\n");
            }
          }
        }
      }
      system("pause");
      goto turn;
    }
    else if (choice==9)
    {
      qianjinbs=1;
      goto miji;
    }
    else
    {
      shijian(12);
      if (p1.days>=100)
      {
        goto end;
      }
      qianjinbs=rand()%6;
      qianjinbs=qianjinbs+1;
miji:
      printf("你投出了%d点!",qianjinbs);
      p1.dangqian=qianjin(qianjinbs,p1.dangqian,weizhi,p1.name);
jintui:
      switch (p1.dangqian)
      {
        case 0:
          printf("停在起点奖励1000!\n");
          p1.money+=1000;
          system("pause");
          break;
        case 3:
          printf("前进三格!\n");
          c=3;
          p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);
          goto jintui;
        case 9:
          printf("进入人品驿站~~考验人品的时候到了!\n");
          Sleep(1000);
          p1.money=renpin(p1.money);;
          break;
        case 16:
          printf("后退两格!\n");
          c=2;
          p1.dangqian=houtui(c,p1.dangqian,weizhi,p1.name);
          goto jintui;
        case 20:
        {
          printf("进入赌场!!\n");
          Sleep(500);
          p1.money=duchang(p1.money);
          if (p1.days>=100)
          {
            goto end;
          }
          break;
        }
        case 21:
          printf("前进两格!\n");
          c=2;
          p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);
          goto jintui;
        case 22:
          printf("进入人品驿站~~考验人品的时候到了!\n");
          Sleep(1000);
          p1.money=renpin(p1.money);;
          break;
        default:
          fang(p1.turns);
          break;
      }
      system("cls");
      weizhi[p1.dangqian]=1;
      qipan(weizhi);
      weizhi[p1.dangqian]=' ';
      for (b=1,a=0; a<=18; a++)
      {
        if (p1.fangchan[1][a]==2)
        {
          printf("%d号商店收益:%d  ",a,p1.fangchan[4][a]);
          p1.money=p1.money+p1.fangchan[4][a];
          b++;
          if (b==4)
          {
            printf("\n");
            b=1;
          }
        }
      }
      system("pause");
      p1.turns=0;
      goto turn;
    }
  }
  else
  {
    system("cls");
    weizhi[p1.dangqian]=1;
    weizhi[p2.dangqian]=2;
    qipan(weizhi);
    printf("第%d天\n",p1.days);
    if (p2.money<500)
    {
      printf("身份:贫民:   ");
    }
    else if (p2.money<10000)
    {
      printf("身份:平民:   ");
    }
    else if (p2.money<20000)
    {
      printf("身份:小资:   ");
    }
    else if (p2.money<50000)
    {
      printf("身份:富人:   ");
    }
    else if (p2.money<500000)
    {
      printf("身份:土豪:   ");
    }
    else
    {
      printf("身份:首富:   ");
    }
    puts(p2.allname);
    printf("金钱:%d\n",p2.money);
    weizhi[p2.dangqian]=' ';
    printf("请选择操作:0.存档         1.查看个人房产       2.前进\n");
    scanf("%d",&choice);
    if (choice==0)
    {
      fp=fopen(p1.allname,"wb");
      fwrite(&p1,sizeof(struct player),1,fp);
      fwrite(&p2,sizeof(struct player),1,fp);
      fclose(fp);
      goto turn;
    }
    else if (choice==1)
    {
      /* 输出个人信息,真特么麻烦 */

      for (a=0; a<=19; a++)
      {
        if (p2.fangchan[0][a]==1)
        {
          switch (a)
          {
            case 0:
              printf("火星大道1号\n");
              b=1;
              break;
            case 1:
              printf("火星大道2号\n");
              b=1;
              break;
            case 2:
              printf("解放路1号\n");
              b=1;
              break;
            case 3:
              printf("解放路2号\n");
              b=1;
              break;
            case 4:
              printf("解放路3号\n");
              b=1;
              break;
            case 5:
              printf("解放路4号\n");
              b=1;
              break;
            case 6:
              printf("解放路5号\n");
              b=1;
              break;
            case 7:
              printf("花炮大道1号\n");
              b=1;
              break;
            case 8:
              printf("花炮大道2号\n");
              b=1;
              break;
            case 9:
              printf("花炮大道3号\n");
              b=1;
              break;
            case 10:
              printf("花炮大道4号\n");
              b=1;
              break;
            case 11:
              printf("花炮大道5号\n");
              b=1;
              break;
            case 12:
              printf("花炮大道6号\n");
              b=1;
              break;
            case 13:
              printf("花炮大道7号\n");
              b=1;
              break;
            case 14:
              printf("花炮大道8号\n");
              b=1;
              break;
            case 15:
              printf("花炮大道9号\n");
              b=1;
              break;
            case 16:
              printf("桂花路1号\n");
              b=1;
              break;
            case 17:
              printf("桂花路2号\n");
              b=1;
              break;
            case 18:
              printf("桂花路3号\n");
              b=1;
              break;
            default:
              break;
          }
          if (b==1)
          {
            if (p2.fangchan[1][a]==1)
            {
              printf("建设旅馆一座:\n");
              printf("旅馆等级:%d星级\n",p2.fangchan[2][a]);
              printf("每次停留收取费用:%d\n",p2.fangchan[3][a]);
              printf("\n");
            }
            else if(p2.fangchan[1][a]==2)
            {
              printf("建设商店一座:\n");
              switch (p2.fangchan[2][a])
              {
                case 1:
                  printf("等级:小卖部\n");
                  break;
                case 2:
                  printf("等级:商店\n");
                  break;
                case 3:
                  printf("等级:超市\n");
                  break;
                case 4:
                  printf("等级:全国连锁超市\n");
                  break;
                case 5:
                  printf("等级:世界连锁贸易市场\n");
                  break;
                default:
                  break;
              }
              printf("每回合收入为:%d",p2.fangchan[4][a]);
              printf("\n");
            }
            else
            {
              printf("仅有地皮一份。\n");
            }
          }
        }
      }
      system("pause");
      goto turn;
    }
    else if (choice==9)
    {
      qianjinbs=1;
      goto miji2;
    }
    else
    {
      shijian(12);
      if (p1.days>=100)
      {
        goto end;
      }
      a=rand()%6;
      qianjinbs=a+1;
miji2:
      printf("你投出了%d点!",qianjinbs);
      p2.dangqian=qianjin(qianjinbs,p2.dangqian,weizhi,p2.name);
jintui2:
      switch (p2.dangqian)
      {
        case 0:
          printf("停在起点奖励1000!\n");
          p2.money+=1000;
          system("pause");
          break;
        case 3:
          printf("前进三格!\n");
          c=3;
          p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);
          goto jintui2;
        case 9:
          printf("进入人品驿站~~考验人品的时候到了!\n");
          Sleep(1000);
          p2.money=renpin(p2.money);;
          break;
        case 16:
          printf("后退两格!\n");
          c=2;
          p2.dangqian=houtui(c,p2.dangqian,weizhi,p2.name);
          goto jintui2;
        case 20:
        {
          printf("进入赌场!!\n");
          Sleep(500);
          p2.money=duchang(p2.money);
          if (p1.days>=100)
          {
            goto end;
          }
          break;
        }
        case 21:
          printf("前进两格!\n");
          c=2;
          p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);
          goto jintui2;
        case 22:
          printf("进入人品驿站~~考验人品的时候到了!\n");
          Sleep(1000);
          p2.money=renpin(p2.money);;
          break;
        default:
          fang(p1.turns);
          break;
      }
      system("cls");
      weizhi[p2.dangqian]=2;
      qipan(weizhi);
      weizhi[p2.dangqian]=' ';
      for (b=1,a=0; a<=18; a++)
      {
        if (p2.fangchan[1][a]==2)
        {
          printf("%d号商店收益:%d  ",a,p2.fangchan[4][a]);
          p2.money=p2.money+p2.fangchan[4][a];
          b++;
          if (b==4)
          {
            printf("\n");
            b=1;
          }
        }
      }
      system("pause");
      p1.turns=1;
      goto turn;
    }
  }
end:
  printf("名字:");
  puts(p1.allname);
  if (p1.money<3000)
  {
    printf("身份:贫民\n");
    printf("弱爆了你,才这点钱~!\n");
    m=10;
  }
  else if (p1.money<5000)
  {
    printf("身份:平民\n");
    printf("勉勉强强够糊口吧~~~\n");
    m=20;
  }
  else if (p1.money<10000)
  {
    printf("身份:小资\n");
    printf("还好还好不算丢脸~~~\n");
    m=30;
  }
  else if (p1.money<20000)
  {
    printf("身份:富人\n");
    printf("十分不错,RP棒棒哒~~!!\n");
    m=40;
  }
  else if (p1.money<50000)
  {
    printf("身份:土豪\n");
    printf("土豪我们做朋友吧~");
    m=50;
  }
  else
  {
    printf("身份:首富\n");
    printf("膜拜。。。");
    m=60;
  }
  printf("\n金钱:%d\n",p1.money);
  for (a=0,c=0; a<=19; a++)
  {
    if (p1.fangchan[0][a]==1)
    {
      switch (a)
      {
        case 0:
          printf("火星大道1号\n");
          b=1;
          break;
        case 1:
          printf("火星大道2号\n");
          b=1;
          break;
        case 2:
          printf("解放路1号\n");
          b=1;
          break;
        case 3:
          printf("解放路2号\n");
          b=1;
          break;
        case 4:
          printf("解放路3号\n");
          b=1;
          break;
        case 5:
          printf("解放路4号\n");
          b=1;
          break;
        case 6:
          printf("解放路5号\n");
          b=1;
          break;
        case 7:
          printf("花炮大道1号\n");
          b=1;
          break;
        case 8:
          printf("花炮大道2号\n");
          b=1;
          break;
        case 9:
          printf("花炮大道3号\n");
          b=1;
          break;
        case 10:
          printf("花炮大道4号\n");
          b=1;
          break;
        case 11:
          printf("花炮大道5号\n");
          b=1;
          break;
        case 12:
          printf("花炮大道6号\n");
          b=1;
          break;
        case 13:
          printf("花炮大道7号\n");
          b=1;
          break;
        case 14:
          printf("花炮大道8号\n");
          b=1;
          break;
        case 15:
          printf("花炮大道9号\n");
          b=1;
          break;
        case 16:
          printf("桂花路1号\n");
          b=1;
          break;
        case 17:
          printf("桂花路2号\n");
          b=1;
          break;
        case 18:
          printf("桂花路3号\n");
          b=1;
          break;
        default:
          break;
      }
      if (b==1)
      {
        if (p1.fangchan[1][a]==1)
        {
          printf("建设旅馆一座:\n");
          printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
          printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
          printf("\n");
        }
        else if(p1.fangchan[1][a]==2)
        {
          printf("建设商店一座:\n");
          switch (p1.fangchan[2][a])
          {
            case 1:
              printf("等级:小卖部\n");
              break;
            case 2:
              printf("等级:商店\n");
              break;
            case 3:
              printf("等级:超市\n");
              break;
            case 4:
              printf("等级:全国连锁超市\n");
              break;
            case 5:
              printf("等级:世界连锁贸易市场\n");
              break;
            default:
              break;
          }
          printf("每回合收入为:%d",p1.fangchan[4][a]);
          printf("\n");
        }
        else
        {
          printf("仅有地皮一份。\n");
        }
        c++;
      }
    }
  }
  if (c==0)
  {
    printf("没地?别说我认识你啊。。。\n");
    n=10;
  }
  else if (c<5)
  {
    printf("啧啧。。怎么混的你竟然才这么点地?\n");
    n=20;
  }
  else if (c<10)
  {
    printf("算是勉强勉强够混口饭吃了吧。。。\n");
    n=30;
  }
  else if (c<18)
  {
    printf("没错你就是传说中无恶不作的房地产大商!!!\n");
    n=40;
  }
  else
  {
    printf("买下所有地皮,达成最高成就:城主!!\n");
    n=60;
  }
  p=m+n;
  printf("最终积分为:%d",p);
  system("pause");
  system("cls");
  printf("名字:");
  puts(p2.allname);
  if (p2.money<3000)
  {
    printf("身份:贫民\n");
    printf("弱爆了你,才这点钱~!\n");
    m=10;
  }
  else if (p2.money<5000)
  {
    printf("身份:平民\n");
    printf("勉勉强强够糊口吧~~~\n");
    m=20;
  }
  else if (p2.money<10000)
  {
    printf("身份:小资\n");
    printf("还好还好不算丢脸~~~\n");
    m=30;
  }
  else if (p2.money<20000)
  {
    printf("身份:富人\n");
    printf("十分不错,RP棒棒哒~~!!\n");
    m=40;
  }
  else if (p2.money<50000)
  {
    printf("身份:土豪\n");
    printf("土豪我们做朋友吧~");
    m=50;
  }
  else
  {
    printf("身份:首富\n");
    printf("膜拜。。。");
    m=60;
  }
  printf("\n金钱:%d\n",p2.money);
  for (a=0,c=0; a<=19; a++)
  {
    if (p2.fangchan[0][a]==1)
    {
      switch (a)
      {
        case 0:
          printf("火星大道1号\n");
          b=1;
          break;
        case 1:
          printf("火星大道2号\n");
          b=1;
          break;
        case 2:
          printf("解放路1号\n");
          b=1;
          break;
        case 3:
          printf("解放路2号\n");
          b=1;
          break;
        case 4:
          printf("解放路3号\n");
          b=1;
          break;
        case 5:
          printf("解放路4号\n");
          b=1;
          break;
        case 6:
          printf("解放路5号\n");
          b=1;
          break;
        case 7:
          printf("花炮大道1号\n");
          b=1;
          break;
        case 8:
          printf("花炮大道2号\n");
          b=1;
          break;
        case 9:
          printf("花炮大道3号\n");
          b=1;
          break;
        case 10:
          printf("花炮大道4号\n");
          b=1;
          break;
        case 11:
          printf("花炮大道5号\n");
          b=1;
          break;
        case 12:
          printf("花炮大道6号\n");
          b=1;
          break;
        case 13:
          printf("花炮大道7号\n");
          b=1;
          break;
        case 14:
          printf("花炮大道8号\n");
          b=1;
          break;
        case 15:
          printf("花炮大道9号\n");
          b=1;
          break;
        case 16:
          printf("桂花路1号\n");
          b=1;
          break;
        case 17:
          printf("桂花路2号\n");
          b=1;
          break;
        case 18:
          printf("桂花路3号\n");
          b=1;
          break;
        default:
          break;
      }
      if (b==1)
      {
        if (p2.fangchan[1][a]==1)
        {
          printf("建设旅馆一座:\n");
          printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
          printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
          printf("\n");
        }
        else if(p2.fangchan[1][a]==2)
        {
          printf("建设商店一座:\n");
          switch (p2.fangchan[2][a])
          {
            case 1:
              printf("等级:小卖部\n");
              break;
            case 2:
              printf("等级:商店\n");
              break;
            case 3:
              printf("等级:超市\n");
              break;
            case 4:
              printf("等级:全国连锁超市\n");
              break;
            case 5:
              printf("等级:世界连锁贸易市场\n");
              break;
            default:
              break;
          }
          printf("每回合收入为:%d",p2.fangchan[4][a]);
          printf("\n");
        }
        else
        {
          printf("仅有地皮一份。\n");
        }
        c++;
      }
    }
  }
  if (c==0)
  {
    printf("没地?别说我认识你啊。。。\n");
    n=10;
  }
  else if (c<5)
  {
    printf("啧啧。。怎么混的你竟然才这么点地?\n");
    n=20;
  }
  else if (c<10)
  {
    printf("算是勉强勉强够混口饭吃了吧。。。\n");
    n=30;
  }
  else if (c<18)
  {
    printf("没错你就是传说中无恶不作的房地产大商!!!\n");
    n=40;
  }
  else
  {
    printf("买下所有地皮,达成最高成就:城主!!\n");
    n=60;
  }
  q=m+n;
  printf("您的最终积分为:%d",q);
  if (p>q)
  {
    printf("1P更胜一筹哦!\n");
  }
  else if (q>p)
  {
    printf("2P更强一些诶!\n");
  }
  else
  {
    printf("十分和谐有爱的平手!\n");
  }
  system("pause");
  printf("想看彩蛋吗?输入1则继续!输入其他数字退出~\n");
  scanf("%d",&a);
  if (a)
  {
caidan:
    system("cls");
    for (a=1; a<=100; a++)
    {
      printf("壮哉我大622~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    }
    printf("没错这就是彩蛋!\n");
    printf("好啦游戏结束~~");
  }
  else
  {
    printf("不看也得看!!\n");
    system("pause");
    goto caidan;
  }
  system("pause");
  return 0;
}

/*时间*/
int shijian(int a)
{
  p1.hours+=a;
  if (p1.hours>=12)
  {
    p1.hours-=12;
    p1.days++;
  }
  return 0;
}
/*定义界面函数*/
int qipan(char weizhi[28])
{
  system("cls");
  printf("_____________________________________________________________\n");
  printf("|%c   1|%c   2|%c   3|%c   4|%c   5|%c   6|%c   7|%c   8|%c   9|%c  10|\n",weizhi[0],weizhi[1],weizhi[2],weizhi[3],weizhi[4],weizhi[5],weizhi[6],weizhi[7],weizhi[8],weizhi[9]);
  printf("|开始 |火 星|大 道|前进 |     | 解  |  放 |  路 |     |人品 |\n");
  printf("|     |1 号 |2 号 |3 格 |1 号 |2 号 |3 号 |4 号 |5 号 |驿站 |\n");
  printf("-------------------------------------------------------------\n");
  printf("|%c  26|                                               |%c  11|\n",weizhi[25],weizhi[10]);
  printf("|桂   |                                               |     |\n");
  printf("|3 号 |                                               |1 号 |\n");
  printf("|-----|                                               |-----|\n");
  printf("|%c  25|                                               |%c  12|\n",weizhi[24],weizhi[11]);
  printf("|花   |           大      富      翁                  |花   |\n");
  printf("|2 号 |                                               |2 号 |\n");
  printf("|-----|                                               |-----|\n");
  printf("|%c  24|                                               |%c  13|\n",weizhi[23],weizhi[12]);
  printf("|路   |                                               |炮   |\n");
  printf("|1 号 |                                               |3 号 |\n");
  printf("-------------------------------------------------------------\n");
  printf("|%c  23|%c  22|%c  21|%c  20|%c  19|%c  18|%c  17|%c  16|%c  15|%c  14|\n",weizhi[22],weizhi[21],weizhi[20],weizhi[19],weizhi[18],weizhi[17],weizhi[16],weizhi[15],weizhi[14],weizhi[13]);
  printf("|人品 |前进 |赌场 |     |     |     |后退 |     |道   |大   |\n");
  printf("|驿站 |2 格 |     |9 号 |8 号 |7 号 |2 格 |6 号 |5 号 |4 号 |\n");
  printf("-------------------------------------------------------------\n");
  return 0;
}
/*定义前进函数*/
int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name)
{
  int a,b;
  for(b=0; b<qianjinbs; b++)
  {
    dangqian++;
    if (dangqian>=26)
    {
      dangqian=0;
    }
    weizhi[dangqian]=name;
    Sleep(1000);
    qipan(weizhi);
    weizhi[dangqian]=' ';
  }
  return dangqian;
}
/*定义后退函数*/
int houtui(int houtuibs,int dangqian,char weizhi[28],char name)
{
  int a,b;
  for(b=0,a=0; b<houtuibs; b++)
  {
    if (dangqian<=0)
    {
      dangqian=0;
    }
    else
    {
      dangqian=dangqian-1;
    }
    weizhi[dangqian]=name;
    Sleep(1000);
    qipan(weizhi);
    weizhi[dangqian]=' ';
  }
  return dangqian;
}

/*一大作死项目:房地产!*/
int fang(int turns)
{
  int fanghao;
  int a,b,c;
  if (p1.turns)
  {
    switch (p1.dangqian)
    {
      case 1:
        fanghao=0;
        break;
      case 2:
        fanghao=1;
        break;
      case 4:
        fanghao=2;
        break;
      case 5:
        fanghao=3;
        break;
      case 6:
        fanghao=4;
        break;
      case 7:
        fanghao=5;
        break;
      case 8:
        fanghao=6;
        break;
      case 10:
        fanghao=7;
        break;
      case 11:
        fanghao=8;
        break;
      case 12:
        fanghao=9;
        break;
      case 13:
        fanghao=10;
        break;
      case 14:
        fanghao=11;
        break;
      case 15:
        fanghao=12;
        break;
      case 17:
        fanghao=13;
        break;
      case 18:
        fanghao=14;
        break;
      case 19:
        fanghao=15;
        break;
      case 23:
        fanghao=16;
        break;
      case 24:
        fanghao=17;
        break;
      case 25:
        fanghao=18;
        break;
      default:
        break;
    }
    if (p2.fangchan[0][fanghao]==0)
    {
      if (p1.fangchan[0][fanghao]==0)
      {
        printf("1.购下该地皮,花费500,   其他任意数返回\n");
        scanf("%d",&a);
        if (a==1)
        {
          p1.fangchan[0][fanghao]=1;
          p1.money-=500;
        }
      }
      else if (p1.fangchan[1][fanghao]==0)
      {
        printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
        scanf("%d",&a);
        switch (a)
        {
          case 1:
            p1.fangchan[1][fanghao]=1;
            p1.money=p1.money-200;
            p1.fangchan[2][fanghao]=1;
            p1.fangchan[3][fanghao]=500;
            break;
          case 2:
            p1.fangchan[1][fanghao]=2;
            p1.money=p1.money-200;
            p1.fangchan[2][fanghao]=1;
            p1.fangchan[4][fanghao]=50;
            break;
          default:
            break;
        }
      }
      else if (p1.fangchan[1][fanghao]==1)
      {
        p1.fangchan[4][fanghao]=0;
        printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p1.fangchan[2][fanghao],500*(p1.fangchan[2][fanghao]+1));
        scanf("%d",&a);
        if (a==1)
        {
          if (p1.fangchan[2][fanghao]==5)
          {
            printf("已是最高级别!\n");
            system("pause");
            goto zuigao;
          }
          p1.fangchan[2][fanghao]++;
          p1.money=p1.money-500*p1.fangchan[2][fanghao];
          p1.fangchan[3][fanghao]=p1.fangchan[3][fanghao]+200*p1.fangchan[2][fanghao];
          printf("升级完毕,当前为%d星级旅馆\n",p1.fangchan[2][fanghao]);
          printf("输入任意数字返回\n");
          scanf("%d",&c);
        }
      }
      else
      {
        printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p1.fangchan[1][fanghao],500*p1.fangchan[2][fanghao]);
        scanf("%d",&a);
        if (a==1)
        {
          if (p1.fangchan[2][fanghao]==5)
          {
            printf("已是最高级别!\n");
            printf("输入任意数字返回\n");
            scanf("%d",&c);
            goto zuigao;
          }
          p1.fangchan[2][fanghao]++;
          p1.money=p1.money-500*p1.fangchan[2][fanghao];
          p1.fangchan[4][fanghao]=p1.fangchan[4][fanghao]+10*p1.fangchan[2][fanghao];
          printf("升级完毕,当前为%d星级商店\n",p1.fangchan[2][fanghao]);
          system("pause");
        }
      }
    }
    else if (p2.fangchan[1][fanghao]==1)
    {
      printf("被收取过路费住宿费%d\n",p2.fangchan[3][fanghao]);
      p1.money=p1.money-p2.fangchan[3][fanghao];
      p2.money=p2.money+p2.fangchan[3][fanghao];
      system("pause");
    }
  }
  else
  {
    switch (p2.dangqian)
    {
      case 1:
        fanghao=0;
        break;
      case 2:
        fanghao=1;
        break;
      case 4:
        fanghao=2;
        break;
      case 5:
        fanghao=3;
        break;
      case 6:
        fanghao=4;
        break;
      case 7:
        fanghao=5;
        break;
      case 8:
        fanghao=6;
        break;
      case 10:
        fanghao=7;
        break;
      case 11:
        fanghao=8;
        break;
      case 12:
        fanghao=9;
        break;
      case 13:
        fanghao=10;
        break;
      case 14:
        fanghao=11;
        break;
      case 15:
        fanghao=12;
        break;
      case 17:
        fanghao=13;
        break;
      case 18:
        fanghao=14;
        break;
      case 19:
        fanghao=15;
        break;
      case 23:
        fanghao=16;
        break;
      case 24:
        fanghao=17;
        break;
      case 25:
        fanghao=18;
        break;
      default:
        break;
    }
    if (p1.fangchan[0][fanghao]==0)
    {
      if (p2.fangchan[0][fanghao]==0)
      {
        printf("1.购下该地皮,花费500,   其他任意数返回\n");
        scanf("%d",&a);
        if (a==1)
        {
          p2.fangchan[0][fanghao]=1;
          p2.money-=500;
        }
      }
      else if (p2.fangchan[1][fanghao]==0)
      {
        printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
        scanf("%d",&a);
        switch (a)
        {
          case 1:
            p2.fangchan[1][fanghao]=1;
            p2.money=p1.money-200;
            p2.fangchan[2][fanghao]=1;
            p2.fangchan[3][fanghao]=500;
            break;
          case 2:
            p2.fangchan[1][fanghao]=2;
            p2.money=p1.money-200;
            p2.fangchan[2][fanghao]=1;
            p2.fangchan[4][fanghao]=50;
            break;
          default:
            break;
        }
      }
      else if (p2.fangchan[1][fanghao]==1)
      {
        p2.fangchan[4][fanghao]=0;
        printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p2.fangchan[2][fanghao],500*(p2.fangchan[2][fanghao]+1));
        scanf("%d",&a);
        if (a==1)
        {
          if (p2.fangchan[2][fanghao]==5)
          {
            printf("已是最高级别!\n");
            system("pause");
            goto zuigao;
          }
          p2.fangchan[2][fanghao]++;
          p2.money=p2.money-500*p2.fangchan[2][fanghao];
          p2.fangchan[3][fanghao]=p2.fangchan[3][fanghao]+200*p2.fangchan[2][fanghao];
          printf("升级完毕,当前为%d星级旅馆\n",p2.fangchan[2][fanghao]);
          printf("输入任意数字返回\n");
          scanf("%d",&c);
        }
      }
      else
      {
        printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p2.fangchan[1][fanghao],500*p2.fangchan[2][fanghao]);
        scanf("%d",&a);
        if (a==1)
        {
          if (p2.fangchan[2][fanghao]==5)
          {
            printf("已是最高级别!\n");
            printf("输入任意数字返回\n");
            scanf("%d",&c);
            goto zuigao;
          }
          p2.fangchan[2][fanghao]++;
          p2.money=p1.money-500*p2.fangchan[2][fanghao];
          p2.fangchan[4][fanghao]=p2.fangchan[4][fanghao]+10*p2.fangchan[2][fanghao];
          printf("升级完毕,当前为%d星级商店\n",p2.fangchan[2][fanghao]);
          system("pause");
        }
      }
    }
    else if (p1.fangchan[1][fanghao]==1)
    {
      printf("被收取过路费住宿费%d\n",p1.fangchan[3][fanghao]);
      p2.money=p2.money-p1.fangchan[3][fanghao];
      p1.money=p1.money+p1.fangchan[3][fanghao];
      system("pause");
    }
  }
zuigao:
  return 0;
}
/*人品驿站!!*/
int renpin(int money)
{
  int a,b;
  a=rand()%10;
  b=rand()%2000;
  switch (a)
  {
    case 0:
      printf("路边捡到一个钱包,获得%d!!\n",b);
      money=money+b;
      break;
    case 1:
      printf("路遇恶狗被咬,住院花费200!!\n");
      money=money+20000000;
      break;
    case 2:
      printf("见到小偷行窃,见义勇为被奖励500!!\n");
      money=money+500000000;
      break;
    case 3:
      printf("见到小偷行窃,见义勇为,军体拳耍了16套被砍了32刀,住院花费1000!!");
      money=money+1000000000;
      break;
    case 4:
      printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是过期彩票,又打的返回~~\n");
      money=money+100000000;
      break;
    case 5:
      printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是中奖彩票,获得1000元!\n");
      money=money+20000000;
      break;
    case 6:
      printf("人民币涨值,资金上涨20%!!\n");
      money=money+money*1000;
      break;
    case 7:
      printf("路遇乞丐,被强行勒索100元.\n");
      money=money+1000000;
      break;
    case 8:
      printf("长得太丑被好心人施舍200\n");
      money=money+200000000;
      break;
    case 9:
      printf("路边破解残局摊,获利100\n");
      money=money+1000000000;
      break;
  }
  system("pause");
  return money;
}
/*作死的加入赌场函数*/
/*此函数用于判断骰子猜测结果*/
int touzi(int touzi1,int touzi2,int a)
{
  int b,daxiao;
  int he;
  he=touzi1+touzi2;
  if (he>6)
  {
    daxiao=13;
    printf("大!\n");
  }
  else
  {
    daxiao=14;
    printf("小!\n");
  }
  if (a<=12)
  {
    if (a==he)
    {
      b=5;
    }
    else
    {
      b=0;
    }
  }
  else if (a<=14)
  {
    if (a==daxiao)
    {
      b=2;
    }
    else
    {
      b=0;
    }
  }
  else
  {
    if (touzi1==touzi2)
    {
      b=3;
    }
    else
    {
      b=0;
    }
  }
  return b;
}
int duchang(int money)
{
  int z[2][5];
  int x[2][6]= {0};
  double beilv;
  int a,b,c,n,d,e,m,choice;
  int touzi1,touzi2,touzi0;
  int num,times,guess,p,q;
  int result;
  int touru;
  char name[20];
  int touzi(int touzi1,int touzi2,int a);
  touzi0=0;
  printf("**************************拉斯维加斯****************************\n输入您的赌场外号:\n");
  gets(name);
  /*此处用于清屏并输出当前个人档案*/
xinxi:
  touzi0++;
  if (touzi0>3)
  {
    goto ended;
  }
  shijian(3);
  if (p1.days>=100)
  {
    goto ended;
  }
  system("cls");
  printf("********************拉斯维加斯********************\n");
  puts(name);
  printf("当前资产:%d",money);
  if (money<500)
  {
    printf("\n身份:贫民\n");
  }
  else if (money<1000)
  {
    printf("\n身份:平民\n");
  }
  else if (money<2000)
  {
    printf("\n身份:小资\n");
  }
  else if (money<5000)
  {
    printf("\n身份:富人\n");
  }
  else if (money<50000)
  {
    printf("\n身份:土豪\n");
  }
  else
  {
    printf("\n身份:首富\n");
  }
  if (money<0)
  {
    printf("没钱还想进赌城~?\n");
    goto ended;
  }
  /*此处开始选择赌博*/
  printf("选择一种活动吧:\n1.掷骰子\n2.猜数\n3.炸金花\n4.21点\n5.退出赌城\n");
  scanf("%d",&choice);
  /*开始掷骰子*/
  if (choice==1)
  {
    system("cls");
    printf("OOOOOOOOOOoooooooooo 掷骰子 ooooooooooOOOOOOOOOO\n");
    touzi1=rand()%6+1;
    touzi2=rand()%6+1;
    printf("开始掷骰子,买定离手咯!\n");
    printf("您要买的是:\n1-12.买点数\n13.买大\n14.买小\n15.买豹子\n");
    scanf("%d",&a);
error3:
    printf("您买入多少钱呢:\n");
    scanf("%d",&touru);
    if (touru>money)
    {
      printf("没钱还敢乱喊价? \n");
      goto error3;
    }
    if (touru<0)
    {
      printf("你他妈是在逗我~?\n");
      goto error3;
    }
    printf("开!骰子情况是%d,%d!",touzi1,touzi2);
    b=touzi(touzi1,touzi2,a);
    money=money-touru+touru*b;
    system("pause");
  }
  /*开始猜数*/
  else if (choice==2)
  {
    system("cls");
    printf("//////////////////// 猜数 \\\\\\\\\\\\\\\\\\\\\n");
error1:
    printf("请输入您的押金,将按您猜数次数呈倍数返还:\n");
    scanf("%d",&touru);
    if (touru>money)
    {
      printf("没钱还敢乱喊价? \n");
      goto error1;
    }
    if (touru<0)
    {
      printf("你他妈是在逗我~?\n");
      goto error1;
    }
    num=rand()%100;
    for(times=0; times<=10; times++)
    {
      printf("第%d次猜数:",times+1);
      scanf("%d",&guess);
      if (guess>num)
      {
        printf("\n猜的大了\n");
      }
      else if(guess<num)
      {
        printf("\n猜的小了\n");
      }
      else
      {
        printf("恭喜猜对啦!");
        break;
      }
    }
    if (times>=10)
    {
      printf("10次都猜不出,弱爆了!!\n");
    }
    money=money-touru;
    times=22-2*times;
    beilv=times/10.0;
    money=money+touru*beilv;
    system("pause");
  }
  /*开始炸金花*/
  else if (choice==3)
  {
    system("cls");
    printf("xxxxxxxxxxXXXXXXXXXX 炸金花 XXXXXXXXXXxxxxxxxxxx\n");
    printf("由于本行业为暴利行业,故收取手续费为总金额百分之五,两百元以内则扣十元\n");
    if (money<=200)
    {
      money=money-10;
    }
    else
    {
      money=money*0.95;
    }
    for (m=0; m<=2; m++)
    {
      z[0][m]=rand()%13+1;
      z[1][m]=rand()%13+1;
    }
    /*在此进行排序*/
    for (d=0; d<=1; d++)
    {
      if (z[d][1]>z[d][0])
      {
        e=z[d][0];
        z[d][0]=z[d][1];
        z[d][1]=e;
      }
      if (z[d][2]>z[d][1])
      {
        e=z[d][1];
        z[d][1]=z[d][2];
        z[d][2]=e;
      }
      if (z[d][1]>z[d][0])
      {
        e=z[d][0];
        z[d][0]=z[d][1];
        z[d][1]=e;
      }
    }
    printf("您的手牌是:%d,%d,%d\n",z[0][0],z[0][1],z[0][2]);
error2:
    printf("您选择跟多少:\n");
    scanf("%d",&touru);
    if (touru>money)
    {
      printf("没钱还敢乱喊价? \n");
      goto error2;
    }
    if (touru<0)
    {
      printf("你他妈是在逗我~?\n");
      goto error2;
    }
    money=money-touru;
    /*此处开始比大小出结果*/
    for (d=0; d<=1; d++)
    {
      if (z[d][0]==z[d][1] && z[d][1]==z[d][2])
      {
        z[d][3]=4;
        z[d][4]=z[d][0];
      }
      else if (z[d][0]==z[d][1] || z[d][1]==z[d][2] || z[d][0]==z[d][2])
      {
        z[d][3]=2;
        if (z[d][0]==z[d][1])
        {
          z[d][4]=z[d][0];
        }
        else if (z[d][1]==z[d][2])
        {
          z[d][4]=z[d][1];
        }
        else
        {
          z[d][4]=z[d][2];
        }
      }
      else
      {
        if (z[d][0]-z[d][1]==1 && z[d][1]-z[d][2]==1)
        {
          z[d][3]=3;
          z[d][4]=z[d][0];
        }
        else
        {
          z[d][3]=1;
          z[d][4]=z[d][0];
        }
      }
    }
    if (z[0][3]==z[1][3])
    {
      if (z[0][4]>=z[1][4])
      {
        n=2;
      }
      else
      {
        n=0;
      }
    }
    else if (z[0][3]>z[1][3])
    {
      n=2;
    }
    else
    {
      n=0;
    }
    touru=touru*n;
    printf("摊牌:%d,%d,%d \n",z[1][0],z[1][1],z[1][2]);
    printf("您获得%d \n",touru);
    money=money+touru;
    system("pause");
  }
  else if (choice==4)
    /*开始21点*/
  {
    system("cls");
    printf("################### 21点 ###################\n");
error4:
    printf("请投入押金:\n");
    scanf("%d",&touru);
    if (touru>money)
    {
      printf("没钱还敢乱喊价? \n");
      goto error4;
    }
    if (touru<0)
    {
      printf("你他妈是在逗我~?\n");
      goto error4;
    }
    money=money-touru;
    /*双方发底牌*/
    for(m=0; m<=1; m++)
    {
      for(n=0; n<=1; n++)
      {
        x[m][n]=rand()%13;
        if (x[m][n]==0 || x[m][n]==11 || x[m][n]==12)
        {
          x[m][n]=10;
        }
      }
    }
    printf("您当前的手牌为:%d,%d",x[0][0],x[0][1]);
    if(x[0][0]==1 && x[0][1]==1)
    {
      printf("玩家双龙!!!\n");
      beilv=5;
      goto under;
    }
    if((x[0][0]==1 && x[0][1]==10) || (x[0][0]==10 && x[0][1]==1))
    {
      printf("玩家21点!!\n");
      beilv=3;
      goto under;
    }
    if((x[1][0]==1 && x[1][1]==10) || (x[1][0]==10 && x[1][1]==1) || (x[1][0]==1 && x[1][1]==1))
    {
      printf("电脑21点!!\n");
      beilv=0;
      goto under;
    }
    printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
    scanf("%d",&a);
    if (a==1)
    {
      goto tanpai;
    }
    x[0][2]=rand()%13;
    if (x[0][2]==0 || x[0][2]==11 || x[0][2]==12)
    {
      x[0][2]=10;
    }
    printf("您的手牌为:%d,%d,%d \n",x[0][0],x[0][1],x[0][2]);
    x[0][5]=x[0][0]+x[0][1]+x[0][2];
    if (x[0][5]>21)
    {
      beilv=0;
      printf("胀死了!");
      goto under;
    }
    printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
    scanf("%d",&a);
    if (a==1)
    {
      goto tanpai;
    }
    x[0][3]=rand()%13;
    if (x[0][3]==0 || x[0][3]==11 || x[0][3]==12)
    {
      x[0][3]=10;
    }
    printf("您的手牌为:%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3]);
    x[0][5]=x[0][5]+x[0][3];
    if (x[0][5]>21)
    {
      beilv=0;
      printf("胀死了!! \n");
      goto under;
    }
    printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
    scanf("%d",&a);
    if (a==1)
    {
      goto tanpai;
    }
    x[0][4]=rand()%13;
    if (x[0][4]==0 || x[0][4]==11 || x[0][3]==12)
    {
      x[0][4]=10;
    }
    printf("您的手牌为:%d,%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3],x[0][4]);
    x[0][5]=x[0][5]+x[0][4];
    if (x[0][5]>21)
    {
      beilv=0;
      printf("胀死了!! \n");
      goto under;
    }
    printf("五小!!\n");
    beilv=3;
    goto under;

tanpai:
    x[1][5]=x[1][0]+x[1][1];
    for(b=2; (x[1][5]<=17 && b<=4); b++)
    {
      x[1][b]=rand()%13;
      if (x[1][b]==0 || x[1][b]==11 || x[1][b]==12)
      {
        x[1][b]=10;
      }
      printf("电脑加牌:%d\n",x[1][b]);
      x[1][5]=x[1][5]+x[1][b];
      scanf("%d",&a);
    }
    printf("电脑手牌:%d,%d,%d,%d,%d\n",x[1][0],x[1][1],x[1][2],x[1][3],x[1][4]);
    if (x[1][5]>21)
    {
      printf("电脑胀死!\n");
      beilv=2;
      goto under;
    }
    if (x[1][5]>x[0][5])
    {
      printf("电脑大!\n");
      beilv=0;
    }
    else
    {
      printf("玩家大!!\n");
      beilv=2;
    }
under:
    money=money+touru*beilv;
    system("pause");
  }
  else
  {
    goto ended;
  }
  if (money<=0)
  {
    printf("\n资产用尽,您已被赶出拉斯维加斯\n");
  }
  else
  {
    goto xinxi;
  }
ended:
  system("pause");
  return money;
}

 

0
丁浩然
丁浩然
新手光能
新手光能

小号打飞机

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#define Esc 27 //退出
#define Up 72 //上,下,左,右
#define Down 80
#define Left 75
#define Right 77
#define Kong 32 //发射子弹
int x=10; //飞机坐标
int y=18;
int d2=10;//敌机坐标
int d1=10;
int d=10;
int r=1;
int r1=1;
int r2=1;
int t=1; // 游戏结束
int f=0; // 计分数
int m=100; // 敌机数
int j=0; // 歼敌数
char p; // 接受按键


void kongzhi(int bx,int by);//声明函数
void huatu();
void gotoxy(int x,int y) //移动坐标
{
  COORD coord;
  coord.X=x;
  coord.Y=y;
  SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}

void hidden()//隐藏光标
{
  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
  CONSOLE_CURSOR_INFO cci;
  GetConsoleCursorInfo(hOut,&cci);
  cci.bVisible=0;//赋1为显示,赋0为隐藏
  SetConsoleCursorInfo(hOut,&cci);
}



//说明
void shuoming()
{
  printf("\t\t\t\n\n\n\n");

  printf("\t\t\t方向控制\n\n"
         "\t\t\t上 ↑\n\n"
         "\t\t\t下 ↓\n\n"
         "\t\t\t左 ←\n\n"
         "\t\t\t右 →\n\n"
         "\t\t\t子弹 空格\n\n\n"
         "\t\t\t退出请按 ESC\n");
  gotoxy(0,0);
}
void byebye()
{
  if((x==d&&y==r)||(x==d1&&y==r1)||(x==d2&&y==r2))
  {
    gotoxy(1,3);
    printf(" !!! 游戏结束 !!!\n"
           "*******************\n"
           " 您的总得分: %d\n\n"
           " 敌机数: %d\n"
           " 歼敌数: %d\n"
           " 命中率: %.0f %%\n"
           "*******************\n",f,m,j,((float)j/(float)m)*100);
    while(!kbhit())
    {
      Sleep(500);
      gotoxy(1,12);
      printf(" 继续请按任意键...\n\n\n");
      Sleep(900);
      gotoxy(1,12);
      printf(" ");
    }
    gotoxy(0,0);
    huatu();
    f=0;
    m=0;
    j=0;
    if(x>=18) x--;
    else x++;
    gotoxy(x,y);
    printf("Ж");
  }
}
// 计分/更新敌机
void jifan()
{
  if(x==d&&y==r)
  {
    gotoxy(d,r);
    printf("6");
    Sleep(200);
    gotoxy(d,r);
    printf(" ");
    f+=2;
    r=0;
    j++;
  }
  if(x==d1&&y==r1)
  {
    gotoxy(d1,r1);
    printf("2");
    Sleep(200);
    gotoxy(d1,r1);
    printf(" ");
    f+=3;
    r1=0;
    j++;
  }
  if(x==d2&&y==r2)
  {
    gotoxy(d2,r2);
    printf("3");
    Sleep(200);
    gotoxy(d2,r2);
    printf(" ");
    f+=1;
    r2=0;
    j++;
  }

  gotoxy(26,2);
  printf(" %d \n",f);

}
//画图
void huatu()
{
  int i,n;

  for(i=0; i<=2; i++)
  {
    for(n=0; n<=50; n++)
    {
      printf("*");
    }
    printf("\n");
  }
  for(i=1; i<=19; i++)
  {
    for(n=1; n<=19; n++)
    {
      gotoxy(i,n);
      printf(" ");
    }
  }
}


//随机产生敌机
void dfeiji ()
{
  while(t)
  {
    if(!r)
    {
      d=rand()%16+2;
      m++;
    }
    if(!r1)
    {
      d1=rand()%17+2;
      m++;
    }
    if(!r2)
    {
      d2=rand()%20+2;
      m++;
    }
    while(t)
    {
      r++;
      r1++;
      r2++;
      gotoxy(d,r);
      printf("Ψ");
      gotoxy(d1,r1);
      printf("ж");
      gotoxy(d2,r2);
      printf("‰");
      gotoxy(d2,r2);
      printf("! ");

      Sleep(903);
      gotoxy(d,r);
      printf(" ");
      gotoxy(d1,r1);
      printf(" ");
      gotoxy(d2,r2);
      printf(" ");


      kongzhi(0,0);
      byebye();
      if(r==18) r=0;
      if(r1==18) r1=0;
      if(r2==18) r2=0;
      if(r==0||r1==0||r2==0) break;
    }
  }
}


//操控飞机
void kongzhi(int bx,int by)
{
  int a;


  while (kbhit())
  {
    if ((p=getch())==-32) p=getch();
    a=p;
    gotoxy(22,5);

    switch(a)
    {
        //控制方向
      case Up:
        if (y!=1)
        {
          gotoxy(x,y);
          printf(" ");
          y--;
          gotoxy(x,y);
          printf("Ж");
        }
        break;
      case Down:
        if (y!=18)
        {
          gotoxy(x,y);
          printf(" ");
          y++;
          gotoxy(x,y);
          printf("Ж");
        }
        break;
      case Left:
        if (x!=3)
        {
          gotoxy(x,y);
          printf(" ");
          x--;
          gotoxy(x,y);
          printf("Ж");
        }
        break;
      case Right:
        if (x!=18)
        {
          gotoxy(x,y);
          printf(" ");
          x++;
          gotoxy(x,y);
          printf("Ж");
        }
        break;
      case Kong:
      {
        bx=y;
        for(by=y; by>4;) //发射子弹
        {
          by--;
          gotoxy(x,by);
          printf("■");
          Sleep(12);
          gotoxy(x,by);
          printf(" ");
          y=by;
          jifan();
          if(r==0||r1==0||r2==0) break;
        }
        y=bx;
      }
      break;

      case Esc:
        t=0;
        break; //退出

      default:
        break;
    }
  }
}

int main()
{
  srand(time(NULL));
  shuoming();
  hidden();
  huatu();
  gotoxy(x,y);
  printf("+");

  gotoxy(13,2);
  printf("分数:");
  while (t)
  {
    kongzhi(0,0);
    if(t)
      dfeiji ();
  }

}

 

0
丁浩然
丁浩然
新手光能
新手光能

自动迷宫系统


#include<iostream>

#include<stack>

#include<stdio.h>

#include<time.h>

#include<string>

using namespace std;

typedef struct

{

  int x,y;

} item;

typedef struct

{

  int x,y,d;

} Datetype;

typedef stack<Datetype> stack_int;

void path (int **maze,int,int,int,int);

void printpath();

#define NUM 100 //队列大小;

typedef struct
{

  int x,y; //所到点的坐标;

  int pre; //前驱点的下标;

} SqType; //队列;

int front,rear; //队首指针与队尾指针;

void printpath(SqType sq[],int) //打印路径
{

  int i;

  i=rear;

  do
  {

    cout<<"("<<sq[i].x<<","<<sq[i].y<<")<--";

    i=sq[i].pre; //回溯;

  }
  while(i!=-1);

}

void restore(int **maze,int m,int n) //恢复迷宫
{

  for(int i=1; i<=m; i++)
  {

    for(int j=1; j<=n; j++)
    {

      if(maze[i][j]==-1)

        maze[i][j]=0;

    }

  }

}

int path1(int **maze,int m,int n,int c,int d,int x1,int y1)//最短路径

{
  //m,n为迷宫的长和宽,c,d为迷宫入口坐标,x1,y1为迷宫出口坐标;maze为迷宫;

  item move[8]= {{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; //坐标增量数组;

  SqType sq[NUM];

  int x,y,i,j,v;

  front=rear=0;

  sq[0].x=c;

  sq[0].y=d;

  sq[0].pre=-1;

  if(maze[c][d]==0)

    maze[c][d]=-1;//入口点入队;

  else goto G;

  while(front<=rear)  //队列不为空
  {

    x=sq[front].x;

    y=sq[front].y;

    for(v=0; v<8; v++)
    {

      i=x+move[v].x;

      j=y+move[v].y;

      if(maze[i][j]==0)
      {

        rear++;

        sq[rear].x=i;

        sq[rear].y=j;

        sq[rear].pre=front;

        maze[i][j]=-1; //访问过的坐标点,入队;

      }

      if(i==x1&&j==y1)
      {

        cout<<"最短路径为:"<<endl;

        printpath(sq,rear); //输出路径;

        restore(maze,m,n); //恢复迷宫;

        return 1;

      }

    } //for v;

    front++; //当前点搜索完,取下一个点搜索

  } //while

G:
  cout<<"无路径。"<<endl;

  return 0;

}

void path(int **maze,int a,int b,int m,int n)

{

  item move[8]= {{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};

  stack_int st;

  Datetype temp;

  int x,y,d,i,j;

  if(maze[a][b]==1)
  {
    cout<<"进口输入有误。";
    return;
  }

  temp.x=a;
  temp.y=b;
  temp.d=-1; //初始化入口点坐标及方向;

  st.push(temp);

  while(!st.empty())

  {

    temp=st.top();

    st.pop();

    x=temp.x;
    y=temp.y;
    d=temp.d+1;

    while(d<8)

    {

      i=x+move[d].x;
      j=y+move[d].y;

      if(maze[i][j]==0) //该点可到达;

      {

        temp.x=x;
        temp.y=y;
        temp.d=d; //坐标及方向;

        st.push(temp); //坐标及方向入栈;

        x=i;
        y=j;

        maze[x][y]=-1;//到达新点;

        if(x==m && y==n)

        {

          cout<<" 迷宫路径为:"<<endl;

          cout<<"("<<m<<","<<n<<")<---";

          Datetype t;

          while(!st.empty())

          {

            t=st.top();

            cout<<"("<<t.x<<","<<t.y<<")<---";

            st.pop();

          } //输出路径;

          cout<<endl;

          return ; //到达出口;

        }

        else d=0; //重新初始化方向;

      }

      else d++; //改变方向;

    }

  }

  cout<<"对不起,无法找到出口.";

  return; //迷宫无路;

}

void printpath()

{

  int m,n,i,j,l,c,d;

  string s;

  cout<<"********************************************************************************\n"<<endl;

  cout<<" 欢迎进入迷宫求解系统\n"<<endl;

  cout<<"********************************************************************************\n"<<endl;

  cout<<" 请输入迷宫的行数:"<<endl;

  cin>>m;

  cout<<" 请输入迷宫的列数:"<<endl;

  cin>>n;

  int **maze=new int*[m+2];

  for(i=0; i<=m+1; i++)

    maze[i]=new int[n+2];//申请迷宫的空间;

  for(i=0; i<=m+1; i++)

    maze[i][0]=1;

  for(i=0; i<=n+1; i++)

    maze[0][i]=1;

  for(i=0; i<=m+1; i++)

    maze[i][n+1]=1;

  for(i=0; i<=n+1; i++)

    maze[m+1][i]=1; //建立迷宫周围的墙;

  cout<<"********************************************************************************\n"<<endl;

  cout<<"    ☆ 自动生成迷宫 请按:1\n    ☆ 手动生成迷宫 请按:2\n"<<endl;

  cout<<"********************************************************************************\n"<<endl;

  cin>>s;

  if(s=="1")

  {

//srand(time(0)); //系统时间随机函数;

    for(i=1; i<=m; i++)

      for(j=1; j<=n; j++)

//maze[i][j]=rand()%2; //随机赋值

        maze[1][1]=0; //(1,1)点为可通过点;

    maze[m][n]=0; //(m,n)点为可通过点;

  }

  else

  {

    cout<<"请输入迷宫:"<<m<<"行"<<n<<"列"<<", 输入必须为'0' 或 '1';"<<endl;

    for(i=1; i<=m; i++) //输入第i行迷宫的构造;

      for(j=1; j<=n; j++) //输入第j列迷宫的结构;

      {

        cin>>maze[i][j];

A:
        if(maze[i][j]!=0 && maze[i][j]!=1)

        {

          cout<<"请再次输入:";

          cin>>maze[i][j];
          goto A; //判错;

        }

      }

  }

  cout<<"迷宫如下:"<<endl; //显示用户输入的迷宫;

  for(i=0; i<=m+1; i++)

  {

    for(j=0; j<=n+1; j++)

    {

      if (*(maze[i]+j)==0||*(maze[i]+j)==5)

      {

        cout<<" ";

      }

      else if(*(maze[i]+j)==1)

      {

        cout<<"□";

      }

      else if(*(maze[i]+j)==2)

      {

        cout<<"※";

      }

      else if(*(maze[i]+j)==3)

      {

        cout<<"■";

      }

      else if(*(maze[i]+j)==4)

      {

        cout<<"☆";

      }

      else if(*(maze[i]+j)==6) //找到出口标识

      {

        cout<<"★";

      }

      else

      {

        cout<<"出错!";

      }

    }

    cout<<"\n";

  }

H:
  cout<<"请输入迷宫入口(a,b),出口(c,d):";

  cin>>i>>j>>c>>d;

  path(maze,i,j,c,d); //调用路径函数,输出路径;

  cout<<endl; //格式设置;

  restore(maze,m,n); //恢复迷宫;

  path1(maze,m,n,i,j,c,d); //输出最短路径;

  cout<<endl; //格式设置;

  cout<<"********************************************************************************\n";

  cout<<"    1、寻找其他入口与出口;\n    2、退出此迷宫;\n";

  cout<<"********************************************************************************\n";

  cin>>l;

  if(l==1)
  {

    restore(maze,m,n); //恢复迷宫;

    goto H;

  }

  else return; //跳出此函数;

}

int main()

{

  string s="Y";

  do

  {

    cout<<"--------------------------欢迎到达迷宫界面--------------------------\n";

    printpath();

    cout<<endl;

    cout<<"\n 是否继续?'Y' 或'N'(输入其他操作按'N')"<<endl;

    cin>>s;

  }
  while (s=="Y"||s=="y");

  system("pause");

}

 

0
丁浩然
丁浩然
新手光能
新手光能

"英雄救美"

 #include<stdlib.h>
 #include<stdio.h>
 #include<time.h>       //suiji        
 #include<string.h>
 #include<windows.h>          //SLEEP函数
 struct Player                        //玩家结构体,并初始化player
 {
     char name[21];
     int attack;
     int defense;
     int health;
     long int max_health;
     int level;
     int exp;
     int range_exp;
     long int max_exp;
 }player={"勇者",50,40,100,100,1,0,0,100};
 struct Enemy                         //怪的结构体,并初始化各种怪
 {
     char name[20];
     char wupin[12];
     int attack;
     int defense;
     int health;
     int money;
     long int exp;
     int wupin_sign;
     int wupinpro;
     int double_attack;
     int miss;
 }strongman={40,50,350,200,100,1,2,1,0},
 witch={25,15,100,50,50,2,2,1,1},
 xiyi={18,10,50,30,35,3,3,2,2},
 big_strongman={40*5,50*5,350*5,200*5,100*5,4,4,2,0},
 lion={60,30,280,200,100,5,2,1,0},
 horse={28,12,90,50,50,6,2,1,1},
 bee={17,11,60,30,35,7,3,2,2},
 shitu={"\0",60*8,30*8,280*8,200*8,100*8,9,1,1,0},
 guai={"\0","\0",0,0,0,0,0,0,0,0,0};
     struct Place
     {
       int bar,hotel,forest1,forest2,forest3,grass1,grass2,grass3;
     }place={1,2,3,4,5,6,7,8};

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

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

int main()
 {


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

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

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

    OrdinaryAct();
     return 0;
 }

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


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


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


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

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

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

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

 

0
丁浩然
丁浩然
新手光能
新手光能

俄罗斯方块

#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <windows.h>
#include <conio.h>
using namespace std;
int block00[4][4] = { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } };
int block01[4][4] = { { 11,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 } };
int block02[4][4] = { { 12,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,1,0,0 } };
int block03[4][4] = { { 13,0,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block04[4][4] = { { 14,0,0,0 },{ 0,0,0,0 },{ 0,1,0,0 },{ 1,1,1,0 } };
int block05[4][4] = { { 15,0,0,0 },{ 0,1,0,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block06[4][4] = { { 16,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 1,0,0,0 } };
int block07[4][4] = { { 17,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block08[4][4] = { { 18,0,0,0 },{ 0,0,0,0 },{ 0,0,1,0 },{ 1,1,1,0 } };
int block09[4][4] = { { 19,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 0,1,1,0 } };
int block10[4][4] = { { 20,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,0,1,0 } };
int block11[4][4] = { { 21,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 } };
int block12[4][4] = { { 22,0,0,0 },{ 0,0,0,0 },{ 1,0,0,0 },{ 1,1,1,0 } };
int block13[4][4] = { { 23,0,0,0 },{ 0,1,1,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block14[4][4] = { { 24,0,0,0 },{ 0,0,0,0 },{ 0,1,1,0 },{ 1,1,0,0 } };
int block15[4][4] = { { 25,0,0,0 },{ 1,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block16[4][4] = { { 26,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 0,1,1,0 } };
int block17[4][4] = { { 27,0,0,0 },{ 0,0,1,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block18[4][4] = { { 28,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 1,1,0,0 } };

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

0
丁浩然
丁浩然
新手光能
新手光能

有点类似于"360手表上的游戏“

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<Windows.h>
#define PR_Box printf("■")
#define PR_Gold printf("★")
#define PR_Ag printf("☆")
#define PR_FBird printf("Ю")
#define PR_DBird printf("Ф")
#define PR_Land printf("┳┳┯")
#define PR_Bg_TL printf("╔")
#define PR_Bg_TR printf("╗")
#define PR_Bg_DL printf("╚")
#define PR_Bg_DR printf("╝")
#define PR_Bg_X printf("═")
#define PR_Bg_Y printf("║")
#define PR_Blank printf(" ");
int Grade = 1, C_Gold = 0, C_Ag = 0, Score = 0, Delay_time = 1000, Max_blank = 9, Distance = 18;
struct Birds
{
  int x, y;
  int condition;
};
Birds *Bird = (Birds*)malloc(sizeof(Birds));
struct Bg
{
  int x, y;
  int l_blank;
  int reward[9];
  Bg *pri;
  Bg *next;
};
Bg *Bg1 = new Bg[sizeof(Bg)];
void Position(int x, int y)
{
  COORD pos = { x - 1, y - 1 };
  HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleCursorPosition(Out, pos);
}
void CreatBird()
{
  Bird->x = 41;
  Bird->y = 10;
  Bird->condition = 0;
}
void CreatBg()
{
  Bg *Bg2 = (Bg*)malloc(sizeof(Bg));
  Bg1->x = 90;
  Bg1->y = 8;
  Bg2->x = Bg1->x + Distance;
  Bg2->y = 9;
  Bg1->l_blank = Max_blank - Grade;
  Bg2->l_blank = Max_blank - Grade;
  Bg1->next = Bg2;
  Bg1->pri = Bg2;
  Bg2->next = Bg1;
  Bg2->pri = Bg1;
}
void InsertBg(Bg *p)
{
  int temp;
  Bg *Bgs = (Bg*)malloc(sizeof(Bg));
  Bgs->x = p->pri->x + Distance;
  Bgs->l_blank = Max_blank - Grade;
  srand((int)time(0));
  temp = rand();
  if (temp % 2 == 0)//++
  {
    if ((temp % 4 + p->pri->y + Max_blank - Grade)<21)
      Bgs->y = p->pri->y + temp % 4;
    else
      Bgs->y = p->pri->y;
  }
  else
  {
    if ((p->pri->y - temp % 4)>2)
      Bgs->y = p->pri->y - temp % 4;
    else
      Bgs->y = p->pri->y;
  }
  Bgs->pri = p->pri;
  Bgs->next = p;
  p->pri->next = Bgs;
  p->pri = Bgs;
}
void Check_Bg(Bg *q)
{
  Bg *p = q;
  int i = 0, temp;
  while (++i <= 5)
  {
    if (p->x>-4)
      p = p->next;
    else
    {
      srand((int)time(0));
      temp = rand();
      if (temp % 2 == 0)//++
      {
        if ((temp % 4 + p->y + Max_blank - Grade)<21)
          p->y = p->y + temp % 4;
        else
          p->y = p->y;
        p->x = p->pri->x + Distance;
        p->l_blank = Max_blank - Grade;
      }
      else
      {
        if ((p->y - temp % 4)>2)
          p->y = p->y - temp % 4;
        else
          p->y = p->y;
        p->x = p->pri->x + Distance;
        p->l_blank = Max_blank - Grade;
      }
    }
  }
}
void Loop_Bg(Bg *q)
{
  Bg *p = q;
  int i = 0;
  while (++i <= 5)
  {
    p->x = p->x - 1;
    p = p->next;
    if (Bird->x == p->x)
    {
      Score += 1;
      if (Score % 4 == 0 && Grade<4)
        Grade++;
    }
  }
}
void Prt_Bg(Bg *q)
{
  Bg *p = q;
  int i = 0, k, j;
  while (++i <= 5)
  {
    if (p->x>0 && p->x <= 78)
    {
      for (k = 2; k<p->y; k++)
      {
        Position(p->x + 1, k);
        PR_Box;
        PR_Box;
        PR_Blank
      }
      Position(p->x, p->y);
      PR_Box;
      PR_Box;
      PR_Box;
      PR_Blank;
      Position(p->x, p->y + p->l_blank);
      PR_Box;
      PR_Box;
      PR_Box;
      PR_Blank;
      k = k + p->l_blank + 1;
      for (k; k <= 22; k++)
      {
        Position(p->x + 1, k);
        PR_Box;
        PR_Box;
        PR_Blank;
      }
      Position(p->x, 23);
      for (k = 1; k<Distance / 3 - 2; k++)
        PR_Land;
    }
    p = p->next;
    if (p->x == 0)
    {
      for (j = 2; j<p->y; j++)
      {
        Position(p->x + 1, j);
        PR_Blank;
        PR_Blank;
      }
      Position(p->x + 1, p->y);
      PR_Blank;
      PR_Blank;
      PR_Blank;
      Position(p->x + 1, p->y + Max_blank - Grade);
      PR_Blank;
      PR_Blank;
      PR_Blank;
      j = j + Max_blank - Grade + 1;
      for (j; j <= 22; j++)
      {
        Position(p->x + 1, j);
        PR_Blank;
        PR_Blank;
      }
    }
  }
}
void PrtBg()
{
  int i;
  Position(1, 1);
  PR_Bg_TL;
  Position(79, 1);
  PR_Bg_TR;
  Position(1, 24);
  PR_Bg_DL;
  Position(79, 24);
  PR_Bg_DR;
  for (i = 3; i <= 78; i += 2)
  {
    Position(i, 1);
    PR_Bg_X;
    Position(i, 24);
    PR_Bg_X;
  }
  /*for(i=2;i<=23;i++)
  { Position(1,i);PR_Bg_Y;printf("%d",i-1);
  Position(79,i);PR_Bg_Y;
  }*/
}
void PrtBird()
{
  Position(Bird->x, Bird->y - 1);
  PR_Blank;
  Position(Bird->x, Bird->y);
  PR_FBird;
  Position(38, 2);
  printf("Score:%d", Score);
}
int CheckYN(Bg *q)
{
  Bg *p = q;
  int i = 0;
  while (++i <= 5)
  {
    if (Bird->y>23)
      return 0;
    if (Bird->x == p->x&&Bird->y <= p->y)
      return 0;
    if ((Bird->x == p->x || Bird->x == p->x + 1 || Bird->x == p->x + 2) && Bird->y == p->y)
      return 0;
    if (Bird->x == p->x&&Bird->y>p->y + p->l_blank)
      return 0;
    if ((Bird->x == p->x || Bird->x == p->x + 1 || Bird->x == p->x + 2) && Bird->y == p->y + p->l_blank)
      return 0;
    p = p->next;
  }
  return 1;
}
void Prtfirst()
{
  printf("══════════════════════════════════════\n");
  printf(" ■■ ■■\n");
  printf(" ■■ ■■\n");
  printf(" ■■ ■■ C语言版 Flappy Bird\n");
  printf(" ■■ ■■ 瞎搞人:傅文彬\n");
  printf(" ■■ ■■ 瞎搞日期:2014.2\n");
  printf(" ■■ ■■ 耗时:4小时\n");
  printf(" ■■■ ■■ 游戏说明:\n");
  printf(" ■■ 1-按上箭头使鸟起飞\n");
  printf(" ■■ 2-等级越高,难度越大!\n");
  printf(" Ю123 ■■■\n");
  printf("\n");
  printf(" ■■■ 欢迎各路大神与我探讨C、\nC++、VB、PHP、C#\n");
  printf(" ■■\n");
  printf(" ■■\n");
  printf(" ■■ ■■■ \n");
  printf(" ■■ ■■\n");
  printf(" ■■ Ф ■■\n");
  printf(" ■■ ■■\n");
  printf(" ■■ ■■\n");
  printf(" ■■ ■■\n");
  printf(" ■■ ■■\n");
  printf(" ┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳\n");
  system("pause");
  Position(1, 1);
  int i = 0;
  while (i++<40 * 25)
    PR_Blank;
}
int  main()
{
  int i = 0;
  char ch;
  Prtfirst();
  PrtBg();
  CreatBg();
  InsertBg(Bg1);
  InsertBg(Bg1);
  InsertBg(Bg1);
  CreatBird();
  while (1)
  {
    if (!CheckYN(Bg1))
      break;
    Check_Bg(Bg1);
    Prt_Bg(Bg1);
    PrtBird();
    Loop_Bg(Bg1);
    Bird->y = Bird->y + 1;
    if (GetAsyncKeyState(VK_UP))
    {
      Position(Bird->x, Bird->y - 1);
      PR_Blank;
      Bird->y = Bird->y - 4;
    }
    while (i++<500);
    {
      Sleep(100);
    }
    i = 0;
  }
  Position(38, 10);
  printf("You Lost!");
  Position(1, 25);
  system("pause");
  return 0;
}

 

0
丁浩然
丁浩然
新手光能
新手光能

正版打飞机

#include<iostream>

#include<windows.h>

#include<conio.h>

#include<time.h>

#include<string>

using namespace std;

typedef struct Frame

{

  COORD position[2];

  int flag;

} Frame;

void SetPos(COORD a)

{

  HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);

  SetConsoleCursorPosition(out, a);

}

void SetPos(int i, int j)

{

  COORD pos= {i, j};

  SetPos(pos);

}

void HideCursor()

{

  CONSOLE_CURSOR_INFO cursor_info = {1, 0};

  SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

}



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

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

{

  SetPos(x1,y);

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

}



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

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

{

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

  else
  {

    SetPos(0, 25);

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

    system("pause");

  }

}



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

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

{

  int y=y1;

  while(y!=y2+1)
  {

    SetPos(x, y);

    cout<<ch;

    y++;

  }

}



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

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

{

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

  else
  {

    SetPos(0, 25);

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

    system("pause");

  }

}



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

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

{

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

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

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

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

}



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

{

  COORD a= {x1, y1};

  COORD b= {x2, y2};

  drawFrame(a, b, row, col);

}



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

{

  COORD a = frame.position[0];

  COORD b = frame.position[1];

  drawFrame(a, b, row, col);

}



void drawPlaying()

{

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

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

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

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

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

  SetPos(52, 6);

  cout<<"得分:";

  SetPos(52, 7);

  cout<<"称号:";

  SetPos(52,10);

  cout<<"操作方式:";

  SetPos(52,12);

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

  SetPos(52,14);

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

  SetPos(52,16);

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

}



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

int random(int a, int b)

{

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

  return c;

}



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

COORD random(COORD a, COORD b)

{

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

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

  COORD c= {x, y};

  return c;

}



bool  judgeCoordInFrame(Frame frame, COORD spot)

{

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

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

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

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

          return true;

  return false;

}



void printCoord(COORD a)

{

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

}



void printFrameCoord(Frame a)

{

  printCoord(a.position[0]);

  cout    <<" - ";

  printCoord(a.position[1]);

}



int drawMenu()

{

  SetPos(30, 1);

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

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

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

  SetPos(28, 4);

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

  SetPos(15, 11);

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

  SetPos(15, 13);

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

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

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

  SetPos(47, 11);

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

  SetPos(51, 13);

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

  int j=11;

  cout<<">>";

  while(1)
  {

    if( _kbhit() )
    {

      char x=_getch();

      switch (x)
      {

        case 'w' :
        {

          if( j == 13)
          {

            SetPos(12, j);

            cout<<" ";

            j = 11;

            SetPos(12, j);

            cout<<">>";

            SetPos(51, 13);

            cout<<"            ";

            SetPos(47, 11);

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

            SetPos(51, 13);

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

          }

          break;

        }

        case 's' :
        {

          if( j == 11 )
          {

            SetPos(12, j);

            cout<<" ";

            j = 13;

            SetPos(12, j);

            cout<<">>";

            SetPos(51, 13);

            cout<<"              ";

            SetPos(47, 11);

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

            SetPos(51, 13);

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

          }

          break;

        }

        case 'k' :
        {

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

        }

      }

    }

  }

}

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



class Game

{

  public:

    COORD position[10];

    COORD bullet[10];

    Frame enemy[8];

    int score;

    int rank;

    int rankf;

    string title;

    int flag_rank;



    Game ();



    //初始化所有

    void initPlane();

    void initBullet();

    void initEnemy();



    //初始化其中一个

    //void initThisBullet( COORD );

    //void initThisEnemy( Frame );



    void planeMove(char);

    void bulletMove();

    void enemyMove();



    //填充所有

    void drawPlane();

    void drawPlaneToNull();

    void drawBullet();

    void drawBulletToNull();

    void drawEnemy();

    void drawEnemyToNull();



    //填充其中一个

    void drawThisBulletToNull( COORD );

    void drawThisEnemyToNull( Frame );



    void Pause();

    void Playing();

    void judgePlane();

    void judgeEnemy();



    void Shoot();



    void GameOver();

    void printScore();

};



Game::Game()

{

  initPlane();

  initBullet();

  initEnemy();

  score = 0;

  rank = 25;

  rankf = 0;

  flag_rank = 0;

}



void Game::initPlane()

{

  COORD centren= {39, 22};

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

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

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

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

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

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

    position[i].Y=centren.Y;

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

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

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

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

}



void Game::drawPlane()

{

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

  {

    SetPos(position[i]);

    if(i!=5)

      cout<<"O";

    else if(i==5)

      cout<<"|";

  }

}



void Game::drawPlaneToNull()

{

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

  {

    SetPos(position[i]);

    cout<<" ";

  }

}



void Game::initBullet()

{

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

    bullet[i].Y = 30;

}



void Game::drawBullet()

{

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

  {

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

    {

      SetPos(bullet[i]);

      cout<<"@";

    }

  }

}



void Game::drawBulletToNull()

{

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

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

    {

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

      SetPos(pos);

      cout<<" ";

    }

}



void Game::initEnemy()

{

  COORD a= {1, 1};

  COORD b= {45, 15};

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

  {

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

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

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

  }

}



void Game::drawEnemy()

{

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

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

}



void Game::drawEnemyToNull()

{

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

  {

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

  }

}



void Game::Pause()

{

  SetPos(61,2);

  cout<<"               ";

  SetPos(61,2);

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

  char c=_getch();

  while(c!='p')

    c=_getch();

  SetPos(61,2);

  cout<<"         ";

}



void Game::planeMove(char x)

{

  if(x == 'a')

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

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

        position[i].X -= 2;



  if(x == 's')

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

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

        position[i].Y += 1;



  if(x == 'd')

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

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

        position[i].X += 2;



  if(x == 'w')

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

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

        position[i].Y -= 1;

}



void Game::bulletMove()

{

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

  {

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

    {

      bullet[i].Y -= 1;

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

      {

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

        drawThisBulletToNull( pos );

        bullet[i].Y=30;

      }



    }

  }

}



void Game::enemyMove()

{

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

  {

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

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



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

    {

      COORD a= {1, 1};

      COORD b= {45, 3};

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

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

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

    }

  }

}



void Game::judgePlane()

{

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

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

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

      {

        SetPos(62, 1);

        cout<<"坠毁";

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

        Sleep(1000);

        GameOver();

        break;

      }

}



void Game::drawThisBulletToNull( COORD c)

{

  SetPos(c);

  cout<<" ";

}



void Game::drawThisEnemyToNull( Frame f )

{

  drawFrame(f, ' ', ' ');

}



void Game::judgeEnemy()

{

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

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

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

      {

        score += 5;

        drawThisEnemyToNull( enemy[i] );

        COORD a= {1, 1};

        COORD b= {45, 3};

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

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

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

        drawThisBulletToNull( bullet[j] );

        bullet[j].Y = 30;

      }

}



void Game::Shoot()

{

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

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

    {

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

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

      break;

    }

}



void Game::printScore()

{

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

  {

    rank -= 3;

    flag_rank = 1;

  }



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

  {

    rank -= 5;

    flag_rank = 2;

  }

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

  {

    rank -= 5;

    flag_rank = 3;

  }

  int x=rank/5;

  SetPos(60, 6);

  cout<<score;



  if( rank!=rankf )

  {

    SetPos(60, 7);

    if( x == 5)

      title="新手守护";

    else if( x == 4)

      title="资深守护";

    else if( x == 3)

      title="缔造者守护";

    else if( x == 2 )

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

    cout<<title;

  }

  rankf = rank;

}



void Game::Playing()

{




  drawEnemy();

  drawPlane();



  int flag_bullet = 0;

  int flag_enemy = 0;



  while(1)

  {

    Sleep(8);

    if(_kbhit())

    {

      char x = _getch();

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

      {

        drawPlaneToNull();

        planeMove(x);

        drawPlane();

        judgePlane();

      }

      else if ('p' == x)

        Pause();

      else if( 'k' == x)

        Shoot();

      else if( 'e' == x)

      {

        //CloseHandle(MFUN);

        GameOver();

        break;

      }



    }

    /* 处理子弹 */

    if( 0 == flag_bullet )

    {

      bulletMove();

      drawBulletToNull();

      drawBullet();

      judgeEnemy();

    }

    flag_bullet++;

    if( 5 == flag_bullet )

      flag_bullet = 0;



    /* 处理敌人 */

    if( 0 == flag_enemy )

    {

      drawEnemyToNull();

      enemyMove();

      drawEnemy();

      judgePlane();

    }

    flag_enemy++;

    if( flag_enemy >= rank )

      flag_enemy = 0;



    /* 输出得分 */

    printScore();

  }

}



void Game::GameOver()

{

  system("cls");

  COORD p1= {28,9};

  COORD p2= {53,15};

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

  SetPos(36,12);

  string str="Game Over!";

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

  {

    Sleep(80);

    cout<<str[i];

  }

  Sleep(1000);

  system("cls");

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

  SetPos(31, 11);

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

  SetPos(31, 12);

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

  SetPos(31, 13);

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

  SetPos(30, 16);

  Sleep(1000);

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

as:

  char x=_getch();

  if (x == 'n')

    exit(0);

  else if (x == 'y')

  {

    system("cls");

    Game game;

    int a = drawMenu();

    if(a == 2)

      game.rank = 20;

    system("cls");

    drawPlaying();

    game.Playing();

  }

  else goto as;

}



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

int main()

{

  //游戏准备

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

  HideCursor();   //隐藏光标



  Game game;

  int a = drawMenu();

  if(a == 2)

    game.rank = 20;

  system("cls");

  drawPlaying();

  game.Playing();

}

 

0
我要回答