新游戏2048
2025-07-05 16:46:13
发布于:广东
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
using namespace std;
#define ll long long
const int N = 4;
int mp[N+1][N+1];
bool flag;
void bnew(){
int x = rand()%4+1,y=rand()%4+1,z=(rand()%2+1)*2;
while(mp[x][y])x = rand()%4+1,y=rand()%4+1;
mp[x][y] = z;
return;
}void print(){
int cnt = 0;
system("cls");
for(int i=1;i<=N;i++){
for(int j=1;j<=N;j++){
printf("%4d ",mp[i][j]),cnt+=mp[i][j];
if(mp[i][j]==2048)flag = 1;
}cout << endl;
}cout << "当前分数:"<<cnt << endl;
return ;
}bool empty(){
for(int i=1;i<=N;i++){
for(int j=1;j<=N;j++){
if(!mp[i][j]){
return 0;
}
}
}return 1;
}void mup(){
for(int j=1;j<=N;j++){
for(int i=N-1;i>=1;i--){
if(mp[i][j]==mp[i+1][j])mp[i][j] *= 2,mp[i+1][j] = 0;
else if(!mp[i][j])swap(mp[i][j],mp[i+1][j]);
}
}for(int j=1;j<=N;j++){
for(int i=N-1;i>=1;i--){
if(!mp[i][j])swap(mp[i][j],mp[i+1][j]);
}
}
return ;
}void mdown(){
for(int j=1;j<=N;j++){
for(int i=2;i<=N;i++){
if(mp[i][j]==mp[i-1][j])mp[i][j] *= 2,mp[i-1][j] = 0;
else if(!mp[i][j])swap(mp[i][j],mp[i-1][j]);
}
}for(int j=1;j<=N;j++){
for(int i=2;i<=N;i++){
if(!mp[i][j])swap(mp[i][j],mp[i-1][j]);
}
}
return ;
}void mleft(){
for(int i=1;i<=N;i++){
for(int j=N-1;j>=1;j--){
if(mp[i][j]==mp[i][j+1])mp[i][j] *= 2,mp[i][j+1] = 0;
else if(!mp[i][j])swap(mp[i][j],mp[i][j+1]);
}
}for(int i=1;i<=N;i++){
for(int j=N-1;j>=1;j--){
if(!mp[i][j])swap(mp[i][j],mp[i][j+1]);
}
}
}void mright(){
for(int i=1;i<=N;i++){
for(int j=2;j<=N;j++){
if(mp[i][j]==mp[i][j-1])mp[i][j] *= 2,mp[i][j-1] = 0;
else if(!mp[i][j])swap(mp[i][j],mp[i][j-1]);
}
}for(int i=1;i<=N;i++){
for(int j=2;j<=N;j++){
if(!mp[i][j])swap(mp[i][j],mp[i][j-1]);
}
}
}int main(){
srand(time(0));
while(1){
bnew();
print();
char input = getch();
if(input == 'w')mup();
if(input == 'a')mleft();
if(input == 's')mdown();
if(input == 'd')mright();
if(empty()||flag)break;
}if(flag)cout << "你合成了2048,恭喜胜利"<<endl;
else cout << "格子满了,游戏结束"<<endl;
return 0;
}
胜利条件:合成2048
由于上学繁忙一直没发新游戏,请谅解
参与制作:#include 「欢愉」花火
全部评论 4
可以做个小游戏大全了(
2025-07-05 来自 广东
0%%%
2025-07-05 来自 广东
0我目前最高合成256,分数416太难了,主包都完成不了2048
你们可以吗2025-07-05 来自 广东
0最高合成512,分数936,已经燃尽了
2025-07-05 来自 广东
04天前 来自 浙江
0
啊啊啊好好玩啊
2025-07-04 来自 广东
0
有帮助,赞一个