推箱子

c++、c实现推箱子小游戏

限于喜欢 提交于 2020-01-20 13:15:39
   经过四次的修改和优化,终于将推箱子这个游戏完整的写出来了,今天就像大家分享一下这个游戏的编写。   这个游戏界面的编写总的来说不困难,主要是推动箱子的算法。    (1)利用数组和windows api 即可写出界面      1 #define N 15 2 #define M 15 3 int map[N][M] = { 4 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 5 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 6 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 7 { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 },//0->空白 8 { 0, 0, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0 },//1->墙 9 { 0, 0, 0, 0, 1, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0 },//2->人 10 { 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0 },//3->箱子 11 { 0, 0, 0, 1, 4, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0

jQuery版推箱子游戏详解和源码

若如初见. 提交于 2020-01-20 13:15:09
前言 偶然间看到很多用js写游戏的感觉很炫酷的样子,所以就想试试,就看了一些资料和某前端站点的视屏。于是乎就自己动手实践了一下,上推箱子截图 感觉很丑陋,但是功能是实现了。再说貌似大多都是这样的吧,这一关其实还是有点难度的,我做完之后想检测一下下一关正确么,居然玩了20分钟才通关。 如果你看到这张图让你想起了你童年的回忆,说明你老了,这里可以试玩一下(很遗憾没有链接地址,最后又源码可以下载)。 css布局 主要考虑的是地图是怎么动态生成的,地图中有灰色的,还有墙,箱子,蓝色,红色背景,人物。先看css代码吧 * { padding: 0; margin: 0; } img { border: 0; } #container { position: relative; margin: 20px auto; } .pos1 { width: 50px; height: 50px; float: left; background: #666; } .pos2 { width: 50px; height: 50px; float: left; background: url(images/wall.png); } .pos3 { width: 50px; height: 50px; float: left; background: red; } .pos0 { width: 50px;

【算法】从推箱子的解答步骤还原关卡地图

半腔热情 提交于 2020-01-20 13:14:32
推箱子游戏简介 推箱子 是一款经典的电子游戏,要求玩家在二维地图上把箱子推到指定地点,当中牵涉到大量的空间逻辑推理。 HTML5 Sokoban 是一个非常不错的在线推箱子的网页。推箱子关卡一般用XSB格式来保存和交流,解答步骤则使用LURD格式,请参见: XSB和LURD格式简介 。 XSB格式规定使用以下符号: @ ==> 人 man + ==> 人在目标点 man on goal $ ==> 箱子 box * ==> 箱子在目标点 box on goal # ==> 墙 wall . ==> 目标点 goal - ==> 地板 floor,还可以使用空格或者下划线表示。 LURD格式规定使用以下八个拉丁字母(小写字母表示移动,大写字母表示推动): l 或 L ==> 左 Left r 或 R ==> 右 Right u 或 U ==> 上 Up d 或 D ==> 下 Down 从解答步骤还原关卡地图 有一天,我突然想到,能不能从推箱子的解答步骤还原出关卡地图来呢?因为LURD数据已经包含了足够的信息,可以据此还原出一个最简的关卡地图出来。下面就是实现这个想法的 Lurd2Xsb.cs 程序: 001: using System; 002: using System.Text; 003: using System.Drawing; 004: 005: namespace

HD1254推箱子 AC代码——bfs的实现

时光毁灭记忆、已成空白 提交于 2019-12-14 00:02:05
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) 题目描述: 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上(如图2)那么箱子就不能再被移动了,如果箱子被推到一面墙上,那么箱子只能沿着墙移动. 现在给定房间的结构,箱子的位置,搬运工的位置和箱子要被推去的位置,请你计算出搬运工至少要推动箱子多少格. Input 输入数据的第一行是一个整数T(1<=T<=20),代表测试数据的数量.然后是T组测试数据,每组测试数据的第一行是两个正整数M,N(2<=M,N<=7),代表房间的大小,然后是一个M行N列的矩阵,代表房间的布局,其中0代表空的地板,1代表墙,2代表箱子的起始位置,3代表箱子要被推去的位置,4代表搬运工的起始位置. Output 对于每组测试数据,输出搬运工最少需要推动箱子多少格才能帮箱子推到指定位置,如果不能推到指定位置则输出-1. Sample Input 1 5 5 0 3 0 0 0 1 0 1 4 0 0 0 1 0 0 1 0 2 0 0 0 0 0 0 0 Sample Output 4 题目链接 http:

