65个C++游戏代码

Dev-C++很局限,但还是有很多大佬愿意用它写游戏。

今天我就为大家奉上65个Dev-C++游戏代码,亲测可编译运行!

先来个最简单的,猜猜数字:

#include<iostream>
#include<cstdlib>
#include<ctime>
#include<windows.h>
using namespace std;
int main(){
	srand(time(0));
	int n=rand()%1000;
	int c=-1,ans=0;
	cout<<"你要猜的数字为:***"<<endl<<endl; 
	while(c!=n){
		cout<<"你猜的数是:";
		cin>>c;
		ans++;
		if(c>n){
			Sleep(500); 
			cout<<"大了!"<<endl<<endl; 
		} else if(c<n){
			Sleep(500);
			cout<<"小了!"<<endl<<endl;
		}
	}
	cout<<"恭喜猜中!!!"<<endl<<"共用了"<<ans<<"次!!!"<<endl; 
	system("pause");
	return 0;
}

 

是不是很简单?下一个,飞机大战:

#include<iostream>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string>
using namespace std;
 
/*=============== all the structures ===============*/
 
typedef struct Frame
{
    COORD position[2];
    int flag;
}Frame;
 
 
/*=============== all the functions ===============*/
 
void SetPos(COORD a)// set cursor 
{
    HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(out, a);
}
 
void SetPos(int i, int j)// set cursor
{
    COORD pos={i, j};
    SetPos(pos);
}
 
void HideCursor()
{
    CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
 
//把第y行,[x1, x2) 之间的坐标填充为 ch
void drawRow(int y, int x1, int x2, char ch)
{
    SetPos(x1,y);
    for(int i = 0; i <= (x2-x1); i++)
        cout<<ch;
}
 
//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawRow(COORD a, COORD b, char ch)
{
    if(a.Y == b.Y)
        drawRow(a.Y, a.X, b.X, ch);
    else
    {
        SetPos(0, 25);
        cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
        system("pause");
    }
}
 
//把第x列,[y1, y2] 之间的坐标填充为 ch
void drawCol(int x, int y1, int y2, char ch)
{
    int y=y1;
    while(y!=y2+1)
    {
        SetPos(x, y);
        cout<<ch;
        y++;
    }
}
 
//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawCol(COORD a, COORD b, char ch)
{
    if(a.X == b.X)
        drawCol(a.X, a.Y, b.Y, ch);
    else
    {
        SetPos(0, 25);
        cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
        system("pause");
    }
}
 
//左上角坐标、右下角坐标、用row填充行、用col填充列
void drawFrame(COORD a, COORD  b, char row, char col)
{
    drawRow(a.Y, a.X+1, b.X-1, row);
    drawRow(b.Y, a.X+1, b.X-1, row);
    drawCol(a.X, a.Y+1, b.Y-1, col);
    drawCol(b.X, a.Y+1, b.Y-1, col);
}
 
void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
{
    COORD a={x1, y1};
    COORD b={x2, y2};
    drawFrame(a, b, row, col);
}
 
void drawFrame(Frame frame, char row, char col)
{
    COORD a = frame.position[0];
    COORD b = frame.position[1];
    drawFrame(a, b, row, col);
}
 
void drawPlaying()
{
    drawFrame(0, 0, 48, 24, '=', '|');//    draw map frame;
    drawFrame(49, 0, 79, 4, '-', '|');//        draw output frame
    drawFrame(49, 4, 79, 9, '-', '|');//        draw score frame
    drawFrame(49, 9, 79, 20, '-', '|');//    draw operate frame
    drawFrame(49, 20, 79, 24, '-', '|');//    draw other message frame
    SetPos(52, 6);
    cout<<"得分:";
    SetPos(52, 7);
    cout<<"称号:";
    SetPos(52,10);
    cout<<"操作方式:";
    SetPos(52,12);
    cout<<"  a,s,d,w 控制战机移动。";
    SetPos(52,14);
    cout<<"  p 暂停游戏。";
    SetPos(52,16);
    cout<<"  e 退出游戏。";
}
 
//在[a, b)之间产生一个随机整数
int random(int a, int b)
{
    int c=(rand() % (a-b))+ a;
    return c;
}
 
//在两个坐标包括的矩形框内随机产生一个坐标
COORD random(COORD a, COORD b)
{
    int x=random(a.X, b.X);
    int y=random(a.Y, b.Y);
    COORD c={x, y};
    return c;
}
 
bool  judgeCoordInFrame(Frame frame, COORD spot)
{
    if(spot.X>=frame.position[0].X)
        if(spot.X<=frame.position[1].X)
            if(spot.Y>=frame.position[0].Y)
                if(spot.Y<=frame.position[0].Y)
                    return true;
    return false;
}
 
void printCoord(COORD a)
{
    cout    <<"( "<<a.X<<" , "<<a.Y<<" )";
}
 
void printFrameCoord(Frame a)
{
    printCoord(a.position[0]);
    cout    <<" - ";
    printCoord(a.position[1]);
}
 
int drawMenu()
{
    SetPos(30, 1);
    cout<<"P l a n e  W a r";
    drawRow(3, 0, 79, '-');
    drawRow(5, 0, 79, '-');
    SetPos(28, 4);
    cout<<"w 和 s 选择, k 确定";
    SetPos(15, 11);
    cout<<"1. 简单的敌人";
    SetPos(15, 13);
    cout<<"2. 冷酷的敌人";
    drawRow(20, 0, 79, '-');
    drawRow(22, 0, 79, '-');
    SetPos(47, 11);
    cout<<"简单的敌人:";
    SetPos(51, 13);
    cout<<"简单敌人有着较慢的移动速度。";
    SetPos(24, 21);
    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)";
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();
}

 

 

好长啊,下一个,著名的2048:

#include<iostream>
#include<vector>
#include<ctime>
#include<cstdlib>
using namespace std;
class Game_2048
{
public:
    Game_2048();
    ~Game_2048();
    void introduction();
    bool judgeOver();                            //判断游戏是否结束
    void reSize();
    void printBoard();                          //打印函数
    void getRand();                              //随机在棋盘上生成2,4;
    void slide();                                //滑动
private:
    int m=4, n=4;
    char op;                                   //用户操作
    vector< vector<int> >     board;                                //棋盘
    vector<int>  row;
    bool judgeInsert(int x,int y);
    bool judgeSlide();                               //判断是否能滑动,(未写完)
    void copyBoard(vector< vector<int> > &newBoard,vector< vector<int> > &board);
    void inputOp();
    char getOp();                            //返回操作符
 
