推箱子游戏

本游戏为推箱子游戏,即通过移动方向键来控制小人去推动箱子,直到把所有的箱子都推动到各个目标中。游戏需要在人物行走过程中无法穿越墙和箱子,并在有限的范围中放好各箱子,且每次只能搬运一个箱子。所基于的语言是8086汇编,使用的编译环境是唐都的集中开发环境TD-PIT。

本次设计的基本思想是通过将不同的元素(墙、路、箱子、人、目标位)抽象为不同的矩阵,然后将所设计的地图描抽象成一个控制矩阵来控制图像的显示,每一个控制矩阵块代表一个元素,我们通过不断刷新控制矩阵来达到显示人物移动及推箱子的效果。

1.1推箱子游戏具有的功能

(1)显示主菜单和界面

游戏需要提供货源主菜单让玩家进行游戏设置,同时能够把地图文件中的信息转化成图像显示到主游戏界面上。

(2)能够实现键盘操作功能

能够接收到键盘输入的方向键信息,并根据不同的方向键把游戏人物移动到相应的位置。例如,玩家按方向键“上”时,如果向上的位置是可移动的,那么就当把游戏人物向上移动一个方格。

(3)能够把放置到位置上的箱子进行变色显示

当玩家把箱子推到指定位置的格子时,需要把这个箱子进行变色。这样就能明确的显示出该箱子已经放置到指定的位置上。

(4) 支持游戏的时间计时和步数记录

当玩家开始游戏时就开始计时,游戏中的小人物每走一步就会记录一次步数。

(5)支持游戏的隐藏炸弹和引爆炸弹功能

如果玩家无法将指定的箱子全部推到放置点时,可以通过游戏中设的隐藏炸弹引爆阻挡的墙可以继续游戏。

(6)支持关口选择功能

玩家在游戏中可自行选择需要挑战的关口。当玩家点击菜单中的“下一关,   上一关”按钮时可进行关口的调节

(7)游戏是否通关判断功能

在游戏中,当玩家把所有的箱子都推到箱子放置点时,玩家胜利通过当前游戏关口,进行下一关口的游戏。如果玩家无法将指定的箱子全部推到放置点时,玩家失败。玩家可以选择重新进行当前关口的游戏,还是退出游戏。

(8)游戏提供帮助说明

在游戏的菜单中,提供一个使用说明项,以便对本游戏不了解的玩家对游戏进行操作和使用。

二 系统总体设计

2.1功能模块的设计

系统模块图

本程序包括六个模块,分别是初始化模块,画图  模块,移动箱子模块,移动小人模块,作弊模块和功能控制模块,各个模块的功能描述如下

(1)初始化模块

该模块包括屏幕初始化和游戏第一关的初始化。游戏每一关的初始化是构建每一关的关卡。

(2)画图模块

该模块主要是被其他模块的调用,用于画墙,在空地画箱子,画小人和画目的地。

(3)移动箱子模块

该模块用于移动箱子,包括目的地之间,空地之间和目的地与空地之间的箱子移动

(4)移动小人模块

该模块用于控制小人移动,从而推动箱子到目的地。

(5)作弊模块

该模块用于无路可走的情况下,可以把墙炸掉,可以给箱子提供一个可走的路。

(6)功能控制模块

该模块是几个功能函数的集合,包括屏幕输出功能,指定位置状态判断功能和关卡重置能。

源代码查看地址:https://github.com/lidakun/Text/blob/master/Text.txt

时间: 2024-10-06 01:14:48

推箱子游戏的相关文章

JavaScript写一个小乌龟推箱子游戏

推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用了zepto的touch模块, 通过手指滑动屏幕就可以控制乌龟走不同的方向: 因为推箱子这个游戏比较简单, 直接用了过程式的方式写代码, 模块也就是两个View 和 Model, 剩下就是用户的事件Controller, 用户每一次按下键盘的方向键都会改变数据模型的数据,然后重新生成游戏的静态htm

致佳音: 推箱子游戏自动求解算法设计(四)

