import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import javax.sound.midi.*;
import java.util.Stack;
public class Tuixiangzi
{
	public static void main(String[] args)
	{
		new mainFrame();
	}
}
class mainFrame extends JFrame implements ActionListener,ItemListener
{
	JLabel lb;
	JLabel lb2;
	JButton btnrenew,btnlast,btnnext,btnchoose,btnfirst,btnover,btnmuc,btnback;
	mainpanel panel;
	Sound sound;
	JComboBox jc=new JComboBox();
	MenuItem renew=new MenuItem("    重新开始");
	MenuItem back=new MenuItem("    悔一步");
	MenuItem last=new MenuItem("    上一关");
	MenuItem next=new MenuItem("    下一关");
	MenuItem choose=new MenuItem("    选关");
	MenuItem exit=new MenuItem("    退出");
	MenuItem qin=new MenuItem("    琴萧合奏");
	MenuItem po=new MenuItem("    泡泡堂");
	MenuItem guang=new MenuItem("    灌篮高手");
	MenuItem nor=new MenuItem("    默认");
	MenuItem eye=new MenuItem("    eyes on me");
	MenuItem about=new MenuItem("    关于推箱子...");
	mainFrame()
	{
		super("推箱子v2.0");
		setSize(720,720);
		setVisible(true);
		setResizable(false);
		setLocation(300,20);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container cont=getContentPane();
		cont.setLayout(null);
		cont.setBackground(Color.black);
		Menu choice=new Menu("    选项");
		choice.add(renew);choice.add(last);choice.add(next);choice.add(choose);choice.add(back);
		choice.addSeparator();choice.add(exit);
		renew.addActionListener(this);
		last.addActionListener(this);
		next.addActionListener(this);
		choose.addActionListener(this);
		exit.addActionListener(this);
		back.addActionListener(this);
		Menu setmuc=new Menu("    设置音乐");
		setmuc.add(nor);setmuc.add(qin);setmuc.add(po);setmuc.add(guang);setmuc.add(eye);
		nor.addActionListener(this);
		qin.addActionListener(this);
		po.addActionListener(this);
		guang.addActionListener(this);
		eye.addActionListener(this);
		Menu help=new Menu("    帮助");
		help.add(about);
		about.addActionListener(this);
		MenuBar bar=new MenuBar();
		bar.add(choice);bar.add(setmuc);bar.add(help);
		setMenuBar(bar);                                        
		nor.setEnabled(false);
		lb=new JLabel("JAVA推箱子v2.0版!!!",SwingConstants.CENTER);
		lb2=new JLabel("更换音乐",SwingConstants.CENTER);
		add(lb);add(lb2);
		lb.setBounds(100,20,400,20);
		lb.setForeground(Color.white);
		lb2.setBounds(625,500,55,20);
		lb2.setForeground(Color.white);
		btnrenew=new JButton("重来");
		btnback=new JButton("悔一步");
		btnlast=new JButton("上一关");
		btnnext=new JButton("下一关");
		btnchoose=new JButton("选关");
		btnfirst=new JButton("第1关");
		btnover=new JButton("最终关");
		btnmuc=new JButton("音乐关");
		add(btnrenew);add(btnlast);add(btnnext);add(btnchoose);add(btnfirst);add(btnover);add(btnmuc);add(btnback);
		btnrenew.setBounds(625,100,80,30);
		btnrenew.addActionListener(this);
		btnback.setBounds(625,150,80,30);
		btnback.addActionListener(this);
		btnfirst.setBounds(625,200,80,30);
		btnfirst.addActionListener(this);
		btnlast.setBounds(625,250,80,30);
		btnlast.addActionListener(this);
		btnnext.setBounds(625,300,80,30);
		btnnext.addActionListener(this);
		btnover.setBounds(625,350,80,30);
		btnover.addActionListener(this);
		btnchoose.setBounds(625,400,80,30);
		btnchoose.addActionListener(this);
		btnmuc.setBounds(625,450,80,30);
		btnmuc.addActionListener(this);
		jc.setBounds(625,530,80,20);
		jc.addItem("默认");
		jc.addItem("琴萧合奏");
		jc.addItem("泡泡堂");
		jc.addItem("灌篮高手");
		jc.addItem("eyes on me");
		jc.addItemListener(this);
		cont.add(jc);
		sound=new Sound();
		sound.loadSound();
		panel=new mainpanel();
		add(panel);
		panel.Tuixiangzi(panel.level);
		panel.requestFocus();
		validate();
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==btnrenew||e.getSource()==renew)
		{
			panel.Tuixiangzi(panel.level);
			panel.requestFocus();
			panel.remove();
		}
		else if(e.getSource()==btnlast||e.getSource()==last)
		{
			panel.level--;
			if(panel.level<1)
			{panel.level++;JOptionPane.showMessageDialog(this,"本关是第一关");panel.requestFocus();}
			else 
			{
				panel.Tuixiangzi(panel.level);
				panel.requestFocus();
			}
			panel.remove();
		}
		else if(e.getSource()==btnnext||e.getSource()==next)
		{
			panel.level++;
			if(panel.level>panel.maxlevel())
			{panel.level--;JOptionPane.showMessageDialog(this,"本关已是最后一关");panel.requestFocus();}
			else 
			{
				panel.Tuixiangzi(panel.level);
				panel.requestFocus();
			}
			panel.remove();
		}
		else if(e.getSource()==exit)System.exit(0);
		else if(e.getSource()==about)
		{
			JOptionPane.showMessageDialog(this, "JAVA推箱子v2.0版\n开发者:施超\nEmail:   shichaoling1@126.com\nQQ:   450400704");
		}
		else if(e.getSource()==btnchoose||e.getSource()==choose)
		{
			String lel=JOptionPane.showInputDialog(this,"请输入您要转到的关卡号:(1~50)");
			panel.level=Integer.parseInt(lel);
			panel.remove();
			if(panel.level>panel.maxlevel()||panel.level<1)
			{JOptionPane.showMessageDialog(this, "没有这一关!!!");panel.requestFocus();}
			else
				{
				panel.Tuixiangzi(panel.level);
				panel.requestFocus();
				}
		}
		
