C语言推箱子游戏,随机生成地图

思路:

一、地图初始化
- 使用奇数行和列相同的二维数组存储地图,初始化全部为墙
- 使用一个1-2的随机数确定挖坑方向,1向左,2向右
- 定义步进,随机数范围: 2至(列数-1)
- 利用步进和方向挖坑,先从顶部挖到中间一行,再从底部挖到中间,然后将中间的墙全部连起来,得到完整路径。

二、推箱子
- 0代表小人,X代表箱子
- 左移和右移:判断小人所在位置临近向右(左)的位置是否是箱子,以及箱子的右(左)边位置是否是墙,如果都不是,将箱子和小人向右(左)移动一格;如果小人的右边没有箱子也不是墙,则将小人向右(左)移动,箱子不变
- 上移和下移:判断小人所在位置临近向下(上)的位置是否是箱子,以及箱子的下(上)边位置是否是墙,如果都不是,将箱子和小人向下(上)移动一格;;如果小人的右边没有箱子也不是墙,则将小人向下(上)移动,箱子不变
- 箱子到终点的时候游戏结束


这里写图片描述

这里写图片描述

代码块



#include <stdio.h>
#include <stdlib.h>

void setMap (int rows,int cols,char arr[][cols]);//初始化随机地图
void printMap (int  rows,int cols, char arr[][cols]);//打印地图
char dirIn (void);//返回输入的方向


int main()
{
    int inNanDu = 0; //难度系数
    int rows = 25,cols = 25; //行和列数默认值
    int nowRow = 1; //当前行座标初始化
    int set =1; //步进设置初始化

loop3:
    system ("clear");
    printf ("# # # # # # # # # # # # # # # # # # # # # # #\n");
    printf ("\n\n\n\n\n");
    printf ("               推箱子游戏\n");
    printf ("\n\n\n\n\n");
    printf ("# # # # # # # # # # # # # # # # # # # # # # #\n\n");
    printf ("请输入游戏地图的难度值,0-简单,1-普通,2,较难\n");
    scanf ("%d",&inNanDu);
    switch (inNanDu)
    {
        case 0:
            rows = 25;cols = 25;
            break;
        case 1:
            rows = 35;cols = 35;
            break;
        case 2:
            rows = 45;cols = 45;
            break;
        default:
            goto loop3;

    }

    char arr[rows][cols];
    char ch = '0';
    char *pNow = arr[1]; //定义行的移动指针

    setMap (rows,cols,arr); //初始化随机地图
    printMap (rows,cols,arr); //打印地图

    while (ch != 'q')//游戏主体程序
    {
        pNow = a
  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值