这一节是本文的核心内容,即推箱子游戏求解算法的设计思路过程 前面已经说过过,判断局面重复的最好标准不是局面完全一致,而是坐标排序相同且角色坐标通行 如下图,角色无论怎么移动,不推动箱子的时候,都能回到原来的位置,算作同一个局面: 再如下图,两个箱子互换位置,结果与没有移动箱子是一样的,所以排序箱子坐标以后一致,还是相同局面 问:有必要判断局面重复吗?是不是只是提升一下效率? 答:不是为了提升效率,而是为了能解出来,如果使用递归,重复的局面反复耗尽堆栈,而队列则耗尽内存 正如上图,反复推这两个箱子

致佳音: 推箱子游戏自己主动求解算法设计(四)

这一节是本文的核心内容,即推箱子游戏求解算法的设计思路过程 前面已经说过过,推断局面反复的最好标准不是局面全然一致,而是坐标排序同样且角色坐标通行 例如以下图.角色不管怎么移动,不推动箱子的时候.都能回到原来的位置.算作同一个局面: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJzbmlwZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast"

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

前言 偶然间看到很多用js写游戏的感觉很炫酷的样子,所以就想试试,就看了一些资料和某前端站点的视屏.于是乎就自己动手实践了一下,上推箱子截图 感觉很丑陋,但是功能是实现了.再说貌似大多都是这样的吧,这一关其实还是有点难度的,我做完之后想检测一下下一关正确么,居然还玩了以后才通关. 如果你看到这张图让你想起了你童年的回忆,说明你老了,这里可以试玩一下(很遗憾没有链接地址,最后又源码可以下载). css布局 主要考虑的是地图是怎么动态生成的,地图中有灰色的,还有墙,箱子,蓝色,红色背景,人物.先看c

用C写一个简单的推箱子游戏(一)

我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱子小程序. 这一程序主要用到了C语言中的二维数组,头文件#include<conio.h>(因为要调用getch()函数以记录输入内容),switch函数等. 一.     功能概述 a)   游戏规则概述 玩家通过键盘输入W.S.A.D四键或者“↑”.“↓”.“←”.“→”四个方向键推动箱子,而

致佳音: 推箱子游戏自动求解算法设计(二)

这一个小节我们说一说传说中的A×算法,其实之前也上传过类似的小件件,这里我们就去剖析一下它 毕竟在游戏程序,我们要从一点移动到另一点,并得到最短路程的轨迹,类似这种算法还有好几种,执行效率都差不多,不过大多不能得到轨迹 首先,从一点移动到另一点,最快就是直接走过去了,就像小男生爱上小女生,最好的办法就是直接走到她面前说:我爱你 不过理想状态,几乎是没有的,弯路那是必然的经过,有曲线,其实更美-- 那么弯路该怎么走呢,是不是先去背景看下毛主席,再去三亚晒个太阳,再回来告诉她外面的世界好美,不,不,

hdu 1254(推箱子游戏bfs+状态标记)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1254 推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5181    Accepted Submission(s): 1439 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N

C++学习(九)之 项目 推箱子游戏

游戏制作 推箱子 步骤分析 1.模板 2.模板分析 组成元素: 空地 墙 人 目的地 箱子 背景 3.如何操作 通过WASD键盘操作人,推着箱子,到达目的地,游戏结束,如果箱子卡在死角则游戏失败 4.如何绘制地图 通过数组来存储绘制 数组中 0表示空地 1表示墙 2表示人 3表示箱子 4表示目的地 移动时 人在目的地上:人+目的地=2+4=6 箱子在目的地上:箱子+目的地=3+4+7 (⊙o⊙)-额  大概就这样吧 (其实就是自己做的时候的一些笔记,以后用的时候再看吧) 1 //事先先改多字节

致佳音: 推箱子游戏自动求解算法设计(一)

本来酷爱音乐, 老衲也想谱一曲<献给爱丽丝>之类, 通俗又有境界的曲子, 奈何没有那个水平, 也不是一个程序员做的勾当,于是就有了本文. 希望莲花妹妹跟着思路走,能遗忘那些太多的忧伤-- 本文分以下四个小节: 一.平面寻路算法(Alpha Star) 二.闭合图形填充算法(扫描线种子填充) 三.推箱子求解 四.执行效率的优化 日本人有个程序叫Sokuban Automatic Solver,文件名是sokoban722.exe我附带在资源里面 不过日本人的东西没有开源,我们也不知道它里面的花花