    bool judgeLeftSlide(bool mark=true);
    void leftSlide();                            //左滑动
 
    bool judgeRightSlide(bool mark = true);
    void rightSlide();
 
    bool judgeUpSlide(bool mark = true);
    void upSlide();
 
    bool judgeDownSlide(bool mark = true);
    void downSlide();
 
    void reStart();
    void enlarge();                             //将值扩大二倍
};
 
int main()
{
    Game_2048 NB;
    NB.introduction();
    NB.getRand();
    NB.printBoard();
    while (!NB.judgeOver())
    {
        NB.slide();
        NB.getRand();
        NB.printBoard();
    } 
    cout << "游戏结束!!!\n";
    system("pause");
    return 0;
 
}
 
void Game_2048::introduction()
{
    cout << "这是一个2048游戏,规则如下:\n";
    cout << "上划:W;\n下滑:S;\n左划:A;\n右划:D;\n退出:Q;\n重新开始:R;\n请输入下次操作,\n";
}
 
void Game_2048::slide()
{
    inputOp();
    switch (getOp())
    {
    case 'a':
    case 'A':
        if (judgeLeftSlide())
            do
                leftSlide();
            while (judgeLeftSlide(false));
        else
        {
            cout << "无法左滑动,请重试!!!\n";
            slide();
        }
        break;
    case 'd':
    case 'D':
        if (judgeRightSlide())
            do
                rightSlide();
        while (judgeRightSlide(false));        
        else
        {
            cout << "无法右滑动,请重试!!!\n";
            slide();
        }
        break;
    case 'w':
    case 'W':
        if(judgeUpSlide())
            do
            upSlide();
        while (judgeUpSlide(false));
        else
        {
            cout << "无法上滑动,请重试!!!\n";
            slide();
        }
        break;
    case 's':
    case 'S':
        if(judgeDownSlide())
            do    
                downSlide();
            while (judgeDownSlide(false));
        else
        {
            cout << "无法下滑动,请重试!!!\n";
            slide();
        }
        break;
    case 'p':
    case 'P':
        enlarge();
        break;
    case 'q':
    case 'Q':
        exit(0);
        break;
    case 'r':
    case 'R':
        reStart();
        break;
    default:
        cout << "输入错误,作为惩罚,随机生成一个数!\n";
        break;
    }
}
 
 
void Game_2048::reStart()
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++) {
            board[i][j] = 0;
        }
}
 
void Game_2048::enlarge()
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
        {
            board[i][j] *= 2;
        }
}
 
 
char Game_2048::getOp()
{
    return op;
}
 
void Game_2048::upSlide()
{
    for (int j = 0; j < n; j++)
        for (int i = m - 1; i > 0; i--) {                              //n-1!!
            if (board[i][j] != 0 && board[i - 1][j] == 0)            //移动
            {
                    board[i - 1][j] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int j = 0; j < n; j++)
        for (int i = m - 1; i > 0; i--) {
            if (board[i][j] != 0 && board[i-1][j] == board[i][j])  //覆盖
            {
                board[i-1][j] += board[i][j];
                board[i][j] = 0;
            }
        }
}
 
bool Game_2048::judgeUpSlide(bool mark)
{
    if (mark)
    {
        for (int i = 0; i < m; i++)
            for (int j = n - 1; j > 0; j--)
            {
                if (board[i][j] == 0)
                return true;
            }
    }
    for (int j = 0; j < n; j++)
        for (int i = m - 1; i > 0; i--) {                              //n-1!!
            if (board[i][j] != 0 && board[i - 1][j] == 0)            //移动
                return true;
            if (board[i][j] != 0 && board[i - 1][j] == board[i][j])  //覆盖
                return true;
        }
    return false;
}
 
bool Game_2048::judgeDownSlide(bool mark)
{
    if (mark) {
        for (int i = 0; i < m; i++)
            for (int j = n - 1; j > 0; j--)
                {
                    if (board[i][j] == 0)
                        return true;
                }
        
    }
    for (int j = 0; j < n; j++)
                for (int i = 0; i < m - 1; i++) {                              //n-1!!
                    if (board[i][j] != 0 && board[i + 1][j] == 0)            //移动
                        return true;
                    if (board[i][j] != 0 && board[i + 1][j] == board[i][j])  //覆盖
                        return true;
 
                }
    return false;
}
 
void Game_2048::downSlide()
{
    for (int j = 0; j < n; j++)
        for (int i = 0; i < m - 1; i++) {                         
            if (board[i][j] != 0 && board[i + 1][j] == 0)            //移动
            {
                    board[i + 1][j] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int j = 0; j < n; j++)
        for (int i = 0; i < m - 1; i++) {
            if (board[i][j] != 0 && board[i + 1][j] == board[i][j])  //覆盖
            {
                board[i + 1][j] += board[i][j];
                board[i][j] = 0;
            }
        }
}
 
 
void Game_2048::rightSlide()
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n - 1; j++) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j + 1] == 0)            //移动
            {
                    board[i][j + 1] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n - 1; j++) {
            if (board[i][j] != 0 && board[i][j + 1] == board[i][j])  //覆盖
            {
                board[i][j + 1] += board[i][j];
                board[i][j] = 0;
            }
        }
}
 
bool Game_2048::judgeRightSlide(bool mark )
{
    if (mark) {
        for (int i = 0; i < m; i++)
            for (int j = n - 1; j > 0; j--)
            {
                if (board[i][j] == 0)
                    return true;
            }
    }
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n - 1; j++) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j + 1] == board[i][j])  //覆盖
                return true;
            if (board[i][j] != 0 && board[i][j + 1] == 0)
                return true;
        }
    return false;
}
 