		else if(e.getSource()==btnfirst)
		{
			panel.level=1;
			panel.Tuixiangzi(panel.level);
			panel.requestFocus();
			panel.remove();
		}
		else if(e.getSource()==btnover)
		{
			panel.level=panel.maxlevel();
			panel.Tuixiangzi(panel.level);
			panel.requestFocus();
			panel.remove();
		}
		else if(e.getSource()==btnmuc)
		{
			if(sound.isplay())
			{
				sound.mystop();btnmuc.setLabel("音乐开");
			}
			else 
			{
				sound.loadSound();btnmuc.setLabel("音乐关");
			}
			panel.requestFocus();
		}
		else if(e.getSource()==btnback||e.getSource()==back)
		{
			if(panel.isMystackEmpty())JOptionPane.showMessageDialog(this, "您还未移动!!!");
			else
			{
				switch(panel.back())
				{
					case 10:panel.backup(10);break;
					case 11:panel.backup(11);break;
					case 20:panel.backdown(20);break;
					case 21:panel.backdown(21);break;
					case 30:panel.backleft(30);break;
					case 31:panel.backleft(31);break;
					case 40:panel.backright(40);break;
					case 41:panel.backright(41);break;
				}
			}
			panel.requestFocus();
		}
		else if(e.getSource()==nor)
		{
			jc.setSelectedIndex(0);
		}
		
