| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1436 人关注过本帖
标题:初学者,用目前学到的知识自己动手编了个小游戏,算是复习吧,期间发现了几 ...
只看楼主 加入收藏
HolyDumpling
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-10-28
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:5 
初学者,用目前学到的知识自己动手编了个小游戏,算是复习吧,期间发现了几个问题想找人问一下
问题一:本来我想把各个游戏关卡分的判断模块和显示模块分散到单独的函数里,那样可读性应该会好很多,但是需要传递的变量太多,每个棋子都是单独的变量,返回值只能有一个,我不会弄,就放弃了
问题二:现在学的所有东西,都是自上而下顺序执行的,不能回到之前。我想把游戏改进一下,比如游戏进行到第二关了,操作步数过多,提示游戏失败,然后退回到第一关。ABCDE顺序执行,从E做判断跳转到B函数,接着执行BCDE,再来一次判断跳转到D函数。就像HTML里面的铆点和超链接,可以任意在一个函数之内或多个函数之间任意跳转。
这是游戏的灵感来源:http://www.

********************游戏说明********************
1.输入一个棋子的横纵坐标,按回车键确定;
2.该棋子及其上下左右相邻的棋子都会翻转;
3.将棋盘的所有棋子都由‘M’翻转为‘Q’即为过关

暂时就是这两个问题,应该怎么做呢?

