C语言控制台小游戏
2013-12-09 08:51
477 查看
游戏规则:在一个5行5列的数组中,每个元素都有两种状态,输入一个坐标点(x,y)ps:x,y取值为1~5,这个点和其上下左右的四个点都会变为其相反的状态,
如果所有的元素都变成了空心的圆,则过关,进入下一关....
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!
如果所有的元素都变成了空心的圆,则过关,进入下一关....
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';//positive char neg = '0';//negative void 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!
相关文章推荐
- C语言练手游戏-控制台输出一个会移动的坦克
- 原创的C语言控制台小游戏
- 在C语言控制台程序中播放MP3音乐
- c语言编程 :模拟实现简单扫雷游戏
- C语言 小游戏之贪吃蛇
- C语言在执行完程序后如何使控制台保留在桌面上
- 今年数据结构小课题,C语言贪食蛇游戏设计
- 【C语言】折半查找----在一个游戏数组中查找具体的数字n。
- c语言学习-猜数字游戏
- 【C语言探索之旅】 第二部分第九课: 实战[悬挂小人]游戏 答案
- C语言应用-飞机游戏
- c语言暂替控制台返回,查看结果
- 第一个c语言实现的猜数字游戏
- C语言编写控制台下PE分析工具(二)
- C语言中更改控制台中文字颜色
- C语言高级技术之--游戏属性修改器(背景故事)
- c语言三子棋游戏
- 非典型2D游戏引擎 Orx 源码阅读笔记(6) C语言实现的面向对象
- 数独游戏-蓝桥杯-C语言
- C语言探索之旅 | 第二部分第九课: 实战"悬挂小人"游戏