graphics.h图形库实现推箱子游戏界面

本文介绍了一个使用C++和graphics.h库编写的推箱子游戏。开发者自绘了游戏图片,并实现了悔步功能,尽管代码量较大且思路有些混乱。在VS2015中遇到loadimage函数报错问题,通过修改项目属性为多字节编码解决了问题。
摘要由CSDN通过智能技术生成

C++实现推箱子游戏

用vs2015写的一个推箱子游戏,用到了graphics.h头文件进行贴图,图片都是自己随手画的,比较难看。自己实现了悔步功能,悔步功能想了一天才完成,代码比较多,思路比较乱,编程小白,能力有限,希望大佬们不喜勿喷。下方贴上自绘图片和代码。
vs2015 loadimage函数会报错,将解决方案里的属性改为多字节就能正常运行了。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/*
	0 墙
	1 空地
	2 箱子
	3 目的地
	4 人
	5 箱子到达目的地
	6 人在目的地上,显示人
*/
/*
	1.基本绘图窗口
		1.1 initgraph(400,200)
		1.2	closegraph()
		1.3 窗口坐标
	2.基本贴图
		2.1 声明一个图片变量 IMAGE img
		2.2 加载资源到变量  loadimage(&img,"URL")
			2.2.1 宽字节
			2.2.2 改变图片大小
	2.3 显示图片  putimage(int x,int y,&image)
*/
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <graphics.h>
#include <conio.h>
using namespace std;
int val = 0;//关卡数
int total;//记录上一次移动的方向,以便进行悔步,与上一次的移动方向相反
int flag;
int tx, ty; /* tx , ty 记录人移动过后的原来的人所在的位置 */

int a[3][8][8] = {
   
	0,0,0,0,0,0,0,0,
	0,3,2,1,1,0,1,0,
	0,1,1,2,1,1,1,0,
	0,1,0,2,1,1,3,0,
	0,1,1,1,4,3,1,0,
	0,1,1,1,1,1,1,0,
	0,1,1,1,1,2,3,0,
	0,0,0,0,0,0,0,0,

	0,0,0,0,0,0,0,0,
	0,1,1,2,3,0,1,0,
	0,0,1,1,1,1,1,0,
	0,1,2,2,3,1,1,0,
	0,0,1,1,1,3,1,0,
	0,1,1,1,1,4,1,0,
	0,1,2,1,3,1,1,0,
	0,0,0,0,0,0,0,0,

	0,0,0,0,0,0,0,0,
	0,1,1,1,1,1,1,0,
	0,0,1,2,0,1,3,0,
	0,1,2,3,1,1,1,0,
	0,1,1,1,1,4,1,0,
	0,1,1,2,1,1,1,0,
	0,1,1,1,0,3,1,0,
	0,0,0,0,0,0,0,0
};
//批量初始化处理图片
IMAGE img[6];
int imgindex[6] = {
    0,1,2,3,4,5 };

void loadresource()
{
   
	int i;
	for (i = 0; i < 6; i++) {
   
		char buf[20];
		sprintf(buf, "%d.jpg", imgindex[i]);
		loadimage(img + i, buf, 50, 50);
	}
}

void drawmap()
{
   
	int i, j;
	for (i = 0; i < 8; i++) {
   
		for (j = 0; j < 8; j++) {
   
			int x = 50 * j;
			int y = 50 * i;//x,y代表像素位置,每个像素大小设为50*50
			switch (a[val][i][j]) {
   
			case 0:
				putimage(x, y, img);
				break;
			case 1:
				putimage(x, y, img + 1);
				break;
			case 2:
				putimage(x, y, img + 2);
				break;
			case 3:
				putimage(x, y, img + 3);
				break;
			case 4:
			case 6:
				putimage(x, y, img + 4);
				break;
			case 
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值