		else if(e.getSource()==qin)
		{
			jc.setSelectedIndex(1);
		}
		else if(e.getSource()==guang)
		{
			
			jc.setSelectedIndex(3);
			
		}
		else if(e.getSource()==eye)
		{
			jc.setSelectedIndex(4);
		}
		else if(e.getSource()==po)
		{
			jc.setSelectedIndex(2);
		}
	}
	public void itemStateChanged(ItemEvent ie)
	{
		int no=jc.getSelectedIndex();
		switch(no)
		{
			case 0:sound.setMusic("nor.mid");
					 if(sound.isplay())
					 sound.mystop();
					 sound.loadSound();
					 btnmuc.setLabel("音乐关");
					 nor.setEnabled(false);
					 qin.setEnabled(true);
					 guang.setEnabled(true);
					 eye.setEnabled(true);
					 po.setEnabled(true);panel.requestFocus();break;
			case 1:sound.setMusic("qin.mid");
					 if(sound.isplay())
					 sound.mystop();
					 sound.loadSound();
					 btnmuc.setLabel("音乐关");
					 nor.setEnabled(true);
					 qin.setEnabled(false);
					 guang.setEnabled(true);
					 eye.setEnabled(true);
					 po.setEnabled(true);panel.requestFocus();break;
			case 2:sound.setMusic("popo.mid");
					if(sound.isplay())
					sound.mystop();
					sound.loadSound();
					btnmuc.setLabel("音乐关");
					nor.setEnabled(true);
					qin.setEnabled(true);
					guang.setEnabled(true);
					eye.setEnabled(true);
					po.setEnabled(false);panel.requestFocus();break;
			case 3:sound.setMusic("guang.mid");
					if(sound.isplay())
					sound.mystop();
					sound.loadSound();
					btnmuc.setLabel("音乐关");
					nor.setEnabled(true);
					qin.setEnabled(true);
					guang.setEnabled(false);
					eye.setEnabled(true);
					po.setEnabled(true);panel.requestFocus();break;
			case 4:sound.setMusic("eyes on me.mid");
					if(sound.isplay())
					sound.mystop();
					sound.loadSound();
					btnmuc.setLabel("音乐关");
					nor.setEnabled(true);
					qin.setEnabled(true);
					guang.setEnabled(true);
					eye.setEnabled(false);
					po.setEnabled(true);panel.requestFocus();break;
		}
	}
}
class mainpanel extends JPanel implements KeyListener
{
	int max=50;
	int[][] map,maptmp;
	int manX,manY,boxnum;
	Image[] myImage;
	Readmap Levelmap;
	Readmap Levelmaptmp;
	int len=30;
	public int level=1;
	Stack mystack=new Stack();
	mainpanel()
	{	
		setBounds(15,50,600,600);
		setBackground(Color.white);
		addKeyListener(this);
		myImage=new Image[10];
		for(int i=0; i<10; i++)
		{
		    myImage[i] = Toolkit.getDefaultToolkit().getImage("pic\\"+i+".gif");
		}
		
		setVisible(true);
	}
	void Tuixiangzi(int i)
	{
		Levelmap=new Readmap(i);
		Levelmaptmp=new Readmap(i);
		map=Levelmap.getmap();
		manX=Levelmap.getmanX();
		manY=Levelmap.getmanY();
		maptmp=Levelmaptmp.getmap();
		repaint();
	}
	int maxlevel(){return max;}
	public void paint(Graphics g)
	{
		for(int i=0; i<20; i++)
			for(int j=0; j<20; j++)
		    {
			    g.drawImage(myImage[map[j][i]],i*len,j*len,this);
			}		
		g.setColor(new Color(0,0,0));
		g.setFont(new Font("楷体_2312",Font.BOLD,30));
		g.drawString("现在是第",150,40);
		g.drawString(String.valueOf(level),310,40);
		g.drawString("关",360,40);
	}
	public void keyPressed(KeyEvent e)
	{
		if(e.getKeyCode()==KeyEvent.VK_UP){moveup();}
		if(e.getKeyCode()==KeyEvent.VK_DOWN){movedown();}
		if(e.getKeyCode()==KeyEvent.VK_LEFT){moveleft();}
		if(e.getKeyCode()==KeyEvent.VK_RIGHT){moveright();}
		if(iswin())
		{
			if(level==max){JOptionPane.showMessageDialog(this, "恭喜您通过最后一关!!!");}
			else
			{
				String msg="恭喜您通过第"+level+"关!!!\n是否要进入下一关?";
				int type=JOptionPane.YES_NO_OPTION;
				String title="过关";
				int choice=0;
				choice=JOptionPane.showConfirmDialog(null,msg,title,type);
				if(choice==1)System.exit(0);
				else if(choice==0)
				{
					level++;
					Tuixiangzi(level);
				}
			}
			mystack.removeAllElements();
		}
	}
	public void keyTyped(KeyEvent e){}
	public void keyReleased(KeyEvent e){}
	boolean isMystackEmpty(){return mystack.isEmpty();}
	
