C语言实现推箱子
在网上学习并完成这个推箱子的小游戏,记录下来
一、工具介绍
1、easyx图形库工具
2、vs2013及以上都可以
二、代码实现
1、用到的头文件
#include<stdio.h>
#include <stdlib.h>
#include<easyx.h>
#include"resource.h"
#include<conio.h>
#pragma comment(lib,"winmm.lib")
2、初始化地图,定义了一个二维数组,利用二维数组来对地图上的元素实现定义(如:0为空地,1是围墙,2是人物,3是目的地,4是箱子,5是箱子进入目的地,6是人进入目的地)
int arr[10][10] =
{
{
1,1,1,1,1,1,1,1,1,1},
{
1,0,0,0,0,0,0,0,0,1},
{
1,0,0,0,0,0,0,0,0,1},
{
1,0,0,0,0,0,4,4,0,1},
{
1,0,0,0,0,2,3,3,0,1},
{
1,0,0,0,0,0,0,0,0,1},
{
1,0,0,0,0,0,0,0,0,1},
{
1,0,0,0,0,0,0,0,0,1},
{
1,0,0,0,0,0,0,0,0,1},
{
1,1,1,1,1,1,1,1,1,1},
};
int map[10][10];
int map1[10][10];
IMAGE image[6];//图片函数 定义图片数组
int life = 0;//定义血量
3、对游戏初始化,使定义的全局变量等于定义的二维数组
void init()
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
map[i][j] = arr[i][j];
}
}
}
4、利用贴图函数对游戏贴图,
void drawmap()
{
BeginBatchDraw();//开始批量贴图
putimage(0, 0, &image[0]);//贴空地的图片
for (int i = 0; i < 10; i++)//遍历地图,寻找元素
{
for (int j = 0; j < 10; j++)
{
switch (map[i][j])
{
case 1: putimage(50 * j, 50 * i, &image[1]); break;//围墙
case 2: putimage(50 * j, 50 * i, &image[2]); break;//人
case 3: putimage(50 * j, 50 * i, &image[3]); break;//目的地
case 4: putimage(50 * j, 50 * i, &image[4]); break;//箱子
case 5: putimage(50 * j, 50 * i, &image[5]); break;//箱子进入目的地
case 6: putimage(50 * j, 50 * i, &image[2]); break;//人进目的地
}
}
}
EndBatchDraw();//结束贴图
}
5、悔棋的函数(就是保存上一步各个元素的位置)
void huiqi()//返回上一步
{
for (int i