C语言控制台小游戏

来源:互联网 发布:网站 ip地址 域名绑定 编辑:程序博客网 时间:2024/05/22 02:05


游戏规则:在一个5行5列的数组中,每个元素都有两种状态,输入一个坐标点(x,y)ps:x,y取值为1~5,这个点和其上下左右的四个点都会变为其相反的状态,

如果所有的元素都变成了空心的圆,则过关,进入下一关....


void initArray();//初始化数组void refresh();//刷新数组void trigger(int x,int y);//控制void reversal(int x,int y);//逆转void playerCood();//玩家坐标int verdict();//裁定void  levels();//关卡void engine();//进程

char arr[5][5];int answer[40] = {0};//保存随机数int k = 0;int level = 1;char pos = '1';//positivechar neg = '0';//negativevoid initArray()//初始化数组{    for(int i = 0; i < 5; i++)    {        for(int j = 0; j < 5; j++)        {            *(*(arr+i)+j) = pos;        }    }}void refresh()//刷新数组{    for(int i = 0; i < 5; i++)    {        for(int j = 0; j < 5; j++)        {            if(*(*(arr+i)+j) == pos)                printf("⧬ ");            else                printf("⧭ ");        }        printf("\n");    }}void reversal(int x,int y)//逆转{    if(*(*(arr+x)+y) == pos)    {        *(*(arr+x)+y) = neg;    }    else    {        *(*(arr+x)+y) = pos;    }}void trigger(int x,int y)//控制{    reversal(x, y);    if(x - 1 >= 0)    {        reversal(x - 1, y);//上    }    if(x + 1 <= 4)    {        reversal(x + 1, y);//下    }    if(y - 1 >= 0)    {        reversal(x, y - 1);//左    }    if(y + 1 <= 4)    {        reversal(x, y + 1);//右    }}void playerCood()//玩家坐标{    int x = 0, y = 0;        printf("Coordinate(x,y):");        scanf("%d %d",&x,&y);    if((x >0 && x <= 5) && (y > 0 && y <=5))    {        x = x - 1;//转换        y = y - 1;        trigger(x, y);    }    else    //输入错误提示并重新输入    {        printf("Input error ‼︎\n");        playerCood();    }}int verdict()//裁定{    for(int i = 0; i < 5; i++)    {        for(int j = 0; j < 5; j++)        {            if(*(*(arr+i)+j) == pos)            {                continue;            }            else    //说明不全为‘⧬’,游戏还没有结束,返回            {                return 0;            }        }    }    return 1;//game over}void  levels()//关卡{    k = 0;    for(int i = 0; i < level; i++)    {        int x = arc4random()%5;        int y = arc4random()%5;        answer[k] = x+1;        k++;        answer[k] = y+1;        k++;        trigger(x, y);    }}void engine()//进程{    char yesno[20] = {'n'};    initArray();//数组初始化    if(1 == level)    {        printf("THE 1 LEVEL\n");    }    levels();//载入关卡            printf("Note:");    for(int i = 0; i < k; i++)//答案    {        printf("(%d ",answer[i++]);        printf("%d)",answer[i]);            }    printf("\n");            refresh();//刷新        while(YES)    {                playerCood();//玩家坐标                refresh();//刷新                if(verdict() == 1)  //判断是否结束        {            printf("Congratulations, You passed the %d level !\n",level);            printf("Continue or exit (y/n)? ");            //            getchar();//获得                        scanf("%s",yesno);                        if('N' == yesno[0] || 'n' == yesno[0])            {                printf("\nExit Success!");                exit(1);    //退出            }            else            {                level++;    //进入下一关                printf("THE %d LEVEL\n",level);                                engine();            }        }    }}

int main(int argc, const char * argv[]){    engine();    return 0;}




效果:

THE 1 LEVEL

Note:(2 4)

 

 

 

 

 

Coordinate(x,y):2 4

 

 

 

 

 

Congratulations, You passed the 1 level !

Continue or exit (y/n)? y

THE 2 LEVEL

Note:(3 5)(4 1)

 

 

 

 

 

Coordinate(x,y):3 5

 

 

 

 

 

Coordinate(x,y):4 1

 

 

 

 

 

Congratulations, You passed the 2 level !

Continue or exit (y/n)? sadf

THE 3 LEVEL

Note:(1 4)(1 1)(3 1)

 

 

 

 

 

Coordinate(x,y):1 4

 

 

 

 

 

Coordinate(x,y):1 1

 

 

 

 

 

Coordinate(x,y):3 1

 

 

 

 

 

Congratulations, You passed the 3 level !

Continue or exit (y/n)? n


Exit Success!



原创粉丝点击