c写的迷宫

      大学的时候就学过c,不过那个时候学的真的很皮毛,居然我都没有听过c里的动态内存分配.毕业一直搞java,弄了几年,也没有弄出个什么名堂出来.前几天公司要我解决几个bug,看了一下,居然是底层的问题,而底层是用的一个开源的项目,用c写的.看到c,习惯性地冲上司摇起了头,搞不定.可后来一看,除了我,好像也没人能解了,没办法,只好硬着头皮上了.在私企就是没办法,很多事情,你逃都逃不掉.

      于是,只好硬着头皮学起了c.一学,发现c居然也还挺有意思的,特别是指针,原来理解很费劲,这段不知怎么回来,可能头里来了灵光,居然一晚上就把它基本弄明白了.还是c比较有意思,真要学好了,基本上什么都能做,不像java,有太多的限制.对c,真有点相知恨晚的感觉,这才是一个真正的程序员用的语言.

      这两天又看了点资料,也做了点习题巩固,所以,就有了这个迷宫游戏的c代码.把它贴在这里,以做记念:

      首先是头文件:

        再是实现,用的递归:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的迷宫生成代码,使用C语言编。 ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #define ROW 10 #define COL 10 #define WALL 1 #define PATH 0 void generate_maze(int maze[ROW][COL], int row, int col) { // 初始化迷宫 for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { maze[i][j] = WALL; } } // 随机生成起始点 srand((unsigned int) time(NULL)); int start_row = rand() % row; int start_col = rand() % col; maze[start_row][start_col] = PATH; // 递归生成迷宫 int direction[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; // 上下左右四个方向 int rand_dir[4] = {0, 1, 2, 3}; // 随机打乱方向 for (int i = 0; i < 4; i++) { int j = rand() % 4; int temp = rand_dir[i]; rand_dir[i] = rand_dir[j]; rand_dir[j] = temp; } for (int i = 0; i < 4; i++) { int next_row = start_row + direction[rand_dir[i]][0] * 2; int next_col = start_col + direction[rand_dir[i]][1] * 2; if (next_row >= 0 && next_row < row && next_col >= 0 && next_col < col && maze[next_row][next_col] == WALL) { maze[start_row + direction[rand_dir[i]][0]][start_col + direction[rand_dir[i]][1]] = PATH; maze[next_row][next_col] = PATH; generate_maze(maze, row, col); } } } void print_maze(int maze[ROW][COL], int row, int col) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { if (maze[i][j] == WALL) { printf("■ "); } else { printf("□ "); } } printf("\n"); } } int main() { int maze[ROW][COL]; generate_maze(maze, ROW, COL); print_maze(maze, ROW, COL); return 0; } ``` 该代码使用递归方式生成迷宫,随机生成起始点,并随机打乱方向。最终输出迷宫形。您可以根据实际需要进修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值