0
点赞
收藏
分享

微信扫一扫

推箱子:定义数据与初始化地图


    上一篇中我们介绍了编写推箱子游戏的思路。这篇我们就来详细介绍推箱子的编写。

人物、箱子、放箱子的位置、墙,以及没有提到的空白,共五种类型,那我我们该怎么区分它们呢?最简单的方法是通过数字来定义它们。

    比如:   0 空白
                 1 墙
                 2 位置
                 3 箱子
                 4 人物
                 5 箱子+位置
                 6人加位置

箱子+位置用5表示,人加位置用6表示呢?这是因为位置是2,箱子是3,当箱子与位置重合时,将他们的数字累加即为2+3 = 5,故箱子+位置用5表示。人加位置同理

    对象定义好了,接下来是初始化地图。

推箱子:定义数据与初始化地图_#define

    由上图,该地图有9*10个位置,那我们可以用二维数组表示。

     在定义二位数组时,有两种方式:

    第一种直接定义:

          int  x[9][10] = { { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0 },
                                  { 0, 0, 0, 1, 2, 1, 0, 0, 0, 0 },
                                  { 0, 0, 0, 1, 0, 1, 1, 1, 1, 0 },
                                  { 0, 1, 1, 1, 3, 0, 3, 2, 1, 0 },
                                  { 0, 1, 2, 0, 3, 4, 6, 1, 1, 0 },
                                  { 0, 1, 1, 1, 1, 3, 1, 0, 0, 0 },
                                  { 0, 0, 0, 0, 1, 2, 1, 0, 0, 0 },
                                  { 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 },
                                  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };

    这种方法可按照图中每个位置的属性来直接定义

    第二种方法:

        首先初始化全部为0

        int  x[9][10] = {0};

        然后再分别定义

  x[0][3] = 1; x[0][4] = 1; x[0][5] = 1;
  x[1][3] = 1; x[1][4] = 2; x[1][5] = 1;
  x[2][3] = 1; x[2][5] = 1; x[2][6] = 1; x[2][7] = 1; x[2][8] = 1;
  x[3][1] = 1; x[3][2] = 1; x[3][3] = 1; x[3][4] = 3; x[3][6] = 3; x[3][7] = 2; x[3][8] = 1;
  x[4][1] = 1; x[4][2] = 2; x[4][4] = 3; x[4][5] = 4; x[4][6] = 1; x[4][7] = 1; x[4][8] = 1;
  x[5][1] = 1; x[5][2] = 1; x[5][3] = 1; x[5][4] = 1; x[5][5] = 3; x[5][6] = 1;
  x[6][4] = 1; x[6][5] = 2; x[6][6] = 1;
  x[7][4] = 1; x[7][5] = 1; x[7][6] = 1;

要注意单独定义时,数组下标从0开始,且不能超过定义的个数!!  

这样就定义好数据了


    接下来开始初始化地图,这里我们使用easyx图形界面库(链接见文章最后)来进行初始化,

easyx图形界面库

    #include<easyx.h>

    定义每一个格子大小

    #define SINE 40//大小

    定义窗口大小
    #define WINDOWS_LONG 500
    #define WINDOWS_WIDTH 500


//背景 人物 箱子 墙 位置
IMAGE background, person, box, wall, position;


    定义窗口
     initgraph(WINDOWS_LONG, WINDOWS_WIDTH);

    定义窗口颜色
     setbkcolor(RGB(50,205,50));


    接下来开始插入图片

    这里事先准备了几张图

推箱子:定义数据与初始化地图_初始化_02


//加载图片
loadimage(&background, _T("背景.JPG"), WINDOWS_LONG, WINDOWS_WIDTH);
loadimage(&person, _T("人物.JPG"), SINE, SINE);
loadimage(&box, _T("箱子.JPG"), SINE, SINE);
loadimage(&wall, _T("墙.JPG"), SINE, SINE);
loadimage(&position, _T("位置.JPG"), SINE, SINE);
//生成图像界面对应位置
void Position()
{
putimage(0, 0, &background);
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 10; j++)
{
switch (x[i][j])
{
case 0:
break;
case 1:
putimage(10 + i*SINE, 10 + j*SINE, &wall);
break;
case 2:
putimage(10 + i*SINE, 10 + j*SINE, &position);
break;
case 3:
case 5:
putimage(10 + i*SINE, 10 + j*SINE, &box);
break;
case 4:
case 6:
putimage(10 + i*SINE, 10 + j*SINE, &person);
break;
} }
}}


以上即为初始化地图与加载图片的内容,下期我们将介绍如何编写控制人物移动以及玩游戏。

有任何问题,欢迎留言


------------------------------------------

easyx图形界面库百度网盘链接:

链接:https://pan.baidu.com/s/1nLt6d0vBcy58-q9gBtrp6g
提取码:aibc

点击下方原文链接也可哦

举报

相关推荐

0 条评论