0
增加了
1.自选行数
2.游戏结束
凌夏在2025-12-02 19:17:11追加了内容
#include<bits/stdc++.h>
#include<cstdio>
#include<time.h>
#include<windows.h>
using namespace std;
int a[100][100],n;
string s;
void leftmove(){
int cnt=20;
while(cnt--){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0 && a[i][j+1]!=0){
swap(a[i][j],a[i][j+1]);
}
}
}
}
cnt=20;
while(cnt--){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==a[i][j+1] && a[i][j]!=0){
a[i][j]=a[i][j]*2;
a[i][j+1]=0;
}
}
}
}
cnt=20;
while(cnt--){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0 && a[i][j+1]!=0){
swap(a[i][j],a[i][j+1]);
}
}
}
}
while(1){
int t1=rand()%n+1;
Sleep(1);
int t2=rand()%n+1;
Sleep(1);
if(!a[t1][t2]){
a[t1][t2]=rand()%2+1;
Sleep(1);
break;
}
}
}
void rightmove(){
int cnt=20;
while(cnt--){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0 && a[i][j-1]!=0){
swap(a[i][j],a[i][j-1]);
}
}
}
}
cnt=20;
while(cnt--){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==a[i][j-1] && a[i][j]!=0){
a[i][j]=a[i][j]*2;
a[i][j-1]=0;
}
}
}
}
cnt=20;
while(cnt--){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0 && a[i][j-1]!=0){
swap(a[i][j],a[i][j-1]);
}
}
}
}
while(1){
int t1=rand()%n+1;
Sleep(1);
int t2=rand()%n+1;
Sleep(1);
if(!a[t1][t2]){
a[t1][t2]=rand()%2+1;
Sleep(1);
break;
}
}
}
void upmove(){
int cnt=20;
while(cnt--){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
if(a[i][j]==0 && a[i+1][j]!=0){
swap(a[i][j],a[i+1][j]);
}
}
}
}
cnt=20;
while(cnt--){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
if(a[i][j]==a[i+1][j] && a[i][j]!=0){
a[i][j]=a[i][j]*2;
a[i+1][j]=0;
}
}
}
}
cnt=20;
while(cnt--){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
if(a[i][j]==0 && a[i+1][j]!=0){
swap(a[i][j],a[i+1][j]);
}
}
}
}
while(1){
int t1=rand()%n+1;
Sleep(1);
int t2=rand()%n+1;
Sleep(1);
if(!a[t1][t2]){
a[t1][t2]=rand()%2+1;
Sleep(1);
break;
}
}
}
void downmove(){
int cnt=20;
while(cnt--){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
if(a[i][j]==0 && a[i-1][j]!=0){
swap(a[i][j],a[i-1][j]);
}
}
}
}
cnt=20;
while(cnt--){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
if(a[i][j]==a[i-1][j] && a[i][j]!=0){
a[i][j]=a[i][j]*2;
a[i-1][j]=0;
}
}
}
}
cnt=20;
while(cnt--){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
if(a[i][j]==0 && a[i-1][j]!=0){
swap(a[i][j],a[i-1][j]);
}
}
}
}
while(1){
int t1=rand()%n+1;
Sleep(1);
int t2=rand()%n+1;
Sleep(1);
if(!a[t1][t2]){
a[t1][t2]=rand()%2+1;
Sleep(1);
break;
}
}
}
int main(){
//for(int i=1;i<=5;i++){
// for(int j=1;j<=5;j++){
// cin>>a[i][j];
// }
//}
cout<<"2048小游戏\n输入地图大小(n*n):";
cin>>n;
cout<<"\n请用w,a,s,d控制\nw:上移\na:左移\ns:下移\nd:右移\n输入start开始";
string start;
cin>>start;
while(1){
for(int i=1;i<=60;i++) cout<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<setw(5)<<a[i][j];
}
cout<<endl;
}
int flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0) flag=1;
}
}
if(flag==0){
int maxn=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
maxn=max(maxn,a[i][j]);
}
}
cout<<"游戏结束\n最高纪录:"<<maxn;
return 0;
}
cin>>s;
if(s=="a") leftmove();
else if(s=="d") rightmove();
else if(s=="w") upmove();
else if(s=="s") downmove();
else{
cout<<"操作不合法,重新输入";
Sleep(1500);
}
}
return 0;
}
