<pre name="code" class="cpp">#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <cstdio>
#include <windows.h>
using namespace std;
int num[4][4];
int a[4][4];
bool test();
int main() {
char again = 'a';
int theHighestScore;
FILE *fp;
fp = fopen("E:\\record.txt", "r");
int i = fread(&theHighestScore, sizeof(int), 1, fp);
if (i == 0) {
theHighestScore = 0;
}
fclose(fp);
while (again != ' ') {
bool endWay = true;
int t = 0;
int score = 0;
int end = 1;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
num[i][j] = 0;
}
}
num[rand() % 4][rand() % 4] = 2;
while (end != 2048) {
//以下是每次移动就出现一个二
system("cls");
cout << "\t\t2048" << endl;
cout << "\t\tScore:" << score << endl;
cout << "\t\tThe highest score:" << theHighestScore << endl;
cout << "**********************************************" << endl;
int x = rand() % 4;
int y = rand() % 4;
int n = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (num[i][j]) {
n++;
}
}
}
if (n != 16) {
while (num[x][y]) {
x = rand() % 4;
y = rand() % 4;
}
int ran = rand() % 5;
//百分之20的几率出现4,百分之80出现2(没搞清楚2048的2和4是以什么比例形式出现的,就随便设计了)
if (t == 1) {
if (ran >= 0 && ran <= 3) {
num[x][y] = 2;
}
else {
num[x][y] = 4;
}
t = 0;
}
}
<span style="white-space:pre"> </span>//输出图形
printf ("\t┏━━┳━━┳━━┳━━┓\n");
for (int i = 0; i < 4; i++) {
printf("\t┃");
for (int j = 0; j < 4; j++) {
if (num[i][j]) {
printf("%4d┃", num[i][j]);
}
else {
printf(" ┃");
}
}
printf("\n");
if (i == 3) {
printf ("\t┗━━┻━━┻━━┻━━┛\n");
}
else {
printf ("\t┣━━╋━━╋━━╋━━┫\n");
}
}
char ch = _getch();
//移动(这里的算法想复杂了,应该可以简化)
if (ch == 'w') {
for (int j = 0; j < 4; j++) {
for (int i = 3; i >= 1; i--) {
if (num[i][j] != 0 && num[i - 1][j] == 0) {
num[i - 1][j] = num[i][j];
num[i][j] = 0;
t = 1;
}
}
for (int i = 3; i >= 1; i--) {
if (num[i][j] != 0 && num[i - 1][j] == 0) {
num[i - 1][j] = num[i][j];
num[i][j] = 0;
t = 1;
}
}
for (int i = 3; i >= 1; i--) {
if (num[i][j] != 0 && num[i - 1][j] &
用C++语言实现小游戏2048
最新推荐文章于 2022-03-13 17:10:40 发布