void Game_2048::leftSlide()
{
    for (int i = 0; i < m; i++)
        for (int j = 1; j < n; j++) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j - 1] == 0)            //移动
            {
                    board[i][j - 1] = board[i][j];
                    board[i][j] = 0;
            }
        }
    for (int i = 0; i < m; i++)
        for (int j = 1; j < n; j++) {
            if (board[i][j] != 0 && board[i][j - 1] == board[i][j])  //覆盖
            {
                board[i][j - 1] += board[i][j];
                board[i][j] = 0;
            }
        }
}
 
bool Game_2048::judgeLeftSlide(bool mark)
{
    if (mark) {
        for (int i = 0; i < m; i++)
                for (int j = n - 1; j > 0; j--)
                {
                    if (board[i][j] == 0)
                        return true;
                }
    }
    for (int i = 0; i < m; i++)
        for (int j = n - 1; j > 0; j--) {                              //n-1!!
            if (board[i][j] != 0 && board[i][j - 1] == 0)            //移动
                return true;
            if (board[i][j] != 0 && board[i][j - 1] == board[i][j])  //覆盖
                return true;
        }
    return false;
}
 
bool Game_2048::judgeOver()
{
    if (op == 'q' || op == 'Q')
        return true;
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++) {
            if (board[i][j] == 2048)
            {
                printBoard();
                cout << "有数字达到了2048,恭喜!!!\n";
                return true;
            }    
        }
 
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++) {
             if (board[i][j] == 0)
                return false;
        }
    if (judgeSlide())
        return false;
    else
    {
        cout << "无法再滑动\n";
        return true;
    }
        
}
 
bool Game_2048::judgeSlide()
{
    vector< vector<int> >     copyBoard;                                //棋盘
    vector<int>  copyRow;
    for (int i = 0; i < n; i++) {
        copyRow.push_back(0);
    }
    for (int i = 0; i < m; i++) {
        copyBoard.push_back(copyRow);
    }
    copyBoard = board;
    upSlide();
    downSlide();
    leftSlide();
    rightSlide();
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
        {
            if (board[i][j] == 0) {
                board = copyBoard;
                return true;
            }    
        }
    return false;
}
 
void Game_2048::copyBoard(vector< vector<int> >& newBoard, vector< vector<int> >&     board)
{
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            newBoard[i][j] = board[i][j];
}
 
bool Game_2048::judgeInsert(int x,int y)
{
    if (board[x][y] == 0)
        return true;
    else
        return false;
}
void Game_2048::getRand()
{
    srand(time(0));
    int x, y,val;
    do
    {
        x = rand() % m;
        y = rand() % n;
    } while (!judgeInsert(x,y));
    val = (rand() % 2 + 1)*2;
    board[x][y] = val;
 
}
 
void Game_2048::inputOp()
{
    cin >> op;
}
void Game_2048::reSize()
{
    cout << "请输入棋盘大小m*n\n";
    cin >> m >> n;
    Game_2048();
}
 
Game_2048::~Game_2048()
{
}
 
Game_2048::Game_2048()
{
    for (int i = 0; i < n; i++){
        row.push_back(0);
    }
    for (int i = 0; i < m; i++){
        board.push_back(row);
    }
}
void Game_2048::printBoard()
{
    cout << "\n--------------\n";
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            cout << board[i][j];
            if (j < n-1)
            {
                cout << "—";
            }
            if (j == n-1 && i < m-1)
            {
                cout << endl;
                int count = 0;
                while (count++ < n-1)
                {
                    cout << "|  ";
                }
                cout << "|" << endl;
            }
        }
    }
 
    cout << "\n--------------\n" ;
}

 

 

勇者游戏:

#include<stdio.h>
#include<ctime>
#include<time.h> //suiji
#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, 200 * 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;
int jingyancao = 0, jingyanbao = 0, jingyanshi = 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];
	Sleep(1000);
	printf("--------------------------欢迎来到 [苍穹世界] 2.2 测试版-----------------------\n\n\n");
