C语言实现推箱子

使用C语言在Mac上通过VSCode编辑器实现推箱子游戏。文章提及了二维数组与平面直角坐标系的对应关系,以及在处理`scanf`函数时终端IO缓冲区的问题。代码参考自https://blog.csdn.net/ZackSock/article/details/101645494,原代码适用于Windows平台。目前的运行结果显示存在输入优化的空间。
摘要由CSDN通过智能技术生成

C语言实现推箱子

电脑 Mac, 代码编辑器VSCode

参考的是https://blog.csdn.net/ZackSock/article/details/101645494
参考的代码是在window电脑上编译的.

1、二维数组和平面直角坐标系的对应.
2、scanf函数的输入的时候.终端io的缓冲区的问题.

//DIY推箱子小游戏
#include <stdio.h>
// #include <stdlib.h>

// #include <curses.h>
// #include <conio.h>

//宏定义
#define WIDTH   8
#define HEIGHTH  8

//定义地图数组,二维数组有两个维度,地图是二维的矩形;
/**
 *  0  表示空 
 *  1  表示墙
 *  2  表示人
 *  3  表示箱子
 *  4  表示目的地
 *  5  表示已经完成的箱子
 */
int map[WIDTH][HEIGHTH] = {
   
    {
   0, 0, 1, 1, 1, 0, 0, 0},
    {
   0, 0, 1, 4, 1, 0, 0, 0},
    {
   0, 0, 1, 0, 1, 1, 1, 1},
    {
   1, 1, 1, 3, 0, 3, 4, 1},
    {
   1, 4, 0, 3, 2, 1, 1, 1},
    {
   1, 1, 1, 1, 3, 1, 0, 0},
    {
   0, 0, 0, 1, 4, 1, 0, 0},
    {
   0, 0, 0, 1, 1, 1, 0, 0}
};

//人的位置;
int x = 0;
int y = 0;

//箱子的个数(没有推进去的)
int boxs = 0;


//初始化数据;
void initDate()
{
   
    printf("游戏加载中....\n");

    //遍历地图中的数据.
    for (int i = 0; i < WIDTH; i++) {
   
        for (int j = 0; j < HEIGHTH; j++) {
   
            //遍历到人的时候.
            if (map[i][j] == 2) {
   
                //注意二维数组和数学中矩阵的对应.
                x = i;  //j -- 高度
                y = j;  //i -- 宽度
            }

            //未完成的箱子的数目
            if (map[i][j] == 3) {
   
                boxs++;
            }            
        }        
    }

    printf("boxs = %d, x = %d, y = %d\n", boxs, x, y);
}

//绘制地图;
void drawMap()
{
   
    printf("开始绘制地图...\n");
    for (int i = 0; i < WIDTH; i++) {
   
        for (int j = 0; j <
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值