盛文seven 2024-10-19 21:52
浏览 9

怎么改2048的代码


#include<bits/stdc++.h>
using namespace std;
int tu[4][4];
bool k=0;
bool f=0;
void xianshi(){
    bool f=0;
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            if(tu[i][j]==tu[i][j+1]){
                f=1;
                break;
            }
            if(tu[i][j]==tu[i+1][j]){
                f=1;
                break;
            }
            if(j>0){
                if(tu[i][j]==tu[i][j-1]){
                    f=1;
                    break;
                }
            }
            if(i>0){
                if(tu[i][j]==tu[i-1][j]){
                    f=1;
                    break;
                }
            }
        }
        if(f==1){
            break;
        }
    }
    bool k=0;
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
            if(tu[i][j]==2048){
                k=1;
            }
            cout<<tu[i][j]<<"    ";
        }
        cout<<'\n';
    }
    if(f==0){
        cout<<"game over !!!!!";
        return;
    }
    if(k==1){
        cout<<"you win !!!!!!!!!!";
        return;
    }
}
void yidong(char x){
    if(x=='w'){
        for(int i=1;i<4;i++){
            for(int j=0;j<4;j++){
                if(tu[i][j]!=0){
                    int a=i;
                    while(a>0){
                        a--;
                        if(tu[a][j]==0){
                            if(a==0){
                                tu[a][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else continue;
                        }
                        else{
                            if(tu[a][j]==tu[i][j]){
                                tu[a][j]=tu[a][j]+tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else{
                                tu[a+1][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
    if(x=='s'){
        for(int i=2;i>=0;i--){
            for(int j=0;j<4;j++){
                if(tu[i][j]!=0){
                    int a=i;
                    while(a<3){
                        a++;
                        if(tu[a][j]==0){
                            if(a==3){
                                tu[a][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else continue;
                        }
                        else{
                            if(tu[a][j]==tu[i][j]){
                                tu[a][j]=tu[a][j]+tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else{
                                tu[a-1][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
    if(x=='a'){
        for(int j=1;j<4;j++){
            for(int i=0;i<4;i++){
                if(tu[i][j]!=0){
                    int b=j;
                    while(b>0){
                        b--;
                        if(tu[b][j]==0){
                            if(b==0){
                                tu[b][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else continue;
                        }
                        else{
                            if(tu[b][j]==tu[i][j]){
                                tu[b][j]=tu[b][j]+tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else{
                                tu[b+1][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
    if(x=='d'){
        for(int j=2;j>=0;j--){
            for(int i=0;i<4;i++){
                if(tu[i][j]!=0){
                    int b=j;
                    while(b<3){
                        b++;
                        if(tu[b][j]==0){
                            if(b==3){
                                tu[b][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else continue;
                        }
                        else{
                            if(tu[b][j]==tu[i][j]){
                                tu[b][j]=tu[b][j]+tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                            else{
                                tu[b-1][j]=tu[i][j];
                                tu[i][j]=0;
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
}
int main(){
    srand((unsigned)time(NULL));
    cout<<"2048:输入'w s a d'分别对应'上下左右'控制方向"; 
    while(1==1){
        int chux,chuy;
        while(1==1){
               int chux=rand()%4,chuy=rand()%4;
               if(tu[chux][chuy]==0){
                  break;
            }
        }
           if(chux%2!=0){
              tu[chux][chuy]=2;
        }
        else{
            tu[chux][chuy]=4;
        }
        xianshi();
        if(f==0){
            return 0;
        }
        if(k==1){
            return 0;
        }
        char fang;
        cin>>fang;
        if(fang=='w'){
            yidong('w');
        }
        else if(fang=='s'){
            yidong('s');
        }
        else if(fang=='a'){
            yidong('a');
        }
        else if(fang=='d'){
            yidong('d');
        }
        else{
            cout<<"输错了";
            return 0;
        }
    }
    return 0;
}

各位万能的程序员,我想写一个2048的小游戏,但以上代码运行后出现:

img

请问该如何解决呢?
谢谢!!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 创建了问题 10月19日

    悬赏问题

    • ¥15 fastreport怎么判断当前页数
    • ¥15 Kylin-Desktop-V10-GFB-Release-JICAI_02- 2207-Build14-ARM64.iso有没有这个版本的系统啊
    • ¥15 能不能通过蓝牙将传感器数据传送到手机上
    • ¥20 100元python和数据科学实验项目
    • ¥15 根据时间在调用出列表
    • ¥15 R 包chipseeker 安装失败
    • ¥15 Veeam Backup & Replication 9.5 还原问题
    • ¥15 vue-print-nb
    • ¥15 winfrom的datagridview下拉框变成了黑色,渲染不成功
    • ¥20 利用ntfy实现短信推送