	int  back(){return (Integer)mystack.pop();}
	void remove(){mystack.removeAllElements();}
	
	void moveup()
	{
		if(map[manY-1][manX]==2||map[manY-1][manX]==4)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
				map[manY][manX]=4;
			else map[manY][manX]=2;
			map[manY-1][manX]=8;
			repaint();manY--;mystack.push(10);
		}
		else if(map[manY-1][manX]==3)
		{
			if(map[manY-2][manX]==4)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY-1][manX]=8;
				map[manY-2][manX]=9;
				repaint();manY--;mystack.push(11);
			}
			else if(map[manY-2][manX]==2)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY-1][manX]=8;
				map[manY-2][manX]=3;
				repaint();manY--;mystack.push(11);
			}
			else {map[manY][manX]=8;repaint();}
		}
		else if(map[manY-1][manX]==9)
		{
			if(map[manY-2][manX]==4)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY-1][manX]=8;
				map[manY-2][manX]=9;
				repaint();manY--;mystack.push(11);
			}
			else if(map[manY-2][manX]==2)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY-1][manX]=8;
				map[manY-2][manX]=3;
				repaint();manY--;mystack.push(11);
			}
			else {map[manY][manX]=8;repaint();}
		}
		if(map[manY-1][manX]==1)
		{
			map[manY][manX]=8;repaint();
		}
	}
	
	void backup(int t)
	{
		int n=t;
		if(n==10)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=4;
			}
			else map[manY][manX]=2;
		}
		else if(n==11)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=9;
			}
			else map[manY][manX]=3;
			if(maptmp[manY-1][manX]==4||maptmp[manY-1][manX]==9)
			{
				map[manY-1][manX]=4;
			}
			else map[manY-1][manX]=2;
		}
		map[manY+1][manX]=8;
		repaint();manY++;
	}
	void movedown()
	{
		if(map[manY+1][manX]==2||map[manY+1][manX]==4)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
				map[manY][manX]=4;
			else map[manY][manX]=2;
			map[manY+1][manX]=5;
			repaint();manY++;mystack.push(20);
		}
		else if(map[manY+1][manX]==3)
		{
			if(map[manY+2][manX]==4)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY+1][manX]=5;
				map[manY+2][manX]=9;
				repaint();manY++;mystack.push(21);
			}
			else if(map[manY+2][manX]==2)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY+1][manX]=5;
				map[manY+2][manX]=3;
				repaint();manY++;mystack.push(21);
			}
			else {map[manY][manX]=5;repaint();}
		}
		else if(map[manY+1][manX]==9)
		{
			if(map[manY+2][manX]==4)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY+1][manX]=5;
				map[manY+2][manX]=9;
				repaint();manY++;mystack.push(21);
			}
			else if(map[manY+2][manX]==2)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY+1][manX]=5;
				map[manY+2][manX]=3;
				repaint();manY++;mystack.push(21);
			}
			else {map[manY][manX]=5;repaint();}
		}
		else if(map[manY+1][manX]==1)
		{
			map[manY][manX]=5;repaint();
		}
	}
	void backdown(int t)
	{
		int n=t;
		if(n==20)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=4;
			}
			else map[manY][manX]=2;
		}
		else if(n==21)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=9;
			}
			else map[manY][manX]=3;
			if(maptmp[manY+1][manX]==4||maptmp[manY+1][manX]==9)
			{
				map[manY+1][manX]=4;
			}
			else map[manY+1][manX]=2;
		}
		map[manY-1][manX]=5;
		repaint();manY--;
	}
	void moveleft()
	{
		if(map[manY][manX-1]==2||map[manY][manX-1]==4)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
				map[manY][manX]=4;
			else map[manY][manX]=2;
			map[manY][manX-1]=6;			
			repaint();manX--;mystack.push(30);
		}
		else if(map[manY][manX-1]==3)
		{
			if(map[manY][manX-2]==4)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX-1]=6;
				map[manY][manX-2]=9;
				repaint();manX--;mystack.push(31);
			}
			else if(map[manY][manX-2]==2)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX-1]=6;
				map[manY][manX-2]=3;
				repaint();manX--;mystack.push(31);
			}
			else {map[manY][manX]=6;repaint();}
		}
		else if(map[manY][manX-1]==9)
		{
			if(map[manY][manX-2]==4)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX-1]=6;
				map[manY][manX-2]=9;
				repaint();manX--;mystack.push(31);
			}
			else if(map[manY][manX-2]==2)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX-1]=6;
				map[manY][manX-2]=3;
				repaint();manX--;mystack.push(31);
			}
			else {map[manY][manX]=6;repaint();}
		}
		else if(map[manY][manX-1]==1)
		{
			map[manY][manX]=6;repaint();
		}
	}
	void backleft(int t)
	{
		int n=t;
		if(n==30)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=4;
			}
			else map[manY][manX]=2;
		}
		else if(n==31)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=9;
			}
			else map[manY][manX]=3;
			if(maptmp[manY][manX-1]==4||maptmp[manY][manX-1]==9)
			{
				map[manY][manX-1]=4;
			}
			else map[manY][manX-1]=2;
		}
		map[manY][manX+1]=6;
		repaint();manX++;
	}
	void moveright()
	{
		if(map[manY][manX+1]==2||map[manY][manX+1]==4)
		{			
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
				map[manY][manX]=4;
			else map[manY][manX]=2;
			map[manY][manX+1]=7;			
			repaint();manX++;mystack.push(40);
		}
		else if(map[manY][manX+1]==3)
		{
			if(map[manY][manX+2]==4)
			{
				if(maptmp[manY][manX]==4)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX+1]=7;
				map[manY][manX+2]=9;
				repaint();manX++;mystack.push(41);
			}
			else if(map[manY][manX+2]==2)
			{
				if(maptmp[manY][manX]==4)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX+1]=7;
				map[manY][manX+2]=3;
				repaint();manX++;mystack.push(41);
			}
			else {map[manY][manX]=7;repaint();}
		}
		else if(map[manY][manX+1]==9)
		{
			if(map[manY][manX+2]==4)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX+1]=7;
				map[manY][manX+2]=9;
				repaint();manX++;mystack.push(41);
			}
			else if(map[manY][manX+2]==2)
			{
				if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
					map[manY][manX]=4;
				else map[manY][manX]=2;
				map[manY][manX+1]=7;
				map[manY][manX+2]=3;
				repaint();manX++;mystack.push(41);
			}
			else {map[manY][manX]=7;repaint();}
		}
		else if(map[manY][manX+1]==1)
		{
			map[manY][manX]=7;repaint();
		}
	}
	void backright(int t)
	{
		int n=t;
		if(n==40)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=4;
			}
			else map[manY][manX]=2;
		}
		else if(n==41)
		{
			if(maptmp[manY][manX]==4||maptmp[manY][manX]==9)
			{
				map[manY][manX]=9;
			}
			else map[manY][manX]=3;
			if(maptmp[manY][manX+1]==4||maptmp[manY][manX+1]==9)
			{
				map[manY][manX+1]=4;
			}
			else map[manY][manX+1]=2;
		}
		map[manY][manX-1]=7;
		repaint();manX--;
	}
	boolean iswin()
	{
		boolean num=false;
		out:for(int i=0; i<20; i++)
			for(int j=0; j<20; j++)
		{
			if(maptmp[i][j]==4||maptmp[i][j]==9)
				if(map[i][j]==9)num=true;
			    else {num=false;break out;}
		}
		return num;
	}
}
class Sound
{
	String path=new String("musics\\");
	String  file=new String("nor.mid");
	Sequence seq;
    Sequencer midi;
	boolean sign;
	void loadSound()
	{
		try {
            seq=MidiSystem.getSequence(new File(path+file));
            midi=MidiSystem.getSequencer();
            midi.open();
            midi.setSequence(seq);
			midi.start();
			midi.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
        }
        catch (Exception ex) {ex.printStackTrace();}
		sign=true;
	}
	void mystop(){midi.stop();midi.close();sign=false;}
	boolean isplay(){return sign;}
	void setMusic(String e){file=e;}
}
class Readmap
{
	private int level,mx,my;
	private int[][] mymap=new int[20][20];
	FileReader r;
	BufferedReader br;String bb="";
	int[] x;int c=0;
	Readmap(int k)
	{
		level=k;
		String s;
		try
		{
			File f=new File("maps\\"+level+".map");
			r=new FileReader(f);
			br=new BufferedReader(r);
		}
		catch (IOException e)
		{
			System.out.println(e);
		}
		try
		{
			while ((s=br.readLine())!=null)
			{
				bb=bb+s;
				
			}
		}
		catch (IOException g)
		{
			System.out.println(g);
		}
		byte[] d=bb.getBytes();
		int len=bb.length();
		int[] x=new int[len];
		for(int i=0;i<bb.length();i++)x[i]=d[i]-48;
		for(int i=0;i<20;i++)
		{
			for(int j=0;j<20;j++)
		    {
				mymap[i][j]=x[c];
		        if(mymap[i][j]==5)
		        {
					mx=j;my=i;
		        }
		        c++;
		    }
	    }
	}
	int[][] getmap(){return mymap;}
	int getmanX(){return mx;}
	int getmanY(){return my;}
}
最近下载更多
                
                19919662101     LV1
                6月16日
            
            
        
                本才子不才     LV1
                2024年11月11日
            
            
        
                微信网友_6699076084797440     LV7
                2023年10月30日
            
            
        
                friend15914798687     LV1
                2023年10月25日
            
            
        
                15589026784     LV1
                2022年6月14日
            
            
        
                木晚晚晚晚晚青     LV1
                2022年4月11日
            
            
        
                mhoooojh     LV1
                2021年10月23日
            
            
        
                金玉博     LV1
                2021年9月6日
            
            
        
                cainame     LV11
                2021年5月11日
            
            
        
                hgfgrht     LV1
                2020年12月30日
            
            
        
最近浏览更多
                
                19919662101     LV1
                6月16日
            
            
        
                hoictas     LV2
                2024年11月26日
            
            
        
                本才子不才     LV1
                2024年11月11日
            
            
        
                鬼屋报道     LV3
                2024年6月4日
            
            
        
                张德志     LV9
                2023年12月27日
            
            
        
                求学的熊猫     LV11
                2023年12月25日
            
            
        
                微信网友_6699076084797440     LV7
                2023年10月30日
            
            
        
                鱼呀会跳舞呢    
                2023年10月30日
            
            
                    暂无贡献等级
            
        
                friend15914798687     LV1
                2023年10月24日
            
            
        
                sdhfkh     LV4
                2023年6月13日
            
            
        
    
                