C++游戏编程之推箱子小游戏教程详解,小白也可以学会!

假装没事ソ 提交于 2019-12-02 11:47:01
用C++开发的推箱子游戏,可以在Windows上运行了,而非限制于手机。游戏界面看上去还不错。 游戏实现界面如下: 推箱子算法:本人比较笨,没有找到捷径,所以就穷举了推箱子步骤,分析如下: 以人为中心,出现两种可能:①人在空位 ②人在目标位置上 ①有六种可能:(注:x1,y1, x2, y2为坐标的偏移量,i ,为人所在的坐标 ) ②人在目标位置上 同样也有六种可能: 项目结构展示: 部分源码展示: 经过四次的修改和优化,终于将推箱子这个游戏完整的写出来了,今天就像大家分享一下这个游戏的编写。这个游戏界面的编写总的来说不困难,主要是推动箱子的算法。 最后,如果你在学习C/C++的过程中遇到了问题,可以来问小编哦~小编很热情的(●’◡’●) 声明:本文内容来源于网络,如有侵权请联系删除 来源: https://blog.csdn.net/weixin_45287871/article/details/102757626

js推箱子

会有一股神秘感。 提交于 2019-12-01 05:28:33
<head> <meta charset="utf-8" /> <title></title> <script> //创建地图 var arr=[ [0,0,0,0,0,0,1,1,1,1,1,1,1,1,1], [0,0,0,0,0,0,1,0,0,0,0,0,0,0,1], [0,0,0,0,0,0,1,0,1,0,1,0,1,0,1], [0,0,0,0,0,0,1,0,0,2,0,2,1,0,1], [1,1,1,1,1,1,1,0,0,0,2,0,0,0,1], [1,3,3,1,0,0,0,0,0,2,0,2,1,0,1], [1,3,3,0,0,0,1,1,0,2,0,2,0,0,1], [1,3,3,1,0,0,1,1,0,1,1,1,1,1,1], [1,3,3,1,0,1,0,2,0,2,0,1,0,0,0], [1,3,3,0,0,0,0,0,2,0,0,1,0,0,0], [1,0,0,1,1,1,5,0,0,1,1,1,0,0,0], [1,1,1,1,0,1,1,1,1,1,0,0,0,0,0] ]; </script> <style> #box>div{ float: left; background-repeat: no-repeat; background-size: 100%; } </style> </head> <body> <div id=

C语言实现推箱子游戏

為{幸葍}努か 提交于 2019-11-28 14:41:00
很早就想过做点小游戏了,但是一直没有机会动手。今天闲来无事,动起手来。过程还是蛮顺利的,代码也不是非常难。今天给大家分享一下~ 一、介绍 开发语言:C语言 开发工具:Dev-C++ 5.11 日期:2019年9月28日 作者:ZackSock 也不说太多多余的话了,先看一下效果图: 游戏中的人物、箱子、墙壁、球都是字符构成的。通过wasd键移动,规则的话就是推箱子的规则,也就不多说了。 二、代码实现 关于代码方面,我尽可能讲的细致。希望大家可以理解~ (1)方法列表 //主函数 void main ( ) ; //初始化一些数据 initData ( ) ; //在控制台上打印地图 drawMap ( ) ; //向上移动 moveUp ( ) ; //向左移动 moveLeft ( ) //向下移动 moveDown ( ) //向右移动 moveRight ( ) ; 这几个方法都顾名思义,而且用意也非常明确,就initData可能不知道具体用处,但是没有什么大问题。唯一的问题就是,上左下右的顺序可能会逼死几个强迫症患者,哈哈。 (2)参数列表 为了方便,我把include和宏定义也放到参数列表当中 //导入函数库 # include <stdio.h> # include <stdlib.h> # include <conio.h> //宏定义 # define WIDTH