#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);
}
}
2048有点慢,但能直接按上下左右运行(上)
2024-02-17 08:28:36 By 李凌宇
评论
暂无评论
发表评论
可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。