求推箱子15关怎么过这关怎么过~过了好久感觉像 bug

做了一个Android上推箱子游戏, 欢迎有安卓手机的来帮我测试一下 - 魔方吧·中文魔方俱乐部 - Powered by Discuz!
魔方吧·中文魔方俱乐部
标题: 做了一个Android上推箱子游戏, 欢迎有安卓手机的来帮我测试一下
作者: stariver1862& & 时间:
15:20:19 & & 标题: 做了一个Android上推箱子游戏, 欢迎有安卓手机的来帮我测试一下
智能自动推箱子,撤销,检查死锁。肯定比android其他推箱子强
这是刚做完的软件,原创首发,嘿嘿
对apk进行了签名,安装不上的再试试
[ 本帖最后由 stariver1862 于
18:01 编辑 ]附件:
ASoko.rar ( 17:59:48, 92.98 KB) / 下载次数 59http://bbs./forum.php?mod=attachment&aid=MTI2OTQzfDUzODMxNmNlfDE0OTM2Nzk1MDF8MHww
作者: 奇趣屋toys& & 时间:
有时间下载一个玩一下,多谢楼主。
作者: sokoban& & 时间:
16:11:03 & & 标题: 回复 1# 的帖子
太好了,手机不在身上,今晚测试一下。
作者: xty_90& & 时间:
我来试试~~~应该挺好吧呵呵~
试了。。我装不了。。。。安装失败。
[ 本帖最后由 xty_90 于
16:43 编辑 ]
作者: purple& & 时间:
多谢楼主,我也在进展缓慢地开发android小东西
作者: lamianbu& & 时间:
我2010年,做过一段时间android。
后来公司觉得做这个不赚钱,就不做了。
我还是更想做android。有西安的朋友做这个的吗?
作者: sokoban& & 时间:
摩托罗拉XT702,Android 2.1
安装楼主的程序失败
作者: stariver1862& & 时间:
我就是在我的G1开发机上测试通过,安装在其他手机上还要签名?
作者: sokoban& & 时间:
更新后可以安装了。
初步使用,界面,操作感都极好。可能是android上第一个智能推箱的程序。死锁提示功能也很强。
总的来说是我试过的Android推箱子中最好的!
若能载入外部关卡就完美了。
另外还有个建议,能否让程序全屏运行,就是隐去顶上的状态栏。
18:18:47 上传
DSCN2865.JPG ( 18:18:47, 16.47 KB) / 下载次数 13http://bbs./forum.php?mod=attachment&aid=MTI2OTQ5fDc1MzkwMTRlfDE0OTM2Nzk1MDF8MHww
作者: sokoban& & 时间:
22:19:04 & & 标题: 发现一个比较奇怪的bug
有时候动一步后,显示会出错。若出现这种情况时,undo再重复原来的操作就正常了。
下面是会出现这个bug的一种情况:(打开35关,按以下步骤推箱子,到最后一步就出现这个bug了)
22:19:04 上传
22:19:04 上传
22:19:04 上传
22:19:04 上传
22:19:04 上传
22:19:04 上传
把上图选中的“箱子“往右推一格,就出现下图这种情况了:
22:19:04 上传
[ 本帖最后由 sokoban 于
22:20 编辑 ]附件:
DSCN2866.JPG ( 22:19:04, 16.63 KB) / 下载次数 10http://bbs./forum.php?mod=attachment&aid=MTI3MDUwfDMwODBlZDMwfDE0OTM2Nzk1MDF8MHww附件:
DSCN2867.JPG ( 22:19:04, 8.25 KB) / 下载次数 12http://bbs./forum.php?mod=attachment&aid=MTI3MDUxfGY3YmYyYWU0fDE0OTM2Nzk1MDF8MHww附件:
DSCN2868.JPG ( 22:19:04, 7.76 KB) / 下载次数 12http://bbs./forum.php?mod=attachment&aid=MTI3MDUyfDY3ZjZmM2ZkfDE0OTM2Nzk1MDF8MHww附件:
DSCN2871.JPG ( 22:19:04, 7.9 KB) / 下载次数 12http://bbs./forum.php?mod=attachment&aid=MTI3MDUzfDA4MmVhNWZjfDE0OTM2Nzk1MDF8MHww附件:
DSCN2873.JPG ( 22:19:04, 7.62 KB) / 下载次数 12http://bbs./forum.php?mod=attachment&aid=MTI3MDU0fDM1MGU1ODNkfDE0OTM2Nzk1MDF8MHww附件:
DSCN2874.JPG ( 22:19:04, 7.87 KB) / 下载次数 10http://bbs./forum.php?mod=attachment&aid=MTI3MDU1fDdjMTAwMWRlfDE0OTM2Nzk1MDF8MHww附件:
DSCN2875.JPG ( 22:19:04, 7.42 KB) / 下载次数 10http://bbs./forum.php?mod=attachment&aid=MTI3MDU2fDk2ZjlhNmE5fDE0OTM2Nzk1MDF8MHww
作者: sokoban& & 时间:
可惜作者一直都没有再回来。但是这款游戏作者已经放到官方的Android Market上了。
到目前为止,ATSokoban还是我见过的Android上最强的推箱子游戏。
我上面提到的Bug也已经修正。有了一个比较好看的图标。
我没法访问官方Android Market,我是在机锋市场上下到的一个新版本,比论坛上发的版本有所改进。
23:37:01 上传
hi-256-0-492efdc9cf3d3de7d19a.png ( 23:37:01, 58.42 KB) / 下载次数 0http://bbs./forum.php?mod=attachment&aid=MTQ2OTAwfGRjYWRjOWQ2fDE0OTM2Nzk1MDF8MHww
作者: stopheart& & 时间:
sokoban兄:
&&你说得这款在Android系统上能编辑关卡吗?最近一直在研究准备买一个平板电脑,这样可以方便的研究关卡,win7平台虽有,但最多能玩3.5小时,Android平台时间长很多,另外想问一下sokoban兄,在ipad里,有没有支持可编辑关卡的推箱子软件,最好是免费的,不免费购买起来好象有点麻烦,呵。
作者: sokoban& & 时间:
stopheart兄,我没有发现Android上有编辑功能的推箱子程序,这款ATSokoban也不行(之前好像版内有人发过一款android上可以编辑的推箱子,但是好像关卡大小有较大的限制,可能满足不了stopheart兄的要求)。iPad上不是很清楚,因为我没有iPad。
用平板电脑玩推箱子,比起手机来,屏幕足够大了,应该开发一些功能较强的适合平板电脑用的推箱子软件。
[ 本帖最后由 sokoban 于
11:26 编辑 ]
作者: anian& & 时间:
sokoban兄做的SokoPlayer (HTML5) 和 SokoEditor (HTML5) 可以跨平台, 平板电脑应该也可以用。
SokoPlayer (HTML5) 已经非常好用。
SokoEditor (HTML5)的基本功能也已经有。&&用来编关卡绝对没有问题。
作者: stopheart& & 时间:
谢谢,anian兄!
其实前些日子看到sokoban兄编得html5就觉得这个很好,可跨平台,不知道编辑关卡时是不是很方便?我觉得sokoban兄,这个是一个努力方向,看来得辛苦你们二位了,那样我就可以考虑ipad,再怎么说这个手感、操作和使用时间都是绝对一流的......
再也不用打开笨重的电脑了,再也不用把图形copy到手机,对着手机构思了。
不能再想了,呵,好象确实不用考虑别的软件了。
在html5,提一下要求:
1.能方便用鼠标设计关卡
2.能方便储存多版本关卡,类似关卡包那样的,象老封那样的*.box
3.......暂时还想不出
作者: sokoban& & 时间:
SokoPlayer HTML5 目前仍在完善中,下一步主要是改善文件读写功能,这方面的功能还比较弱。
SokoEditor 已经实现用鼠标来设计和编辑关卡了,有些操作有待进一步完善。文件读写功能和SokoPlayer 可以共享,
只要一个弄好了,很容易用到另一个上面去。
作者: 赈皁見琥珀巛& & 时间:
手机下载了五个推箱子,都不怎么满意,希望这个不会失望
作者: sokoban& & 时间:
17:56:27 & & 标题: 回复 17# 的帖子
Android上还有一个叫《企鹅推箱子》的,也相当不错,可以试试。
作者: sokoban& & 时间:
发现ATSokoban七月份又有更新,关卡多了。亦有其它改进。
欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs./)
Powered by Discuz! X2swing的推箱子游戏 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 20时,
&./start.sh&打开程序(将img文件夹放入编译好的目录中),否则自行编译====================================如果显示不了墙,先最大化一下再还原窗口,我不知道如何解决。====================================点击加载地图加载testmap.txt。maps下有更多的地图可以玩。您也可以自己制作:元素(图片)为50x50像素。地图格式(单位:元素):10,10,2,3,4,5,6,7,2,3,4,5对应的分别是横向宽度,一个数字{10},纵向宽度,一个数字{10},终点位置,两个数字{2,3},人物初始位置,两个数字{4,5},箱子初始位置,两个数字{6,7},然后就是,墙的位置{2,3,4,5},最外围的那一圈墙由系统自动生成,只需将内部的墙坐标给出就行,符号要求半角。github:/zhcong/swing_pushbox
代码片段(5)
1.&[图片] prt.png&&&&
pushbox.tar.gz&~&68KB&&&&
3.&[代码][Java]代码&&&&
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
//内置精美BUG
public class control {
Point endp = new Point();//最终位置
Point manp = new Point();//人的位置
Point boxp = new Point();//箱子的位置
Point[] map=new Point[]{};
draw drw = new draw();
File mapfile =
JButton jb=
JButton jbup=
JButton jbdown=
JButton jbleft=
JButton jbright=
public Point[] makemap(int[] nums){
//生成墙的坐标
if(nums==null||nums.length==0)
Point[] re = new Point[nums[0]*2+nums[1]*2-4+(nums.length-8)/2];
for(int i=0;i!=nums[0];i++){
re[ip]=new Point((0+i)*50,0);
re[ip+1]=new Point((0+i)*50,(nums[1]-1)*50);
for(int i=0;i!=nums[1]-2;i++){
re[ip]=new Point(0,(1+i)*50);
re[ip+1]=new Point((nums[0]-1)*50,(1+i)*50);
for(int i=0;i!=nums.length-8;i+=2){
re[ip]= new Point(nums[8+i]*50,nums[9+i]*50);
} catch (Exception e) {
e.printStackTrace();
drw.message("地图错误,无法使用!");
public boolean loadmap(String path){
//从文件中读取地图并绘制在面板上
File fp = new File(path);
if(!fp.exists()) throw new Exception(path+"地图打开失败!");
FileReader fpr = new FileReader(fp);
char bytes[] = new char[1024];
int len = fpr.read(bytes);
String str= new String(bytes,0,len);
String[] strs=str.split(",");
int[] nums=new int[strs.length];
for(int i=0;i!=strs.i++){
nums[i]=Integer.parseInt(strs[i]);
map=makemap(nums);
drw.clean();
drw.add(jb);drw.add(jbright);drw.add(jbleft);drw.add(jbdown);drw.add(jbup);
drw.setBounds(200,50,50*nums[0],150+50*nums[1]);
//根据地图生成按钮位置
jb.setBounds(50*nums[0]-100, 50*nums[1], 90, 40);
jbup.setBounds(50*nums[0]/2-50, 50*nums[1], 50, 50);
jbdown.setBounds(50*nums[0]/2-50, 50*nums[1]+50, 50, 50);
jbleft.setBounds(50*nums[0]/2-100, 50*nums[1], 50, 100);
jbright.setBounds(50*nums[0]/2, 50*nums[1], 50, 100);
endp=new Point(nums[2]*50,nums[3]*50);
manp=new Point(nums[4]*50,nums[5]*50);
boxp=new Point(nums[6]*50,nums[7]*50);
drw.drawmap(map);
drw.drawman(manp);
drw.drawbox(boxp);
drw.drawend(endp);
} catch (IOException e) {
e.printStackTrace();
drw.message("地图资源打开失败,请手动选择!");
} catch (Exception e) {
e.printStackTrace();
drw.message("地图错误,无法使用!");
public control(){
jb = new JButton("读取地图");
jb.setBounds(400, 500, 90, 40);
drw.add(jb);
jbup = new JButton("^");
jbup.setBounds(200, 500, 50, 50);
jbdown = new JButton("v");
jbdown.setBounds(200, 550, 50, 50);
jbleft = new JButton("&");
jbleft.setBounds(150, 500, 50, 100);
jbright = new JButton("&");
jbright.setBounds(250, 500, 50, 100);
//虚拟键盘^_^注册按钮事件
jb.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){
JFileChooser chs=new JFileChooser();chs.setCurrentDirectory(new File("."));
if(chs.showOpenDialog(drw)==JFileChooser.APPROVE_OPTION) mapfile=chs.getSelectedFile();
loadmap(mapfile.getAbsolutePath());
jbup.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){run(1);}});
jbdown.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){run(2);}});
jbleft.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){run(3);}});
jbright.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){run(4);}});
drw.add(jbright);drw.add(jbleft);drw.add(jbdown);drw.add(jbup);
private boolean chkwin(){ //检测是否取胜
if(endp.equals(boxp))
private Point driection(Point p,int driec){ //根据方向返回下一步的位置
Point chkp=
switch(driec){
case 1:chkp = new Point(p.x,p.y-50);
case 2:chkp = new Point(p.x,p.y+50);
case 3:chkp = new Point(p.x-50,p.y);
case 4:chkp = new Point(p.x+50,p.y);
private boolean canmove(Point p,int driec){ //判断是否撞墙
Point chkp=driection(p,driec);
for(int i=0;i!=map.i++){
if(map[i].equals(chkp))
private boolean close(Point p1,Point p2,int driec){ //判断人是否可以推着箱子
Point chkp=driection(p1,driec);
if(chkp.equals(p2))
public void run(int driec){
//根据方向行走,进行各种判断
if(close(manp,boxp,driec)){
//推着箱子走
if(canmove(boxp,driec)){
drw.drawman(boxp);
drw.drawbox(driection(boxp,driec));
boxp=driection(boxp,driec);
manp=driection(manp,driec);
//只有人自己走
if(canmove(manp,driec)){
manp=driection(manp,driec);
drw.drawman(manp);
if(chkwin()){
//判断是否取胜
drw.message("恭喜您获胜!");
endp=new Point(-1,-1);
4.&[代码][Java]代码&&&&
import java.awt.*;
import java.net.URL;
import javax.swing.*;
//内置精美BUG
public class draw extends JFrame{
private JL
private JL
private ImageI
private ImageI
private ImageI
private ImageI
private JLabel[] jl=
public draw(){
//初始化,读取出要用到的图片
con = this.getContentPane();
URL url=draw.class.getResource("img/box.png");
if(url==null) throw new NullPointerException("box.png图片资源打开失败");
boxicon=new ImageIcon(url);
url=draw.class.getResource("img/man.png");
if(url==null) throw new NullPointerException("man.png图片资源打开失败");
manicon=new ImageIcon(url);
url=draw.class.getResource("img/wall.png");
if(url==null) throw new NullPointerException("wall.png图片资源打开失败");
wallicon=new ImageIcon(url);
url =draw.class.getResource("img/end.png");
if(url==null) throw new NullPointerException("end.png图片资源打开失败");
endicon=new ImageIcon(url);
box=new JLabel();
box.setIcon(boxicon);con.add(box);
man=new JLabel();
man.setIcon(manicon);con.add(man);
setLayout(null);
setBounds(200,50,500,650);
setVisible(true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
} catch (NullPointerException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
message("图片加载失败!请检查路径。");
System.exit(-1);
public void message(String str){ //相当于微软家族的MessageBox,消息对话框
JOptionPane.showMessageDialog(this,str);
public void drawman(Point p){//画人
man.setBounds(p.x,p.y,50,50);
public void drawend(Point p){//画终点
JLabel jl= new JLabel();
jl.setIcon(endicon);
jl.setBounds(p.x,p.y,50,50);
con.add(jl);
public void drawmap(Point[] map){//传入数组,画地图
jl= new JLabel[map.length];
for(int i=0;i!=map.i++){
jl[i]=new JLabel();
jl[i].setIcon(wallicon);
jl[i].setBounds(map[i].x,map[i].y,50,50);
con.add(jl[i]);
public void drawbox(Point p){//画箱子
box.setBounds(p.x,p.y,50,50);
public void clean(){
con.removeAll();
box=new JLabel();
box.setIcon(boxicon);con.add(box);
man=new JLabel();
man.setIcon(manicon);con.add(man);
public Container getCon() {
//获取Container对象,使得在其他类也可以使用
5.&[代码][Java]代码&&&&
public class game {
//内置精美BUG
public static void main(String[] str){//启动游戏用的
control cot = new control();
开源中国-程序员在线工具:
相关的代码(3458)
&牛人就是牛人!
开源从代码分享开始
俺是一棵大葱的其它代码复制地址:
小游戏,大乐趣
1.按键操作
方向键控制人物移动同时控制人物推箱子,当两个箱子在一起的时候人物推不动!
2.如何开始
点击start开始游戏。
3.游戏目标
将箱子推到指定地点。
7K7K网页游戏
7K7K儿童游戏
法律顾问:北京市诺恒律师事务所
京公网安备37
游戏作品版权归原作者享有,如无意之中侵犯了您的版权,请您按照来信告知,本网站将应您的要求删除。
7k7k小游戏温馨提示:适度游戏娱乐,沉迷游戏伤身,合理安排时间,享受快乐生活……
该游戏已收藏

我要回帖

更多关于 推箱子12关怎么过 的文章

 

随机推荐