程序代码:
#include<stdio.h>
#include<process.h>
int yun(int m);
void shuoming();
int main()
{
    int n=1,x,y,m1=77,m2=77,m3=77,m4=77,m5=77,m6=77,m7=77,m8=77,m9=77;                    //定义1~25棋子变量
    int m10=77,m11=77,m12=77,m13=77,m14=77,m15=77,m16=77,m17=77,m18=77,m19=77;            //本来想把各个关卡的判断部分做成单独的函数,游戏显示界面共用main函数,但是传递的变量太多,返回值只能有一个,所以放弃了。
    int m20=77,m21=77,m22=77,m23=77,m24=77,m25=77;                                        //看到一个词“数组”,还没开始学,据说可以用数组把所有数据整合到一个变量里面返回?
    shuoming();
    do{                                                                                    //游戏第一关开始
    printf("**************************\n*第%d步 *  1  *  2  *  3  *\n**************************\n",n);        //游戏界面
    printf("*      *     *     *     *\n*  1   *  %c  *  %c  *  %c  *\n*      *     *     *     *\n**************************\n",m1,m2,m3);
    printf("*      *     *     *     *\n*  2   *  %c  *  %c  *  %c  *\n*      *     *     *     *\n**************************\n",m4,m5,m6);
    printf("*      *     *     *     *\n*  3   *  %c  *  %c  *  %c  *\n*      *     *     *     *\n**************************\n",m7,m8,m9);
    scanf("%d",&x);
    y=x%10;
    x=x/10;
    if (n>19)
    {
        printf("步数太多啦,游戏失败!重新试试吧!\n");//怎么才能做出n>20则提示“游戏失败”,并初始化游戏呢?
        exit(0);

    }
    else if(x==1)                                        //逻辑判断模块,第一行
    {
        if (y==1){m1=yun(m1);m2=yun(m2);m4=yun(m4);}    //如果定位在第一列,那么改变一号,三号,四号位置的字母
        else if(y==2){m1=yun(m1);m2=yun(m2);m3=yun(m3);m5=yun(m5);}
        else if(y==3){m2=yun(m2);m3=yun(m3);m6=yun(m6);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==2)
    {
        if (y==1){m1=yun(m1);m4=yun(m4);m5=yun(m5);m7=yun(m7);}
        else if(y==2){m2=yun(m2);m4=yun(m4);m5=yun(m5);m6=yun(m6);m8=yun(m8);}
        else if(y==3){m3=yun(m3);m5=yun(m5);m6=yun(m6);m9=yun(m9);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==3)
    {
        if (y==1){m4=yun(m4);m7=yun(m7);m8=yun(m8);}
        else if(y==2){m5=yun(m5);m7=yun(m7);m8=yun(m8);m9=yun(m9);}
        else if(y==3){m6=yun(m6);m8=yun(m8);m9=yun(m9);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else {printf("输入错误,请重新输入!\n");}
    n++;
    }while(m1!=81 || m2!=81 || m3!=81 || m4!=81 || m5!=81 || m6!=81 || m7!=81 || m8!=81 || m9!=81);            //当所有棋子全部翻转为Q则退出循环
    printf("**************************\n*第%d步 *  1  *  2  *  3  *\n**************************\n",n);        //输出过关图
    printf("*      *     *     *     *\n*  1   *  %c  *  %c  *  %c  *\n*      *     *     *     *\n**************************\n",m1,m2,m3);
    printf("*      *     *     *     *\n*  2   *  %c  *  %c  *  %c  *\n*      *     *     *     *\n**************************\n",m4,m5,m6);
    printf("*      *     *     *     *\n*  3   *  %c  *  %c  *  %c  *\n*      *     *     *     *\n**************************\n",m7,m8,m9);
    printf("恭喜过关!!!!!!\n稍作休息,挑战下一关吧!\n");
    n=1,m1=81,m2=77,m3=77,m4=81,m5=77,m6=81,m7=81,m8=77,m9=77,m10=81,m11=81,m12=77,m13=81,m14=77,m15=77,m16=81;            //定义第二关变量,基本结构与第一关相同
    do{
    printf("********************************\n*第%d步 *  1  *  2  *  3  *  4  *\n********************************\n",n);
    printf("*      *     *     *     *     *\n*  1   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m1,m2,m3,m4);
    printf("*      *     *     *     *     *\n*  2   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m5,m6,m7,m8);
    printf("*      *     *     *     *     *\n*  3   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m9,m10,m11,m12);
    printf("*      *     *     *     *     *\n*  4   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m13,m14,m15,m16);
    scanf("%d",&x);
    y=x%10;
    x=x/10;
    if (n>50)
    {
        printf("步数太多啦,游戏失败!重新试试吧!\n");                            //怎么才能从这一步回到到游戏第一关?
        exit(0);
    }
    else if(x==1)
    {
        if (y==1){m1=yun(m1);m2=yun(m2);m5=yun(m5);}
        else if(y==2){m1=yun(m1);m2=yun(m2);m3=yun(m3);m6=yun(m6);}
        else if(y==3){m2=yun(m2);m3=yun(m3);m4=yun(m4);m7=yun(m7);}
        else if(y==4){m4=yun(m4);m3=yun(m3);m8=yun(m8);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==2)
    {
        if (y==1){m1=yun(m1);m5=yun(m5);m6=yun(m6);m9=yun(m9);}
        else if(y==2){m2=yun(m2);m5=yun(m5);m6=yun(m6);m7=yun(m7);m10=yun(m10);}
        else if(y==3){m3=yun(m3);m6=yun(m6);m7=yun(m7);m8=yun(m8);m11=yun(m11);}
        else if(y==4){m4=yun(m4);m7=yun(m7);m12=yun(m12);m8=yun(m8);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==3)
    {
        if (y==1){m10=yun(m10);m5=yun(m5);m13=yun(m13);m9=yun(m9);}
        else if(y==2){m6=yun(m6);m9=yun(m9);m10=yun(m10);m11=yun(m11);m14=yun(m14);}
        else if(y==3){m7=yun(m7);m10=yun(m10);m11=yun(m11);m12=yun(m12);m15=yun(m15);}
        else if(y==4){m8=yun(m8);m11=yun(m11);m12=yun(m12);m16=yun(m16);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==4)
    {
        if (y==1){m9=yun(m9);m13=yun(m13);m14=yun(m14);}
        else if(y==2){m10=yun(m10);m13=yun(m13);m14=yun(m14);m15=yun(m15);}
        else if(y==3){m11=yun(m11);m14=yun(m14);m15=yun(m15);m16=yun(m16);}
        else if(y==4){m12=yun(m12);m15=yun(m15);m16=yun(m16);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else {printf("输入错误,请重新输入!\n");}
    n++;
    }while(m1!=81 || m2!=81 || m3!=81 || m4!=81 || m5!=81 || m6!=81 || m7!=81 || m8!=81 || m9!=81 || m10!=81 || m11!=81 || m12!=81 || m13!=81 || m14!=81 || m15!=81 || m16!=81);
    printf("********************************\n*第%d步 *  1  *  2  *  3  *  4  *\n********************************\n",n);
    printf("*      *     *     *     *     *\n*  1   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m1,m2,m3,m4);
    printf("*      *     *     *     *     *\n*  2   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m5,m6,m7,m8);
    printf("*      *     *     *     *     *\n*  3   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m9,m10,m11,m12);
    printf("*      *     *     *     *     *\n*  4   *  %c  *  %c  *  %c  *  %c  *\n*      *     *     *     *     *\n********************************\n",m13,m14,m15,m16);
    printf("恭喜过关!!!!!!\n再挑战一关就可以看到奖励咯!\n");
    n=1,m1=77,m2=77,m3=81,m4=77,m5=77,m6=77,m7=77,m8=81,m9=77,m10=77,m11=77,m12=77,m13=77,m14=77,m15=77,m16=77,m17=77,m18=77,m19=77,m20=77,m21=77,m22=77,m23=77,m24=77,m25=77;
    do{
    printf("***************************************\n*第%d步 *  1  *  2  *  3  *  4  *  5  *\n***************************************\n",n);
    printf("*       *     *     *     *     *     *\n*   1   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m1,m2,m3,m4,m5);
    printf("*       *     *     *     *     *     *\n*   2   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m6,m7,m8,m9,m10);
    printf("*       *     *     *     *     *     *\n*   3   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m11,m12,m13,m14,m15);
    printf("*       *     *     *     *     *     *\n*   4   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m16,m17,m18,m19,m20);
    printf("*       *     *     *     *     *     *\n*   5   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m21,m22,m23,m24,m25);
    scanf("%d",&x);
    y=x%10;
    x=x/10;
    if (n>98)
    {
        printf("步数太多啦,游戏失败!重新试试吧!\n");                    //怎么才能从这一步回到到游戏第一关?
        exit(0);
    }
    else if(x==1)
    {
        if (y==1){m1=yun(m1);m2=yun(m2);m6=yun(m6);}
        else if(y==2){m1=yun(m1);m2=yun(m2);m3=yun(m3);m7=yun(m7);}
        else if(y==3){m2=yun(m2);m3=yun(m3);m4=yun(m4);m8=yun(m8);}
        else if(y==4){m3=yun(m3);m4=yun(m4);m5=yun(m5);m9=yun(m9);}
        else if(y==5){m4=yun(m4);m5=yun(m5);m10=yun(m10);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==2)
    {
        if (y==1){m1=yun(m1);m6=yun(m6);m7=yun(m7);m11=yun(m11);}
        else if(y==2){m2=yun(m2);m6=yun(m6);m7=yun(m7);m8=yun(m8);m12=yun(m12);}
        else if(y==3){m3=yun(m3);m7=yun(m7);m8=yun(m8);m9=yun(m9);m13=yun(m13);}
        else if(y==4){m4=yun(m4);m8=yun(m8);m9=yun(m9);m10=yun(m10);m14=yun(m14);}
        else if(y==5){m5=yun(m5);m9=yun(m9);m10=yun(m10);m15=yun(m15);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==3)
    {
        if (y==1){m6=yun(m6);m11=yun(m11);m12=yun(m12);m16=yun(m16);}
        else if(y==2){m7=yun(m7);m11=yun(m11);m12=yun(m12);m13=yun(m13);m17=yun(m17);}
        else if(y==3){m8=yun(m8);m11=yun(m12);m12=yun(m13);m13=yun(m14);m18=yun(m18);}
        else if(y==4){m9=yun(m9);m13=yun(m13);m14=yun(m14);m15=yun(m15);m19=yun(m19);}
        else if(y==5){m10=yun(m10);m14=yun(m14);m15=yun(m15);m20=yun(m20);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==4)
    {
        if (y==1){m11=yun(m11);m16=yun(m16);m17=yun(m17);m21=yun(m21);}
        else if(y==2){m12=yun(m12);m16=yun(m16);m17=yun(m17);m18=yun(m18);m22=yun(m22);}
        else if(y==3){m13=yun(m13);m17=yun(m17);m18=yun(m18);m19=yun(m19);m23=yun(m23);}
        else if(y==4){m14=yun(m14);m18=yun(m18);m19=yun(m19);m20=yun(m20);m24=yun(m24);}
        else if(y==5){m15=yun(m15);m19=yun(m19);m20=yun(m20);m25=yun(m25);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else if(x==5)
    {
        if (y==1){m16=yun(m16);m21=yun(m21);m22=yun(m22);}
        else if(y==2){m17=yun(m17);m21=yun(m21);m22=yun(m22);m23=yun(m23);}
        else if(y==3){m18=yun(m18);m22=yun(m22);m23=yun(m23);m24=yun(m24);}
        else if(y==4){m19=yun(m19);m23=yun(m23);m24=yun(m24);m25=yun(m25);}
        else if(y==5){m20=yun(m20);m24=yun(m24);m25=yun(m25);}
        else {printf("输入错误,请重新输入!\n");}
    }
    else {printf("输入错误,请重新输入!\n");}
    n++;
    }while(m1!=81 || m2!=81 || m3!=81 || m4!=81 || m5!=81 || m6!=81 || m7!=81 || m8!=81 || m9!=81 || m10!=81 || m11!=81 || m12!=81 || m13!=81 || m14!=81 || m15!=81 || m16!=81 || m17!=81 || m18!=81 || m19!=81 || m20!=81 || m21!=81 || m22!=81 || m23!=81 || m24!=81 || m25!=81);
    printf("***************************************\n*第%d步 *  1  *  2  *  3  *  4  *  5  *\n***************************************\n",n);
    printf("*       *     *     *     *     *     *\n*   1   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m1,m2,m3,m4,m5);
    printf("*       *     *     *     *     *     *\n*   2   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m6,m7,m8,m9,m10);
    printf("*       *     *     *     *     *     *\n*   3   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m11,m12,m13,m14,m15);
    printf("*       *     *     *     *     *     *\n*   4   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m16,m17,m18,m19,m20);
    printf("*       *     *     *     *     *     *\n*   5   *  %c  *  %c  *  %c  *  %c  *  %c  *\n*       *     *     *     *     *     *\n***************************************\n",m21,m22,m23,m24,m25);
    printf("恭喜通关!\n");
    printf("源代码:http://pan.baidu.com/s/1gf0Xojh 密码:8gsc \n");
    scanf("%d",&n);                //没什么用,只是为了让程序暂停,而不是直接退出
    return 0;
}
int yun(int m)                    //运算函数,将棋子翻转
{
    if((m%10)==7)
        m=m+4;
    else
        m=m-4;
    return m;
}
void shuoming()                    //说明文档
{
    printf("********************游戏说明********************\n1.输入一个棋子的横纵坐标,按回车键确定;\n2.该棋子及其上下左右相邻的棋子都会翻转;\n3.将棋盘的所有棋子都由‘M’翻转为‘Q’即为过关;\n4.本游戏共有三关,通关即可看到程序源码\n\t\t\t\t\t by饺子\n");

}



[此贴子已经被作者于2016-11-10 11:38编辑过]

搜索更多相关主题的帖子: 小游戏 超链接 知识 
2016-11-10 11:36
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
试一下我这个,这是我一个月之前的成品,虽然我只设计了一个临时关卡(地图可以自己改)规则和你的差不多。按wsad上下左右,空格进行棋子翻转。还有,这款游戏只要知道通关点就行了(虽然复杂的破解上来要费点时间)
程序代码:
#include <stdio.h>
static int X,Y,T=1;
int main()
{
    void begin(char a[][12]);
    char a[12][12]=
    {
        "############",
        "#**      **#",
        "#*        *#",
        "#          #",
        "#          #",
        "#    o     #",
        "#          #",
        "#          #",
        "#          #",
        "#*        *#",
        "#**      **#",
        "############",
    };
    begin(a);
    printf("\n恭喜过关\n");
}
void begin(char a[][12])
{
    void run(char a[][12],char ch);
    int i,j,win;
    char ch;
    while (1)
    {
        for (i=0,win=1;i<=11&&T;i++,printf("\n"))
            for(j=0;j<=11;printf("%c",a[i][j]),j++)
            {
                if (a[i][j]=='o'||a[i][j]=='$')
                {
                    X=i;
                    Y=j;
                }
                if (a[i][j]=='*')
                    win=0;    
            }
            if (win&&T)break;  
        switch (ch=getch())
        {
            case 'w':
            case 's':
            case 'a':
            case 'd':
            case ' ':
            run(a,ch);
            break;
            default:T=0;
        }
    }          
}
void run(char a[][12],char ch)
{
    int i;
    int b[4],c[4];
    int u,v;
    u=X,v=Y;
    b[0]=X-1;c[0]=Y;
    b[1]=X+1;c[1]=Y;
    b[2]=X;c[2]=Y-1;
    b[3]=X;c[3]=Y+1;
    switch(ch)
    {
        case'w':u=X-1;v=Y;break;
        case's':u=X+1;v=Y;break;
        case'a':u=X;v=Y-1;break;
        case'd':u=X;v=Y+1;break;
    }
    if (a[u][v]!='#')
    {
        if (a[u][v]==' ')
            a[u][v]='0';
        if (a[u][v]=='*')
            a[u][v]='1';
        if (a[X][Y]=='o')
            a[X][Y]='0';
        if (a[X][Y]=='$')
            a[X][Y]='1';
        system("cls");
        T=1;    
    }
    else T=0;
    switch(a[u][v])
    {
        case'0':a[u][v]='o';break;
        case'1':a[u][v]='$';break;
    }
    switch(a[X][Y])
    {
        case'0':a[X][Y]=' ';break;
        case'1':a[X][Y]='*';break;
    }

    if (ch==' ')
    {
        for (i=0;i<=3;i++)
        {
            if (a[b[i]][c[i]]!='#')
                if (a[b[i]][c[i]]==' ')
                    a[b[i]][c[i]]='*';
                else if (a[b[i]][c[i]]='*')
                    a[b[i]][c[i]]=' ';    
        }
        if (a[X][Y]=='o')
            a[X][Y]='$';
            else a[X][Y]='o';
    }
    if (T)
    {
        X=u;
        Y=v;
    }
}


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-10 13:00
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:10 
回复 楼主 HolyDumpling
问题一:有一种变量叫全局变量。
问题二:将三个关卡分作三个子函数,并且让它返回一个值作为开关,失败就返回上一级难度,成功就进入下一关。
        主函数编写一个while循环,用if……else……调用三个子函数或者switch来调用三个子函数,通关就返回一个值跳出循环或者直接结束程序。

[此贴子已经被作者于2016-11-10 21:04编辑过]

2016-11-10 21:02
HolyDumpling
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-10-28
收藏
得分:0 
谢谢几位大神的指点,已经解决了。在第七天的最后两个小时,终于把游戏改进完了。下面是源代码大概思路就是
do{            //在程序最外面套一个循环,永远执行
    do{
         x=1;break;    //游戏犯规则赋值然后退出循环
        x=9;      //过关后赋值;
        }
    if(x!=9)   continue;    //判断是犯规导致循环结束还是过关导致游戏结束。如果是犯规,则大循环重新执行,后面也是同理;   
    do{
        游戏犯规则“x=2;break;”

        游戏过关则“x=9”}
    if(x!=9)   continue;

}while(x==1);

下面是修改后的源代码:
程序代码:
#include<stdio.h>
#include<process.h>
int yun(int m);
void caidana(int dan[26],int n);
void caidanb(int dan[26],int n);
int main()
{
    do{
    int dan[26];
    int z=26,n=1,o=1;
    char u;
    //第一关开始
    for(z=0;z<26;z++)
        dan[z]=77;
    for(;1;)
    {
        caidana(dan,n);
        scanf("%d",&z);
        fflush(stdin);
        if (n>19)
        {
                printf("游戏步数太多啦,重新开始试试吧? Y / N\n");
                scanf("%c",&u);
                fflush(stdin);
                if(u==89)
                {
                    o=1;
                    break;
                }
                    else
                    {    exit(0);}
        }
        if(z>0&&z<10)
        {
            dan[z]=yun(dan[z]);
            if(z%3==0)    dan[z-1]=yun(dan[z-1]);
            if(z%3==2)    {dan[z+1]=yun(dan[z+1]);dan[z-1]=yun(dan[z-1]);}
            if(z%3==1)    dan[z+1]=yun(dan[z+1]);
            if(z==1||z==2||z==3)    dan[z+3]=yun(dan[z+3]);
            if(z==4||z==5||z==6)    {dan[z+3]=yun(dan[z+3]);dan[z-3]=yun(dan[z-3]);}
            if(z==7||z==8||z==9)    dan[z-3]=yun(dan[z-3]);
            n=n+1;
        }
        else
        {
            printf("输入错误,请重新输入!\n");
            continue;
        }
        if(dan[1]==81 && dan[2]==81 && dan[3]==81 && dan[4]==81 && dan[5]==81 && dan[6]==81 && dan[7]==81 && dan[8]==81 && dan[9]==81)
        {
            o=9;
            break;
        }
        else   continue;
    }
    if(o!=9)    continue;
    caidana(dan,n);
    printf("恭喜过关!!!!!!\n稍作休息,挑战下一关吧!\n");
    //第二关开始
    n=1,o=2,dan[1]=81,dan[2]=77,dan[3]=77,dan[4]=81,dan[5]=77,dan[6]=81,dan[7]=81,dan[8]=77,dan[9]=77,dan[10]=81,dan[11]=81,dan[12]=77,dan[13]=81,dan[14]=77,dan[15]=77,dan[16]=81;
    for(;1;)
    {
        caidanb(dan,n);
        scanf("%d",&z);
        fflush(stdin);
        if (n>19)
        {
                printf("游戏步数太多啦,重新开始试试吧? Y / N\n");
                scanf("%c",&u);
                fflush(stdin);
                if(u==89)
                {
                    o=1;
                    break;
                }
                    else
                    {    exit(0);}
        }
        if(z>0&&z<17)
        {
            dan[z]=yun(dan[z]);
            if(z%4==0)    dan[z-1]=yun(dan[z-1]);
            if(z%4==3||z%4==2)    {dan[z-1]=yun(dan[z-1]);dan[z+1]=yun(dan[z+1]);}
            if(z%4==1)    dan[z+1]=yun(dan[z+1]);
            if(z==1||z==2||z==3||z==4)    dan[z+4]=yun(dan[z+4]);
            if(z>4&&z<13)    {dan[z+4]=yun(dan[z+4]);dan[z-4]=yun(dan[z-4]);}
            if(z==13||z==14||z==15||z==16)    dan[z-4]=yun(dan[z-4]);
            n=n+1;
        }
        else
        {
            printf("输入错误,请重新输入!\n");
            continue;
        }
            if(dan[1]==81 && dan[2]==81 && dan[3]==81 && dan[4]==81 && dan[5]==81 && dan[6]==81 && dan[7]==81 && dan[8]==81 && dan[9]==81 && dan[10]==81 && dan[11]==81 && dan[12]==81 && dan[13]==81 && dan[14]==81 && dan[15]==81 && dan[16]==81)
        {
            o=9;
            break;
        }
        else   continue;
    }
    if(o!=9)    continue;
    caidanb(dan,n);
    printf("恭喜过关!!!!!!\n再挑战一关就可以看到奖励咯!\n");
    o=3;
    }while(1);
    return 0;
}
int yun(int m)
{
    if((m%10)==7)
        m=m+4;
    else
        m=m-4;
    return m;
}
void caidana(int dan[26],int n)
{
    printf("**************************\n*第%d步*  1  *  2  *  3  *\n**************************\n",n);
    printf("*      *     *     *     *\n*  1   *  %c  *  %c  *  %c  *\n*      *   01*   02*   03*\n**************************\n",dan[1],dan[2],dan[3]);
    printf("*      *     *     *     *\n*  2   *  %c  *  %c  *  %c  *\n*      *   04*   05*   06*\n**************************\n",dan[4],dan[5],dan[6]);
    printf("*      *     *     *     *\n*  3   *  %c  *  %c  *  %c  *\n*      *   07*   08*   09*\n**************************\n",dan[7],dan[8],dan[9]);
}
void caidanb(int dan[26],int n)
{
    printf("********************************\n*第%d步 *  1  *  2  *  3  *  4  *\n********************************\n",n);
    printf("*      *     *     *     *     *\n*  1   *  %c  *  %c  *  %c  *  %c  *\n*      *   01*   02*   03*   04*\n********************************\n",dan[1],dan[2],dan[3],dan[4]);
    printf("*      *     *     *     *     *\n*  2   *  %c  *  %c  *  %c  *  %c  *\n*      *   05*   06*   07*   08*\n********************************\n",dan[5],dan[6],dan[7],dan[8]);
    printf("*      *     *     *     *     *\n*  3   *  %c  *  %c  *  %c  *  %c  *\n*      *   09*   10*   11*   12*\n********************************\n",dan[9],dan[10],dan[11],dan[12]);
    printf("*      *     *     *     *     *\n*  4   *  %c  *  %c  *  %c  *  %c  *\n*      *   13*   14*   15*   16*\n********************************\n",dan[13],dan[14],dan[15],dan[16]);
}

2016-11-16 22:08
HolyDumpling
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-10-28
收藏
得分:0 
回复 3楼 linlulu001
感谢大神指点。已经解决问题并修改了程序。帖子最下面附上修改后的源代码。
2016-11-16 22:09
HolyDumpling
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-10-28
收藏
得分:0 
回复 2楼 九转星河
感谢大神指点。已经解决问题并修改了程序。帖子最下面附上修改后的源代码。
2016-11-16 22:09
快速回复:初学者,用目前学到的知识自己动手编了个小游戏,算是复习吧,期间发现 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072276 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved