欢迎光临散文网 会员登陆 & 注册

给你们个c语言源代码不用谢

2023-07-29 20:07 作者:曲曲蛐蛐儿  | 我要投稿

#include <stdio.h>

int main ()

{

int screen[9][11]={

    {0,1,1,1,1,1,1,1,1,0,0},

    {0,1,0,0,0,1,0,0,0,1,0},

    {0,1,0,2,2,2,2,2,0,1,0},

    {0,1,0,2,0,2,0,2,0,1,1},

    {0,1,0,0,0,3,0,0,2,0,1},

    {1,1,0,1,1,1,1,0,2,0,1},

    {1,0,4,4,4,4,4,1,0,0,1},

    {1,0,4,4,4,4,4,0,0,1,1},

    {1,1,1,1,1,1,1,1,1,1,0}

};//定义为全局变量 (地图) i表示行,j表示列


int cum(){

    int i,j,k=0;

    for(i=0;i<9;i++){

        for(j=0;j<11;j++){

            if(screen[i][j]==2){

                k++;

            }

        }

    }//遍历整个二维数组

    return k;

}//计算地图中有多少个终点

\

void print(){

    int i,j;

    printf("请用wsad代表上下左右来进行游戏\n");

    for(i=0;i<9;i++){

        for(j=0;j<11;j++){

            switch(screen[i][j]){

                case 0:

                    printf("  ");//空

                    break;

                case 1:

                    printf("■");//墙

                    break;

                case 2:

                    printf("★");//箱子

                    break;

                case 3:

                    printf("♀");//人

                    break;

                case 4:

                    printf("○");//终点

                    break;

                case 6:

                    printf("★");

                    break;//箱子和终点

                case 7:

                    printf("♀");

                    break;

            }

        }

        printf("\n");

    }

}


int win(){

    int i,j,k=0;

    int t=0;

    for(i=0;i<9;i++){

        for(j=0;j<11;j++){

            if(screen[i][j]==6){

                k++;

            }

        }

    }//遍历整个二维数组,计算箱子在终点上的个数

    if(k==cum()){

    t=1;

    }//如果个数等于前面计算出的终点个数,则说明所有终点都放了箱子,说明游戏胜利

    return t;

} //判断赢


int lose(){

    int i,j;

    int k=0;

    for(i=0;i<9;i++){

        for(j=0;j<11;j++){

            if(i>0 && j>0 ){    

            if(screen[i][j] == 2 || screen[i][j] == 6){

                if(((screen[i-1][j] == 1 || screen[i-1][j] == 2 || screen[i-1][j] == 6) && (screen[i][j-1] == 1 || screen[i][j-1] == 2 || screen[i][j-1] == 6))

                || ((screen[i][j-1] == 1 || screen[i][j-1] == 2 || screen[i][j-1] == 6) && (screen[i+1][j] == 1 || screen[i+1][j] == 2 || screen[i+1][j] == 6))

                || ((screen[i+1][j] == 1 || screen[i+1][j] == 2 || screen[i+1][j] == 6) && (screen[i][j+1] == 1 || screen[i][j+1] == 2 || screen[i][j+1] == 6))

                || ((screen[i][j+1] == 1 || screen[i][j+1] == 2 || screen[i][j+1] == 6) && (screen[i-1][j] == 1 || screen[i-1][j] == 2 || screen[i-1][j] == 6))){

                    k++;

                }

            }

        }

        }/*这里也是遍历了整个数组,判断所有的箱子四个方向的情况,

        如果有三个方向被堵住了说明箱子无法移动了,也表明这个箱子失效了,

        用k来记录失效的个数,当全部失效时游戏失败

        (这是游戏的玩法,其实有一个被堵住就已经不可能胜利了)*/

    }

    if(k==cum()){

        k=1;

    }

    return k;//返回1说明游戏失败

}


void movew(){

    if(x>0){

        if(screen[x-1][y]==1){

            return ;/*如果箱子的上面是墙,则地图不会发生变化,因为

            推不动嘛*/

        }else if(screen[x-1][y]==0){

            screen[x-1][y]+=3;

            screen[x][y]-=3;

            x--;/*如果前面是空地,则需要向前移动一格,也就是原先人的位置

            变成空地,前方的空地变成人,空地(0)变成人(3)需要加3,

            人变成空地需要减3*/

        }else if(screen[x-1][y]==4){

            screen[x-1][y]+=3;

            screen[x][y]-=3;

            x--;

        }//一样的

        else if(screen[x-1][y]==2||screen[x-1][y]==6){

                if(screen[x-2][y]==0){

                    screen[x-2][y]+=2;//箱子前面的格变成箱子(2)

                    screen[x-1][y]+=1;//箱子的位置变成人(3)

                    screen[x][y]-=3;/*如果前面是空地,则需要向前移动

                    一格,也就是原先是箱子的格子变成人,人的位置变成空

                    地,原先的空地变成箱子,箱子(2)变成人(3)需要减

                    3,空地变成人*/

                    x--;

                }else if(screen[x-2][y]==1){

                    return ;

                }else if(screen[x-2][y]==2){

                return;//如果箱子的前面是墙或者其他的箱子,则箱子推不动

                }else if(screen[x-2][y]==4){

                    screen[x-2][y]+=2;

                    screen[x-1][y]+=1;

                    screen[x][y]-=3;

                    x--;

                }//这个情况别漏了

            }

    }

}


void moves(){

    if(x<9){

        if(screen[x+1][y]==1){

            return ;

        }else if(screen[x+1][y]==0){

            screen[x+1][y]+=3;

            screen[x][y]-=3;

            x++;

        }else if(screen[x+1][y]==4){

            screen [x+1][y]+=3;

            screen[x][y]-=3;

            x++;

        }

        else if(screen[x+1][y]==2||screen[x+1][y]==6){

                if(screen[x+2][y]==1){

                    return;

                }else if(screen[x+2][y]==0){

                    screen[x+2][y]+=2;

                    screen[x+1][y]+=1;

                    screen[x][y]-=3;

                    x++;

                }else if(screen[x+2][y]==2){

                    return ;

                }else if(screen[x+2][y]==4){

                    screen[x+2][y]+=2;

                    screen[x+1][y]+=1;

                    screen[x][y]-=3;

                    x++;

                    }

                }

            }

}


void movea(){

    if(y>0){

    if(screen[x][y-1]==1){

        return;

    }else if(screen[x][y-1]==4){

        screen[x][y-1]+=3;

        screen[x][y]-=3;

        y--;

    }

    else if(screen[x][y-1]==0){

        screen[x][y-1]+=3;

        screen[x][y]-=3;

        y--;

    }else if(screen[x][y-1]==2||screen[x][y-1]==6){

            if(screen[x][y-2]==0){

                screen[x][y-2]+=2;

                screen[x][y-1]+=1;

                screen[x][y]-=3;

                y--;

            }else if(screen[x][y-2]==1){

                return;

            }else if(screen[x][y-2]==2){

                return;

            }else if(screen[x][y-2]=4){

                screen[x][y-2]+=2;

                screen[x][y-1]+=1;

                screen[x][y]-=3;

                y--;

            }

        }

}

}

void moved(){

    if(y<9){

        if(screen[x][y+1]==1){

            return;

        }else if(screen[x][y+1]==4){

            screen[x][y+1]+=3;

            screen[x][y]-=3;

            y++;

        }

        else if(screen[x][y+1]==0){

            screen[x][y+1]+=3;

            screen[x][y]-=3;

            y++;

        }else

            if(screen[x][y+1]==2||screen[x][y+1]==6){

                if(screen[x][y+2]==0){

                    screen[x][y+2]+=2;

                    screen[x][y+1]+=1;

                    screen[x][y]-=3;

                    y++;

                }else if(screen[x][y+2]==4){

                    screen[x][y+2]+=2;

                    screen[x][y+1]+=1;

                    screen[x][y]-=3;

                    y++;

                }else if(screen[x][y+2]==2){

                    return;

                }else if(screen[x][y+2]==1){

                    return;

                }

            }

        

    }

}

int main(){

    int n,t;

    int j,k;

    int b=1;

    here:

        system("cls");//

    printf("开始游戏请按1\n退出游戏请按2\n");

    scanf("%d",&j);

    if(j==1){

    printf("请用wsad代表上下左右来进行游戏\n");//这个就引导进入游戏

    while(1){

        system("cls");/*在每一次移动过后都清除上一个地图,不然就会每走

        一步生成一个图*/

        print();//先打印地图

        scanf("%c",&n);//读入用户的操作

        switch(n){

            case 'w':

                movew();

                break;

            case 's':

                moves();

                break;

            case 'a':

                movea();

                break;

            case 'd':

                moved();

                break;

        } //控制人移动

        t=win();

        if(t==1){

        goto there;

    }//每次操作完先判断游戏是否胜利,如果胜利了直接跳到函数最后

    if(b == lose()){

        system("cls");

        print();

        printf("游戏失败");

        return 0;

    } //游戏失败提示

}

}else {

    system("cls");

    printf("您确认要退出游戏吗\n确认退出按1\t返回上一层按2\n");

    scanf("%d",&k);

        if(k==1){

            printf("你已退出游戏,期待你的再次到来,谢谢");

            return 0;

        }else {

            goto here;

        }

}//这一块是最前面用户进入游戏那里的,如果用户选择退出游戏执行的操作

    there:

        printf("恭喜你通过了游戏!");

    return 0;

}//主函数

return 0;

}  


给你们个c语言源代码不用谢的评论 (共 条)

分享到微博请遵守国家法律