//如果想使用外挂,名字请输入:“圣战斗士 ”。
	Sleep(1000);
	printf("这里是苍穹世界! 雅莉萨斯国的罗茜公主被陌生人绑架了!\n\n\n 伟大的勇者啊~拿起你们的武器,营救公主!\n\n\n输入你的名字: (20个字符)\n\n\n");
	scanf("%s", player_name);
	strncpy(player.name, player_name, 20);
	if (strcmp(player.name, "圣战斗士") == 0) {
		printf("\n\n\n封印多年的圣剑血统啊!你终于觉醒了!\n\n\n圣战斗士,你成为了天选之人,请你救出公主吧!\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个 8,经验草%d个 9,经验包%d个 10,经验石%d个 11,巨人晶石%d个 0,返回\n\n\n", cao, jijiubao, baiyao, superbaiyao, boom, dubiao, atom_boom, jingyancao, jingyanbao, jingyanshi, strongman_arm);
	switch (scanf("%d", &choose_number), choose_number) {
		case 1:
			if (cao > 0) {
				printf("使用止血草,HP增加60\n\n\n");
				cao--;
				if (player.health + 60 > player.max_health)player.health = player.max_health;
				else player.health += 60;
			} else printf("没有止血草了\n\n\n");
			break;
		case 2:
			if (jijiubao > 0) {
				printf("使用急救包,HP增加80\n\n\n");
				jijiubao--;
				if (player.health + 80 > player.max_health)player.health = player.max_health;
				else player.health += 80;
			} else printf("没有急救包了\n\n\n");
			break;
		case 3:
			if (baiyao > 0) {
				printf("使用云南白药,HP增加120\nz\n\n");
				baiyao--;
				if (player.health + 120 > player.max_health)player.health = player.max_health;
				else player.health += 120;
			} else printf("没有云南白药了\n\n\n");
			break;
		case 4:
			if (superbaiyao > 0) {
				printf("使用超级云南白药,HP增加200\n\n\n");
				superbaiyao--;
				if (player.health + 200 > player.max_health)player.health = player.max_health;
				else player.health += 200;
			} else printf("没有超级云南白药了\n\n\n");
			break;
		case 5:
			if (battle) { //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
				if (boom > 0) {
					printf("使用手雷,敌人HP减少100\n\n\n");
					boom--;
					guai.health -= 100;
					AttackResult();
				}
			} else printf("非战斗状态,不能使用手雷!\n\n\n");
			break;
		case 6:
			if (battle) { //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
				if (dubiao > 0) {
					printf("使用毒标,敌人HP减少200\n\n\n");
					dubiao--;
					guai.health -= 200;
					AttackResult();
				}
			} else printf("非战斗状态,不能使用毒标!\n\n\n");
			break;
		case 7:
			if (battle) { //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
				if (atom_boom > 0) {
					printf("使用手抛式原子弹,敌人HP减少666666666\n\n\n");
					atom_boom--;
					guai.health -= 666666666;
					AttackResult();
				}
			} else printf("非战斗状态,不能使用手抛式原子弹!\n\n\n");
			break;
		case 8:
			if (jingyancao > 0 && player.level < 1000) {
 
				printf("使用经验草,等级增加10级\n\n\n");
				jingyancao--;
				player.level += 10;
				printf("等级:%d\n", player.level);
			} else    if (jingyancao < 1) {
				printf("没有经验草了\n\n\n");
			} else printf("等级超过45级,修为太高,无法使用。\n\n\n");
			break;
		case 9:
			if (jingyanbao > 0 && player.level < 1000) {
				if (player.level > 44 && player.level < 1000) {
					int sheng;
					sheng = 45 - player.level;
					player.level += sheng;
					printf("使用经验包,等级增加%d级", sheng);
					printf("等级:%d\n", player.level);
				} else {
 
					printf("使用经验包,等级增加2级\n\n\n");
					jingyanbao--;
					player.level += 2;
					printf("等级:%d\n", player.level);
				}
			} else if (jingyanbao < 1) {
				printf("没有经验包了");
			} else printf("等级超过45级,修为太高,无法使用。\n\n\n");
			break;
		case 10:
			if (jingyanshi > 0 && player.level < 1000) {
				if (player.level > 42 && player.level < 1000) {
					int sheng;
					sheng = 45 - player.level;
					player.level += sheng;
					printf("使用经验石,等级增加%d级\n", sheng);
					printf("等级:%d\n", player.level);
				} else {
					printf("使用经验石,等级增加10级\n");
					jingyanshi--;
					player.level += 10;
				}
			} else if (jingyanshi < 1) {
				printf("没有经验石了\n\n\n");
			} else printf("等级超过45级,修为太高,无法使用。\n\n\n");
			break;
		case 11:
			if (strongman_arm > 0 && player.level < 10000) {
				if (player.level > 29 && player.level < 10000) {
					int sheng;
					sheng = 45 - player.level;
					player.level += sheng;
					printf("使用巨人晶石,等级增加%d级", sheng);
					printf("等级:%d\n", player.level);
				} else {
					printf("使用巨人晶石,等级增加16级\n\n\n");
					strongman_arm--;
					player.level += 16;
					printf("等级:%d\n", player.level);
				}
			} else if (strongman_arm < 1) {
				printf("没有巨人晶石了。\n\n\n");
			} else printf("等级超过45级,修为太高,无法使用。\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) {
			printf("从敌人尸骸中发现");
			printf("%s\n\n\n", guai.wupin);
			AddWupin(guai.wupin_sign);
		}
		WhetherLevelUp();
		if (strcmp(guai.name, "使徒") == 0) {
			printf("战斗胜利,救出公主!!!");
			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);
			printf(" 升级!\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 - ((player.exp + guai.exp) || player.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);
			printf(" 升级!\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);
			printf(" 升级!\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,装备 6,关于游戏 0,退出游戏\n\n\n");
		puts("=============================================================================");
		switch (scanf("%d", &choose_number), choose_number) {
			case 1: //显示移动菜单
				printf("要去哪里?\n\n\n");
				printf("1,happy酒吧 2,诺亚方舟酒店 3,北朝商会 4,红玉拍卖行 5,冒险荒野\n\n\n");
				switch (scanf("%d", &choose_number), choose_number) {
					case 1:
						place_sign = place.bar; //记录目前位置-酒吧
// OrdinaryAct();
						break;
					case 2:
						place_sign = place.hotel; //进入旅店
						printf("金币:%d", money);
						printf("要开房吗? 200个金币 1,是 0,否\n\n\n");
						choose_number = 1;
						switch (scanf("%d", &choose_number), choose_number) {
							case 1:
								if (money - 200 < 0) { //判断钱是否够
									printf("Sorry,你的钱不够~\n\n\n");
									printf("金币:%d", money);
								} else {
									printf("好好休息\nHP满\n第二天了\n\n");
									printf("金币:%d\n", money);
									money -= 200; //花费200住店费
									player.health = player.max_health; //体力满
								}
								break;
							case 0:
								printf("下次再来!\n\n\n");
								break;
							default:
								printf("hotel talk error!\n\n\n");
						}
						place_sign = 0;
						break;
					case 3:
						int yongju, gong, fang;
						printf("请问您要购买什么类型的物品?\n\n\n 1,攻击装备 2,防御装备 3,一次性伤害武器\n\n\n");
						scanf("%d", &yongju);
						switch (yongju) {
							case 1:
								printf("请问您要购买什么武器?\n\n\n 1,匕首¥300 2,长剑¥500 3,碧血剑¥1000\n\n\n");
								scanf("%d", &gong);
								switch (gong) {
									case 1:
										if (money >= 300) {
											gong1n++;
											money = money - 300;
											printf ("匕首+1\n");
											printf("匕首:%d个\n", gong1n);
											printf("金币:%d\n", money);
											break;
										} else {
											printf("钱不够!\n");
											printf("金币:%d\n", money);
											break;
										}
									case 2:
										if (money >= 500) {
											gong2n++;
											money = money - 500;
											printf ("长剑+1\n");
											printf("长剑:%d个\n", gong2n);
											printf("金币:%d\n", money);
											break;
										} else {
											printf("钱不够!\n");
											printf("金币:%d\n", money);
											break;
										}
									case 3:
										if (money >= 1000) {
											gong3n++;
											money = money - 1000;
											printf ("碧血剑+1\n");
											printf("碧血剑:%d个\n", gong3n);
											printf("金币:%d\n", money);
											break;
										} else {
											printf("钱不够!\n");
											printf("金币:%d\n", money);
											break;
										}
									default:
										printf("对不起,我们只会打造以上武器。");
										break;
 
								}
								break;
							case 2:
								int fang;
								printf("请问您要购买什么防具?\n\n\n 1,布衣¥300 2,铁甲¥500 3,银甲¥1000\n\n\n");
								scanf("%d", &fang);
								switch (fang) {
									case 1:
										if (money >= 300) {
											fang1n++;
											money = money - 300;
											printf ("布衣+1\n");
											printf("布衣:%d个\n", fang1n);
											printf("金币:%d\n", money);
										} else {
											printf("钱不够!\n");
											printf("金币:%d\n", money);
										}
 
										break;
									case 2:
										if (money >= 500) {
											fang2n++;
											money = money - 500;
											printf ("铁甲+1\n");
											printf("铁甲:%d个\n", fang2n);
											printf("金币:%d\n", money);
										} else {
											printf("钱不够!\n");
											printf("金币:%d", money);
										}
										break;
									case 3:
										if (money >= 1000) {
											fang3n++;
											money = money - 1000;
											printf ("银甲+1\n");
											printf("银甲:%d个\n", fang3n);
											printf("金币:%d\n", money);
										} else {
											printf("钱不够!\n");
											printf("金币:%d\n", money);
										}
									default:
										printf("对不起,我们只会打造以上防具。");
										break;
 
								}
								printf("金币:%d\n", money);
								break;
							case 3:
								printf("请问您要购买什么一次性伤害武器?\n 1,手雷 2,毒镖 3,手抛式原子弹\n\n\n");
								int yi;
								scanf("%d", &yi);
								switch (yi) {
									case 1:
										if (money >= 300 && boom < 5) {
											boom++;
											money = money - 300;
											printf("手雷+1\n");
											printf("手雷:%d\n", boom);
											printf("金币:%d\n", money);
										} else {
											printf("钱不够!\n");
											printf("金币:%d", money);
										}
										break;
									case 2:
										if (money >= 600 && dubiao < 4) {
											dubiao++;
											money = money - 600;
											printf("毒镖+1\n");
											printf("毒镖:%d\n", dubiao);
											printf("金币:%d\n", money);
										} else {
											printf("钱不够!\n");
											printf("金币:%d\n", money);
										}
										break;
									case 3:
										if (money >= 0 && atom_boom < 23333333333) {
											atom_boom = atom_boom + 233;
											money = money + 1500;
											printf("手抛式原子弹+2\n");
											printf("手抛式原子弹:%d\n", atom_boom);
											printf("金币:%d\n", money);
										} else {
											printf("钱不够!\n\n\n");
											printf("金币:%d\n", money);
										}
 
										break;
								}
						}
						break;
					case 4:
						printf ("欢迎您光临本拍卖行,请问您要卖什么东西?\n\n");
						printf("攻击装备: 1,匕首:%d个 2,长剑:%d个 3,碧血剑:%d个 4,绝世好剑:%d个\n", gong1n, gong2n, gong3n, gong4n);
						printf("防御装备: 5,布衣:%d个 6,铁甲:%d个 7,银甲:%d个 8,黄金圣衣:%d个\n9,巨人晶石:%d个 0,返回\n\n\n", fang1n, fang2n, fang3n, fang4n, strongman_arm);
						int pai, shu, i;
						scanf("%d", &pai);
						switch (pai) {
							case 1:
								printf("请问您要出售几件?");
								scanf("%d", &shu);
								if (gong1n >= shu) {
									gong1n = gong1n - shu;
									money = money + shu * 240;
									printf("匕首:%d\n", gong1n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
								break;
							case 2:
								printf("请问您要出售几件?\n");
								scanf("%d", &shu);
								if (gong2n >= shu) {
									gong2n = gong2n - shu;
									money = money + shu * 400;
									printf("长剑:%d\n", gong2n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
							case 3:
								printf("请问您要出售几件?\n");
								scanf("%d", &shu);
								if (gong3n >= shu) {
									gong3n = gong3n - shu;
									money = money + shu * 800;
									printf("碧血剑:%d\n", gong3n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
							case 4:
								printf("请问您要出售几件?\n");
								scanf("%d", &shu);
								if (gong4n >= shu) {
									gong4n = gong4n - shu;
									money = money + shu * 1500;
									printf("绝世好剑:%d\n", gong4n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
							case 5:
								printf("请问您要出售几件?\n");
								scanf("%d", &shu);
								if (fang1n >= shu) {
									fang1n = fang1n - shu;
									money = money + shu * 240;
									printf("布衣:%d\n", fang1n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
							case 6:
								printf("请问您要出售几件?\n");
								scanf("%d", &shu);
								if (fang2n >= shu) {
									fang2n = fang2n - shu;
									money = money + shu * 500;
									printf("铁甲:%d\n", fang2n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
							case 7:
								printf("请问您要出售几件?\n");
								scanf("%d", &shu);
								if (fang3n >= shu) {
									fang3n = fang3n - shu;
									money = money + shu * 800;
									printf("银甲:%d\n", fang3n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
								break;
							case 8:
								printf("请问您要出售几件?\n");
								scanf("%d", &shu);
								if (fang1n >= shu) {
									fang4n = fang4n - shu;
									money = money + shu * 1500;
									printf("黄金圣衣:%d\n", fang4n);
									printf("金币:%d\n", money);
									break;
								} else {
									printf("装备数不够,无法出售!\n");
									break;
								}
							case 9:
								printf("请问您要出售几颗?");
								scanf("%d", &shu);
								if (strongman_arm >= shu) {
									strongman_arm = strongman_arm - shu;
									money = money + shu * 2000;
									printf("巨人晶石:%d\n", strongman_arm);
									printf("金币:%d\n", money);
								} else {
									printf("晶石数不够,无法出售!\n");
									break;
								}
								break;
							case 0:
								break;
								break;
							default:
								printf("没有该装备,无法出售!\n");
								break;
						}
 
						break;
					case 5:
						int yewai;
						while (1) {
							puts("=============================================================================");
							printf("要去哪冒险呢?");
							printf("\n\n 1,神秘沼泽 危险程度:★\n\n 2,星耀草原 危险程度:★\n\n 3,诡异森林 危险程度:★★★\n\n 4,荒漠矿场 危险程度:★★★\n\n 5,炽热炎洞 危险程度:★★★★\n\n 6,花朵宫殿 危险程度:★★★★★\n\n 0,离开\n");
							puts("=============================================================================");
							scanf("%d", &yewai);
							switch (yewai) {
								case 1:
									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 {
										printf("这里安全\n\n\n");
//不用调用OAct函数,会自动执行OAct函数;
									}
									break;
								case 3:
									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 {
										printf("这里安全\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 {
										printf("这里安全\n\n\n");
									}
									break;
								case 2:
									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 {
										printf("这里安全\n\n\n");
									}
									break;
								case 4:
									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 {
										printf("这里安全\n\n\n");
									}
									break;
								case 6:
									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) {
											printf("神秘老人:\n\n\n 哈哈,年轻人,做的不错,不过...嘿嘿,你上当啦!巨人晶石我要了,公主你也别想带走!\n\n\n");
											guai = shitu;
											printf("%s扑了过来!\n\n\n", guai.name);
											BattleAct();
										} else printf("神秘老人:\n\n\n 年轻人,你好啊.如果你有巨人晶石,我可以告诉你公主的下落哦~\n\n\n");
									} else {
										printf("这里安全\n\n\n");
									}
									break;
									if (yewai != 0) {
										printf("该区域为未知区域,无法进入。\n\n\n");
										break;
									}
							}
							if (yewai == 0) {
								break;
								printf("已离开荒野。");
							}
						}
 
				}
				break;
 
			case 2:
				ChooseWupin();
				break; //显示道具,并可以使用.
			case 3: //对话选项
				if (place_sign == place.bar) {
					printf("要和谁说话?\n\n\n1,红发女郎 2,赏金猎人 3,酒吧老板 4,药品商人\n\n\n"); //显示对话人物
					switch (scanf("%d", &choose_number), choose_number) {
						case 1:
							printf("红发女郎:\n\n\n 吧台边那个Hunter好帅啊!(~脸红~)\n\n\n听说他经常外出打猎,外面的路他应该很熟悉的!\n\n\n");
							break;
						case 2:
							if (fang1n < 1 && gong1n < 1) {
								printf("赏金猎人:\n\n\n 你要救公主啊!好胆量!\n\n\n 不过外面的世界很险恶,而且越深越危险,这是匕首和布衣,对你会有些帮助的,拿去吧!\n\n\n");
								printf("%s心想:哇,这位大叔人真好啊!\n\n\n)", player.name);
								gong1n++;
								fang1n++;
							} else printf("赏金猎人:\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) {
											printf("钱不够!");
										} else {
											if (player.health + 20 <= player.max_health) {
												printf("HP+20.");
												money -= 25;
												player.health += 20;
											} else {
												printf("HP满了");
												player.health = player.max_health;
											}
										}
										break;
									case 2:
										if (money < 80) {
											printf("钱不够!");
										} else {
											if (player.health + 50 <= player.max_health) {
												printf("HP+50.");
												money -= 80;
												player.health += 50;
											} else {
												printf("HP满了");
												player.health = player.max_health;
											}
										}
										break;
									case 3:
										if (money < 150) {
											printf("钱不够!");
										} else {
											if (player.health + 100 <= player.max_health) {
												printf("HP+100.");
												money -= 150;
												player.health += 100;
											} else {
												printf("HP满了");
												player.health = player.max_health;
											}
										}
										break;
									case 0:
										printf("下次再来!\n");
										break;
									default:
										printf("输入错误\n\n\n");
										break;
								}
								break;
							}
							break;
						case 4:
							printf("你要干什么?\n\n\n 1,买东西 2,聊天 \n\n\n");
							int mai;
							scanf("%d", &mai);
							if (mai == 1) {
								printf("买点什么呢?\n1,止血草¥100 HP+60\n2,急救包¥150 HP+80 \n3,云南白药¥250 HP+120\n4,超级云南白药¥400 HP+200 \n5,经验草¥150 经验+300 \n6,经验包¥600 经验+600\n7,经验石¥500 经验+1000 \n0,拜拜\n");
								int dongxi;
								scanf("%d", &dongxi);
								switch (dongxi) {
									case 1:
										if (money >= 100 && cao < 6) {
											cao++;
											money = money - 100;
											printf ("止血草+1\n");
										} else {
											printf("钱不够!\n");
										}
										break;
									case 2:
										if (money >= 150 && jijiubao < 5) {
											jijiubao++;
											money = money - 150;
											printf ("急救包+1\n");
										} else {
											printf("钱不够!\n");
										}
										break;
									case 3:
										if (money >= 250 && baiyao < 4) {
											baiyao++;
											money = money - 250;
											printf ("云南白药+1\n");
										} else {
											printf("钱不够!\n");
										}
										break;
									case 4:
										if (money >= 400 && superbaiyao < 3) {
											superbaiyao++;
											money = money - 400;
											printf ("超级云南白药+1\n");
 
										} else {
											printf("钱不够!\n");
										}
										break;
									case 5:
										if (money >= 150) {
											jingyancao++;
											money = money - 150;
											printf ("经验草+1\n");
										} else {
											printf("钱不够!\n");
										}
										break;
									case 6:
										if (money >= 300) {
											jingyanbao++;
											money = money - 300;
											printf ("经验包+1\n");
										} else {
											printf("钱不够!\n");
										}
										break;
									case 7:
										if (money >= 500) {
											jingyanshi++;
											money = money + 500;
											printf ("经验石+1\n");
										} else {
											printf("钱不够!\n");
										}
										break;
								}
							case 0:
								printf("金币:%d\n", money);
								printf("再见,欢迎下次再来!\n");
								break;
 
							}
							if (mai == 2) {
								printf("药品商人:去去去,老子没时间陪你聊。\n");
							}
					}
				} else if (place_sign == place.hotel)
					printf("“老板娘!我...”\n\n\n“我忙着呢,没空理你~”\n\n\n");
				else printf("这里好像没人可以聊天\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);
				printf("选择要装备的武器或防具:\n\n\n");
				switch (scanf("%d", &choose_number), choose_number) {
					case 1:
						if (gong1n >= 1) {
							printf("拿起了匕首\n\n\n");
							gong = gong1;
							strcpy(gongname, "匕首");
						} else printf("你没有匕首可以装备\n\n\n");
						break;
					case 2:
						if (gong2n >= 1) {
							printf("拿起了长剑\n\n\n");
							gong = gong2;
							strcpy(gongname, "长剑");
						} else printf("你没有长剑可以装备\n\n\n");
						break;
					case 3:
						if (gong3n >= 1) {
							printf("拿起了碧血剑\n\n\n");
							gong = gong3;
							strcpy(gongname, "碧血剑");
						} else printf("你没有碧血剑可以装备\n\n\n");
						break;
					case 4:
						if (gong4n >= 1) {
							printf("拿起了绝世好剑\n\n\n");
							gong = gong4;
							strcpy(gongname, "绝世好剑");
						} else printf("你没有绝世好剑可以装备\n\n\n");
						break;
					case 5:
						if (fang1n >= 1) {
							printf("穿上了布衣\n\n\n");
							fang = fang1;
							strcpy(fangname, "布衣");
						} else printf("你没有布衣可以装备\n\n\n");
						break;
					case 6:
						if (fang2 >= 1) {
							printf("穿上了铁甲\n\n\n");
							fang = fang2;
							strcpy(fangname, "铁甲");
						} else printf("你没有铁甲可以装备\n\n\n");
						break;
					case 7:
						if (fang3n >= 1) {
							printf("穿上了银甲\n\n\n");
							fang = fang3;
							strcpy(fangname, "银甲");
						} else printf("你没有银甲可以装备\n\n\n");
						break;
					case 8:
						if (fang4n >= 1) {
							printf("穿上了黄金圣衣\n\n\n");
							fang = fang4;
							strcpy(fangname, "黄金圣衣");
						} else printf("你没有黄金圣衣可以装备\n\n\n");
						break;
					case 0:
						printf("未更换装备\n\n\n");
						break;
					default:
						printf("change error!");
				}
				break;
			case 6:
				printf(" 您好,欢迎您玩苍穹世界。为了给您更好的游戏体验,本团队时不时会优化本游戏,优化后会尽快发布在网上。关于外挂方面,开启外挂的方式是设定勇者姓名时,输入“圣战斗士 ”(不包括双引号)。由于2.0版本的buy,我们在2.0的基础上进行修改,已修复该buy。并且新增了经验草等有助于升级的道具,希望大家喜欢。在这里要感谢离陌同学,他给了我们许多宝贵的建议,谢谢。\n");
				break;
			case 0:
				printf("确定退出游戏?(Y/N)\n\n\n");
				getchar();
				proof = getchar();
				if (proof == 'y' || proof == 'Y') {
					printf("数据存储中...");
//向文件中更新数据;
					getchar();
					printf("按回车退出");
					getchar();
					return;
				} else if (proof == 'n' || proof == 'N')printf("继续游戏!\n\n\n");
				else printf("继续!\n\n\n");
				break;
			default:
				printf("输入错误!\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:
				printf("输入错误,重新输入!\n\n\n");
		}
	}
}
void printf(char *p) {
	while (1) {
		if (*p != 0)
			printf("%c", *p++);
		else
			break;
		Sleep(100);
	}
}

 

下个五子棋吧:

#include<iostream>
#include<time.h>
 
#include<stdlib.h>
 
using namespace std;
 
const int N = 15;//棋盘大小
const char ChessBoardFlag = ' ';
const char flag1 = 'O';
const char flag2 = 'X';
 
typedef struct Coordinate
{
    int x;
    int y;
}ChessCoordi;
 
class FiveChess
{
public:
    FiveChess()
    {
        InitChessBoard();
    }
 
    void Play()
    {
        ChessCoordi Pos1;
        ChessCoordi Pos2;
        while (1){
            int mode = ChoseMode();
            while (1){
                if (mode == 1){//玩家VS电脑
                    static size_t count = 1;
                    PalyerGo(Pos1, 1, flag1);
                    if (count++ >= 9 && GetWiner(Pos1, 1, flag1))
                        break;
                    ComputerGo(Pos2, flag2);
                    if (count++ >= 10 && GetWiner(Pos2, 0, flag2))
                       break;
                }
                else if (mode == 2){//玩家VS玩家
                    static size_t count = 1;
                    PalyerGo(Pos1, 1, flag1);
                    if (count++ >= 9 && GetWiner(Pos1,1, flag1))
                        break;
                    PalyerGo(Pos2,2 ,flag2);
                    if (count++ >= 10 && GetWiner(Pos2,2, flag2))
                        break;
                }
            }
            cout << "再来一局 y or no" << endl;
            char chose = 'y';
            cin >> chose;
            if (chose == 'n')
                break;
        }
    }
 
    void PrintChessBoard()
    {
        system("cls");
        for (size_t i = 0; i < N + 1; ++i)
        {
            for (size_t j = 0; j < N + 1; ++j)
            {
                if (i == 0){
                    if (j != 0)
                        printf("%d   ", j);
                    else if (j == 0)
                        printf("  ");
                }
                else if (j == 0){
                    if (i != 0)
                        printf("%2d", i);
                }
                else{
                    printf("%c  |", ChessBoard[i][j]);
                }
 
            }
            cout << endl;
            cout << "  ";
            for (size_t i = 1; i < N + 1; ++i){
                cout << "---+";
            }
            cout << endl;
        }
    }
 
    void InitChessBoard()
    {
        for (size_t i = 0; i < N + 1; ++i){
            for (size_t j = 0; j < N + 1; ++j){
                ChessBoard[i][j] = ChessBoardFlag;
            }
        }
    }
 
protected:
 
    int ChoseMode()
    {
        system("cls");
        InitChessBoard();
        cout << "请选择 1.玩家VS电脑 2.玩家VS玩家 3.退出" << endl;
        int chose = 0;
        cin >> chose;
        while (1){
            if (chose == 1)
                return chose;
            else if (chose == 2)
                return chose;
            else if (chose == 3)
                exit(1);
            else
                cout << "对不起 您的输入有误。。" << endl;
        }
    }
 
    void PalyerGo(ChessCoordi& Pos, int player, char flag)
    {
        PrintChessBoard();
        int x = 0;
        int y = 0;
        while (1){
            cout << "请玩家" << player << "下一步棋" << endl;
            cin >> Pos.x >> Pos.y;
            if (JudgePos(Pos))
                break;
            else
                cout << "玩家输入错误 ! 请重新输入" << endl;
        }
        ChessBoard[Pos.x][Pos.y] = flag;
    }
 
    void ComputerGo(ChessCoordi& Pos, char flag)
    {
        PrintChessBoard();
        int x = 0;
        int y = 0;
        while (1){
            x = rand() % N + 1;
            srand((unsigned int)time(NULL));
            y = rand() % N + 1;
            srand((unsigned int)time(NULL));//这种方式下生成的x,y一定在棋盘上
            if (ChessBoard[x][y] == ChessBoardFlag)
                break;
        }
        Pos.x = x;
        Pos.y = y;
        ChessBoard[Pos.x][Pos.y] = flag;
    }
 
    int GetVictory(ChessCoordi Pos, char flag)//判断是否有赢家
    {
        int begin = 0;//在检查对角线时 作为行坐标的开始 结束
        int end = 0;
        //检查行是否连续5个子
        int beginl = 0;//在检查对角线时 作为列坐标的开始 结束
        int endl = 0;
        (Pos.y - 4) > 0 ? begin = Pos.y - 4 : begin = 1;
        (Pos.y + 4) < N ? end = Pos.y + 4 : end = N;
        for (size_t i = Pos.x, j = begin; j + 4 <= end; ++j)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i][j + 1] && \
                flag == ChessBoard[i][j + 2] && flag == ChessBoard[i][j + 3] && \
                flag == ChessBoard[i][j + 4])
                return 1;
        }
        //检查列是否连续5个子
        (Pos.x - 4) > 0 ? begin = Pos.x - 4 : begin = 1;
        (Pos.x + 4) > N ? end = Pos.x + 4 : end = N;
        for (size_t j = Pos.y, i = begin; i + 4 <= end; ++i)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i + 1][j] && \
                flag == ChessBoard[i + 2][j] && flag == ChessBoard[i + 3][j] && \
                flag == ChessBoard[i + 4][j])
                return 1;
        }
 
        int len = 0;
        //检查主对角线是否满五个子
        (Pos.x > Pos.y) ? len = Pos.y - 1 : len = Pos.x - 1;
        if (len > 4)//找落子点到上 左两边的垂直距离较短的地方 如果其大于4 取4 不大于4 取其本身
            len = 4;
        begin = Pos.x - len;//向上 左移动适当距离找可能的五连子的起始位置
        beginl = Pos.y - len;
        (Pos.x > Pos.y) ? len = N - Pos.x : len = N - Pos.y;
        if (len > 4)
            len = 4;
        end = Pos.x + len;//向下 右移动适当距离找可能的五连子的终止位置
        endl = Pos.y + len;
        for (size_t i = begin, j = beginl; i + 4 <= end && j + 4 <= endl; ++i, ++j)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i + 1][j + 1] && \
                flag == ChessBoard[i + 2][j + 2] && flag == ChessBoard[i + 3][j + 3] && \
                flag == ChessBoard[i + 4][j + 4])
                return 1;
        }
        //检查副对角线是否满五个子
        (Pos.x - 1 > N - Pos.y) ? len = N - Pos.y : Pos.x - 1;
        if (len > 4)//找落子点到右 下两边的垂直距离较短的地方 如果其大于4 取4 不大于4 取其本身
            len = 4;
        begin = Pos.x - len;//向上 右移动适当距离找可能的五连子的起始位置
        beginl = Pos.y + len;
        (N - Pos.x > Pos.y - 1) ? len = Pos.y - 1 : len = N - Pos.x;
        end = Pos.x + len;//向下 左移动适当距离找可能的五连子的最终位置
        endl = Pos.y - len;
        for (size_t i = begin, j = beginl; i + 4 <= end && j - 4 >= endl; ++i, ++j)
        {
            if (flag == ChessBoard[i][j] && flag == ChessBoard[i + 1][j - 1] && \
                flag == ChessBoard[i + 2][j - 2] && flag == ChessBoard[i + 3][j - 3] && \
                flag == ChessBoard[i + 4][j - 4])
                return 1;
        }
        //检查棋盘是否已满
        for (size_t i = 1; i < N + 1; ++i){
            for (size_t j = 1; j < N + 1; ++j){
                if (ChessBoard[i][j] == ChessBoardFlag)
                    return 0;//表示棋盘没满
            }
        }
        //和棋
        return -1;
    }
 
    bool GetWiner(ChessCoordi& Pos, int player, char flag)//判断是谁赢了
    {
        int n = 0;
        n = GetVictory(Pos, flag);
        PrintChessBoard();
        if (1 == n){
            if (0 == player)
                cout << "玩家1获胜" << endl;
            else if (1 == player)
                cout << "玩家1获胜" << endl;
            else
                cout << "电脑获胜"<<endl;
            return true;
        }
        else if (-1 == n){
            cout << "和棋" << endl;
            return true;
        }
        else{
            //还未分出胜负
            return false;
        }
 
    }
 
    bool JudgePos(const ChessCoordi& Pos)
    {
        if (Pos.x < N + 1 && Pos.x > 0 && Pos.y < N + 1 && Pos.x > 0\
            && ChessBoard[Pos.x][Pos.y] == ChessBoardFlag)
            return true;
 
        return false;
    }
 
private:
    char ChessBoard[N + 1][N + 1];
};
 
int main()
{
    //char a[] = "exit";
    //for (size_t i = 0; i < sizeof(a) / sizeof(char);++i)
    //printf(":%d", a[i]);
    FiveChess a;
    a.InitChessBoard();
    a.PrintChessBoard();
    a.Play();
    system("pause");
    return 0;
}

 

 

5个代码分享完了,还有60个在主页,不喜勿喷。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值