如何编程游戏,scratch编程小游戏教程视频( 五 )


如何学习入门的游戏编程 一个用C++编程的小游戏,可以实现的功能如下:
1、随机生成数字;
2、数字消除合并;
3、判定游戏结束;
一、游戏主体: 
【如何编程游戏,scratch编程小游戏教程视频】因为用C++写的,所以用了类,棋盘用了一个二维数组,m是棋盘规格,取了4 。
class game
{
public:
    int i, j;
    game() {
        count1 = 0;
        for (i = 0; i < m; i++)
            for (j = 0; j < m; j++)
                chessboard[i][j] = 0;
        srand((unsigned)time(NULL));
        x = rand() % m;
        y = rand() % m;
        if (count1 == 1 || count1 == 0)
            chessboard[x][y] = 2;
        else
            chessboard[x][y] = 4;
        showchessboard();
    }//构造初始棋盘
    void add(int count1);//新增数字
    void showchessboard();//显示棋盘
    void up();
    void down();
    void left();
    void right();
    bool gameover();//游戏失败
private:
    int chessboard[m][m];
    int x, y, count1, count2, temp1, temp2, k;//c1-连消,c2-空位标记,t1-判连消,t2,k-临时变量
    bool flag;//判消
};
二、随机生成数字
void game::add(int count1)
{
    for (i = 0; i < m; i++)
        for (j = 0; j < m; j++)
        {
            if (chessboard[i][j] == 0)
                goto loop;
        }
    showchessboard();
    return;
loop:srand((unsigned)time(NULL));
    do {
        x = rand() % m;
        y = rand() % m;
    } while (chessboard[x][y] != 0);
    if (count1 < 2)
        chessboard[x][y] = 2;
    else
        chessboard[x][y] = 4;
    showchessboard();
}
三、数字消除合并

void game::up()
{
    temp1 = count1;
    flag = false;
    for (j = 0; j < m; j++)
        for (i = 0; i < m;)
        {
            for (; i < 4 && chessboard[i][j] == 0; i++); // 找非零值
            if (i == 4)
                break;
            else
            {
                for (k = i + 1; k < 4 && chessboard[k][j] == 0; k++);//找下一个非零值
                if (k == 4)
                    break;
                else if (chessboard[i][j] == chessboard[k][j])//匹配
                {
                    chessboard[i][j] *= 2;
                    chessboard[k][j] = 0;

推荐阅读