推箱子,推推推(课程设计)

来源:互联网 发布:hdmi能传输数据么 编辑:程序博客网 时间:2024/04/29 12:23

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int vicWIN(char Map[10][10])
{
    int N,M;
    for(N=0; N!=10; N++)
        for(M=0; M!=10; M++)
        {
            if(Map[N][M]==79||Map[N][M]==37)
                {
                return 0;}
                else if(N==9&&M==9)
                    return 1;

        }
}
int WIN()
{
    char a;
    while(1){
    printf("you win!!!\n是否进入下一关?\n");
    printf("任意键继续");
    a=getch();
    if(a!='*'){
    system("cls");
    break;}}
    return 1;
}

int Move(char map[10][10],int i,int j)
{
    int k,n,m,i_=i,j_=j;
    char move,ymap[10][10];
    for(n=0;n!=10;n++)
        for(m=0;m!=10;m++)
        ymap[n][m]=map[n][m];//保留原始图
    while(1)
    {
        for(n=0;n!=10;n++){
    for(m=0;m!=10;m++)
        printf("%c",map[n][m]);
        printf("\n");}
        move=getch();
        //移动处理//
        if(move=='d')
        {
            if(map[i][j]==37&&map[i][j+1]==32)
        {
            map[i][j]=79;
            map[i][j+1]=36;
            j=j+1;
        }
            else if(map[i][j+1]==32)
            {
                map[i][j]=32;
                map[i][j+1]=36;
                j=j+1;
            }
else if(map[i][j+1]==79&&map[i][j]!=37)
{
                map[i][j]=32;
                map[i][j+1]=37;
                j=j+1;
        }
else if(map[i][j+1]==79&&map[i][j]==37)
{
                map[i][j]=79;
                map[i][j+1]=37;
                j=j+1;
        }
else if(map[i][j+1]==97)
{
if(map[i][j+2]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j+1]=36;
                map[i][j+2]=97;
                j=j+1;

              }

else if(map[i][j+2]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j+1]=36;
                map[i][j+2]=64;
                j=j+1;
}}
else if(map[i][j+1]==64)
{
if(map[i][j+2]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j+1]=37;
                map[i][j+2]=97;
                j=j+1;
}
else if(map[i][j+2]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j+1]=37;
                map[i][j+2]=64;
                j=j+1;
}
}}
else if(move=='a')
        {if(map[i][j]==37&&map[i][j-1]==32)
        {
            map[i][j]=79;
            map[i][j-1]=36;
            j=j-1;
        }
            else
            if(map[i][j-1]==32)
            {
                map[i][j]=32;
                map[i][j-1]=36;
                j=j-1;
            }
else if(map[i][j-1]==79&&map[i][j]!=37)
{
                map[i][j]=32;
                map[i][j-1]=37;
                j=j-1;
        }
else if(map[i][j-1]==79&&map[i][j]==37)
{
                map[i][j]=79;
                map[i][j-1]=37;
                j=j-1;
        }
else if(map[i][j-1]==97)
{
if(map[i][j-2]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j-1]=36;
                map[i][j-2]=97;
                j=j-1;

      }

else if(map[i][j-2]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j-1]=36;
                map[i][j-2]=64;
                j=j-1;
}}
else if(map[i][j-1]==64)
{
if(map[i][j-2]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j-1]=37;
                map[i][j-2]=97;
                j=j-1;
}
else if(map[i][j-2]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i][j-1]=37;
                map[i][j-2]=64;
                j=j-1;
}}
}
  else if(move=='w')
        {if(map[i][j]==37&&map[i-1][j]==32)
        {
            map[i][j]=79;
            map[i-1][j]=36;
            i=i-1;
        }
            else
            if(map[i-1][j]==32)
            {
                map[i][j]=32;
                map[i-1][j]=36;
                i=i-1;
            }
else if(map[i-1][j]==79&&map[i][j]!=37)
{
                map[i][j]=32;
                map[i-1][j]=37;
                i=i-1;
        }
else if(map[i-1][j]==79&&map[i][j]==37)
{
                map[i][j]=79;
                map[i-1][j]=37;
                i=i-1;
        }
else if(map[i-1][j]==97)
{
if(map[i-2][j]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i-1][j]=36;
                map[i-2][j]=97;
                i=i-1;
}

else if(map[i-2][j]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i-1][j]=36;
                map[i-2][j]=64;
                i=i-1;
}}
else if(map[i-1][j]==64)
{
if(map[i-2][j]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i-1][j]=37;
                map[i-2][j]=97;
                i=i-1;
}
else if(map[i-2][j]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i-1][j]=37;
                map[i-2][j]=64;
                i=i-1;
}
}}
    else if(move=='s')
        {if(map[i][j]==37&&map[i+1][j]==32)
        {
            map[i][j]=79;
            map[i+1][j]=36;
            i=i+1;
        }
            else
            if(map[i+1][j]==32)
            {
                map[i][j]=32;
                map[i+1][j]=36;
                i=i+1;
            }
else if(map[i+1][j]==79&&map[i][j]!=37)
{
                map[i][j]=32;
                map[i+1][j]=37;
                i=i+1;
        }
else if(map[i+1][j]==79&&map[i][j]==37)
{
                map[i][j]=79;
                map[i+1][j]=37;
                i=i+1;
        }
else if(map[i+1][j]==97)
{
if(map[i+2][j]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i+1][j]=36;
                map[i+2][j]=97;
                i=i+1;

          }

else if(map[i+2][j]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i+1][j]=36;
                map[i+2][j]=64;
                i=i+1;
}}
else if(map[i+1][j]==64)
{
if(map[i+2][j]==32)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i+1][j]=37;
                map[i+2][j]=97;
                i=i+1;
}
else if(map[i+2][j]==79)
{
   if(map[i][j]==36)
                map[i][j]=32;
   else
                map[i][j]=79;
                map[i+1][j]=37;
                map[i+2][j]=64;
                i=i+1;
}
}}
            else if(move=='r'||'R')//想要重新开始的方法
                {i=i_,j=j_;
                    for(n=0;n!=10;n++)
                        for(m=0;m!=10;m++)
                        map[n][m]=ymap[n][m];//将原图重新赋给已经变化的图
                }

    system("cls");

                    k=vicWIN(map);


