c语言控制台输出制作推箱子游戏
来源:互联网 发布:软件图标下载 编辑:程序博客网 时间:2024/05/22 13:37
嵌入式开发,没有学到什么实质性的东西,仅仅做了两个控制台小游戏。虽然老师说不符合课程要求,但是自己感觉还蛮有意思的,就保存下来了。
main()里面那个命令控制感觉还是很好的,因为自己在这方面是新手,之前都没有听说过fflush(stdin),感觉用在这里正好。
#include<stdio.h>int a[5][5];int b[5][5];void draw_point(int n){switch(n){case 0:printf("| ");break;case 1:printf("| A ");break;case 2:printf("| B ");break;case 3:printf("| * ");break;case 4:printf("||||");break;default:break;}}void draw_line(){int i;for(i = 0; i < 21; i++){printf("-");}printf("\n");}void draw(int x[5][5]){int i, j;for(j = 0; j < 5; j++){draw_line();for(i = 0; i < 5; i++){draw_point(x[i][j]);}printf("|");printf("\n");}draw_line();}void set_zero(int x[5][5]){int i, j;for(i = 0; i < 5; i++){for(j = 0; j < 5; j++){x[i][j] = 0;}}}void set_point(int x[5][5], int i, int j, int n){x[i][j] = n;}void chushihua(int x[5][5]){set_zero(x);set_point(x, 2, 0, 3);set_point(x, 2, 4, 3);set_point(x, 0, 2, 3);set_point(x, 4, 2, 3);set_point(x, 2, 1, 2);set_point(x, 2, 3, 2);set_point(x, 1, 2, 2);set_point(x, 3, 2, 2);set_point(x, 2, 2, 1);}void chushihua_b(int x[5][5]){set_point(x, 2, 0, 3);set_point(x, 2, 4, 3);set_point(x, 0, 2, 3);set_point(x, 4, 2, 3);}int get_a_x(int x[5][5]){int i, j;for(i = 0; i < 5; i++){for(j = 0; j < 5; j++){if(a[i][j] == 1){return i;}}}}int get_a_y(int x[5][5]){int i, j;for(i = 0; i < 5; i++){for(j = 0; j < 5; j++){if(a[i][j] == 1){return j;}}}}void move(int x[5][5], char c){int i = get_a_x(x);int j = get_a_y(x);if(c == 'w'){if(j == 0){return;}if(x[i][j - 1] == 4){return;}if(x[i][j - 1] == 2){if(j - 1 == 0){return;}if(x[i][j - 2] == 2 || x[i][j - 2] == 4){return;}x[i][j - 2] = x[i][j - 1];x[i][j - 1] = x[i][j];x[i][j] = 0;}else{x[i][j - 1] = x[i][j];x[i][j] = 0;}}else if(c == 'a'){if(i == 0){return;}if(x[i - 1][j] == 4){return;}if(x[i - 1][j] == 2){if(i - 1 == 0){return;}if(x[i - 2][j] == 2 || x[i - 2][j] == 4){return;}x[i - 2][j] = x[i - 1][j];x[i - 1][j] = x[i][j];x[i][j] = 0;}else{x[i - 1][j] = x[i][j];x[i][j] = 0;}}else if(c == 's'){if(j == 4){return;}if(x[i][j + 1] == 4){return;}if(x[i][j + 1] == 2){if(j + 1 == 4){return;}if(x[i][j + 2] == 2 || x[i][j + 2] == 4){return;}x[i][j + 2] = x[i][j + 1];x[i][j + 1] = x[i][j];x[i][j] = 0;}else{x[i][j + 1] = x[i][j];x[i][j] = 0;}}else if(c == 'd'){if(i == 4){return;}if(x[i + 1][j] == 4){return;}if(x[i + 1][j] == 2){if(i + 1 == 4){return;}if(x[i + 2][j] == 2 || x[i + 2][j] == 4){return;}x[i + 2][j] = x[i + 1][j];x[i + 1][j] = x[i][j];x[i][j] = 0;}else{x[i + 1][j] = x[i][j];x[i][j] = 0;}}}void match(int x[5][5], int y[5][5]){int i, j;for(i = 0; i < 5; i++){for(j = 0; j < 5; j++){if(y[i][j] == 3 && x[i][j] == 0){x[i][j] = 3;}}}}bool isOK(int x[5][5], int y[5][5]){bool bl = true;int i, j;for(i = 0; i < 5; i++){for(j = 0; j < 5; j++){if(y[i][j] == 3 && x[i][j] != 2){bl = false;}}}return bl;}int main(){chushihua(a);chushihua_b(b);draw(a);int k = 1;while(k){char c;printf("请输入命令以移动:");scanf("%c", &c);fflush(stdin);while (c != 'w' && c != 'a' && c != 's' && c != 'd'){printf("只能输入wasd其中之一\n");printf("请输入新的命令:");scanf("%c", &c);fflush(stdin);}move(a, c);match(a, b);draw(a);if(isOK(a, b)){k = 0;printf("恭喜,任务达成!\n");}}return 0;}
- c语言控制台输出制作推箱子游戏
- C语言,推箱子游戏
- c语言控制台推箱子小游戏
- C语言实现推箱子游戏
- C语言-推箱子游戏代码
- C语言实现推箱子游戏
- C语言之推箱子游戏代码
- C语言+EasyX编写推箱子游戏
- C 推箱子游戏
- C游戏 推箱子游戏
- 推箱子游戏(控制台操作) 源码
- 【黑马程序员】C语言—推箱子游戏实现
- C语言实践之推箱子游戏思路与代码
- c实现 推箱子游戏
- C语言_推箱子
- c语言小游戏,推箱子
- c语言的推箱子
- 制作推箱子游戏(VB.NET 2008)
- 常见的jsp中文乱码例子及解决办法
- python 多线程服务器验证,实现断开重连,信号量解决主线程Ctrl+C不退出问题,多线程打印错行问题
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- usb转的串口minicom的设置及乱码问题
- 最简单的线程池
- c语言控制台输出制作推箱子游戏
- TOJ 3018 ZOJ 1655 Transport Goods / dijkstra
- Batch update returned unexpected row count from update; actual row count: 0; expected: 1
- java中jni的使用。
- 时间在流逝
- Linux Driver互斥、异步通知、阻塞与非阻塞综合实例
- C++中成员初始化列表的使用
- jQuery的事件绑定命名空间
- 中国智能高清视频监控未来发展趋势