Logo 李凌宇的博客

博客

2048有点慢,但能直接按上下左右运行(上)

2024-02-17 08:28:36 By 李凌宇
#include<iostream>
#include<conio.h>
#include<cstdlib>
#include<ctime>
#include<cstdio>
#include<windows.h>
#include<cstring>
#include<iomanip>

using namespace std;
int arr[4][4];
int score = 0;
const int ROW_COUNT = 4;
const int COL_COUNT = ROW_COUNT;

#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3

bool check();

void copy_col(int);

void copy_row(int);

void delete_space_by_paste_to_col(int, int);

void delete_space_by_paste_to_row(int, int);

void do_test_merge();

void mergeDown();

void mergeLeft();

void mergeRight();

void mergeUp();

bool check() {
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            if (arr[i][j] == 0) {
                return true;
            }
        }
    }
    return false;
}

void mergeLeft() {
    for (int i = 0; i < 4; i++) {
        copy_row(i);
        delete_space_by_paste_to_row(i, LEFT);
        for (int j = 0; j < 3; j++) {
            if (arr[i][j] != 0 && arr[i][j] == arr[i][j + 1]) {
                arr[i][j] *= 2;
                score += arr[i][j];
                arr[i][j + 1] = 0;
            }
        }
        copy_row(i);
        delete_space_by_paste_to_row(i, LEFT);
    }
}

void mergeRight() {
    for (int i = 0; i < 4; i++) {
        copy_row(i);
        delete_space_by_paste_to_row(i, RIGHT);
        for (int j = 3; j > 0; j--) {
            if (arr[i][j] != 0 && arr[i][j] == arr[i][j - 1]) {
                arr[i][j] *= 2;
                score += arr[i][j];
                arr[i][j - 1] = 0;
            }
        }
        copy_row(i);
        delete_space_by_paste_to_row(i, RIGHT);

    }
}

void mergeUp() {
    for (int c = 0; c < 4; c++) {
        copy_col(c);
        delete_space_by_paste_to_col(c, UP);
        for (int r = 0; r < 3; r++) {
            if (arr[r][c] != 0 && arr[r][c] == arr[r + 1][c]) {
                arr[r][c] *= 2;
                score += arr[r][c];
                arr[r + 1][c] = 0;
            }
        }
        copy_col(c);
        delete_space_by_paste_to_col(c, UP);
    }
}

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。