if(k==1)
    break;
}
return k;
}
void T5()
{
    int I=5,J=3,IF,B;
    char map1[10][10]={{35,35,35,35,35,35,35,35,32,32},
                       {35,35,32,32,32,32,35,35,32,32},
                       {35,35,79,35,35,97,32,35,32,32},
                       {35,32,79,79,97,32,32,35,32,32},
                       {35,32,32,35,97,32,32,35,32,32},
                       {35,32,32,36,32,35,35,35,32,32},
                       {35,32,35,35,35,35,32,32,32,32},
                       {32,32,32,32,32,32,32,35,32,32},
                       {32,35,32,32,32,32,35,32,35,32},
                       {32,32,32,32,32,32,32,32,32,32}};
    IF=Move(map1,I,J);
    if(IF==1)
        B=WIN();
    if(B==1)
        printf("end");
    return;
}
void T4()
{
    int I=5,J=2,IF,B;
    char map1[10][10]={{35,35,35,35,35,32,32,32,32,32},
                       {35,32,32,32,35,35,35,35,35,32},
                       {35,32,35,32,35,32,32,32,35,32},
                       {35,32,97,32,32,32,97,32,35,32},
                       {35,79,79,35,97,35,97,35,35,32},
                       {35,79,36,97,32,32,32,35,32,32},
                       {35,79,79,32,32,35,35,35,32,32},
                       {35,35,35,35,35,35,35,35,32,32},
                       {35,35,35,35,35,32,32,32,32,32},
                       {32,32,32,32,32,32,32,32,32,32}};
    IF=Move(map1,I,J);
    if(IF==1)
        B=WIN();
    if(B==1)
        T5();
    return;
}
void T3()
{
    int I=5,J=5,IF,B;
    char map1[10][10]={{35,32,32,35,35,35,35,32,32,32},
                       {35,35,35,35,32,32,35,32,32,32},
                       {35,35,32,32,97,32,35,32,32,32},
                       {35,32,79,97,79,32,35,32,32,32},
                       {35,32,32,32,35,32,35,35,32,32},
                       {35,35,79,35,79,36,32,35,32,32},
                       {35,32,97,32,32,97,32,35,32,32},
                       {35,32,32,32,35,35,35,35,32,32},
                       {35,35,35,35,35,32,32,32,32,32},
                       {32,32,32,32,32,32,32,32,32,32}};
    IF=Move(map1,I,J);
    if(IF==1)
        B=WIN();
    if(B==1)
        T4();
    return;
}
void T2()
{
    int I=4,J=8,IF,B;
    char map1[10][10]={{35,35,35,35,35,35,35,35,35,35},
                       {35,32,32,35,35,35,35,35,35,35},
                       {35,35,35,35,32,32,32,32,35,35},
                       {35,35,79,32,97,35,35,32,35,35},
                       {35,79,79,97,32,97,32,32,36,35},
                       {35,79,79,32,97,32,97,32,35,35},
                       {35,35,35,35,35,35,32,32,35,35},
                       {35,32,32,32,32,35,35,35,35,35},
                       {35,35,35,35,35,35,35,35,35,35},
                       {35,35,35,35,35,35,35,35,35,35}};
    IF=Move(map1,I,J);
    if(IF==1)
        B=WIN();
    if(B==1)
        T3();
    return;
}
void T1()
{
    int I=7,J=7,IF,B;
    char map1[10][10]={{35,35,35,35,35,35,35,35,35,35},
                       {35,32,32,32,35,35,32,35,35,35},
                       {35,32,35,97,35,79,32,35,35,35},
                       {35,32,32,32,32,32,32,32,79,35},
                       {35,32,32,35,35,32,35,32,32,35},
                       {35,32,97,35,35,32,35,97,35,35},
                       {35,32,32,32,32,32,35,32,32,35},
                       {35,35,35,35,32,79,35,36,32,35},
                       {35,35,35,35,35,35,35,35,35,35},
                       {35,35,35,35,35,35,35,35,35,35}};
    IF=Move(map1,I,J);
    if(IF==1)
        B=WIN();
    if(B==1)
        T2();
    return;
}

int main()
{
    char change;
    while (1)
    {
        printf("                               推箱子\n");
        printf("你需要把代表箱子的a推到O中去使之成为@,当你无法行动时可以按R键重新开始本关\n");
        printf("W是向上,S是向下,A是向左,D是向右。按任意键开始\n");
        change=getch();
        if(change!='*');
        {
            system("cls");
            T1();
            break;
        }

    }
    return 0;
}
啊啊啊啊!我不敢看!

0 0
原创粉丝点击