⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapediter.java

📁 这是自己设计的一款java泡泡游戏。 这是自己设计的一款java泡泡游戏。这是自己设计的一款java泡泡游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package mapEditer;

import java.awt.*;
import java.io.*;
import java.awt.event.*;
//import java.util.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.util.EventListener;
import like.graphics.*;
import pp.actor.*;

/*******************************************************
 *通过MAP类的修改,制作和更改地图文件
 *然后用ObjectInputStream,ObjectOutputStream读写地图文件
 *******************************************************/
public class MapEditer extends Frame 
{
	MouseHandle mouseHandle       = new MouseHandle();
	MenuHandle menuHandle         = new MenuHandle();
	ButtonHandle buttonHandle     = new ButtonHandle();
	StateHandle stateHandle       = new StateHandle();
	ComboBoxHandle comboBoxHandle = new ComboBoxHandle();
	KeyHandle keyHandle           = new KeyHandle();
	Map                   map;
	Image                 imageRecord;
	int                   tileRecord , fraiseRecord;
	String                stringRecord , resType;
	JComboBox             maxPlayers , locatePlayer;
	Panel                 tile , fraise , pc , pb , pu , cover;
	int                   floorORfraise=0;//0代表现在看到FLOOR面板,1代表现在看到Fraise面板
	Button                b1 , b2 , coverAll , setPlayer , player1 , player2;
	Label                 jlb , setPlayerLabel , types;
	JLabel                iconlbl;
	JButton               []flr = new JButton[20];
	JButton               []fs = new JButton[20];
	CardLayout            clo;
	Graphics              g , tmpg;
	Image                 tmpImage;
	MenuBar               main;
	Menu                  file , edit;
	MenuItem              save , load , exit , init , about;
	CheckboxGroup         btnMenuGroup;
	JPopupMenu            popmu;
	JMenuItem             fillX,fillY;
	int                   mouseX , mouseY;
	CheckboxMenuItem      showGrid;
	JComboBox             setType;
	boolean               tileorfraise;//if select tile now tileorfraise=true
							//else tileorfraise=false;
	boolean               imageorstring;//if click image this=true else this =false;
	boolean               pressingCtrl=false;
	MyPanel               sim;
	MapEditer             newframe;
	//地图元素(图片)都从group里加载
	ResourceGroup group ;
	public MapEditer(String resType)
	{
		super();
		this.resType = resType;
		group = new ResourceGroup(resType);
		//menu part
		main  = new MenuBar();
		file  = new Menu("文件");
		file.setShortcut(new MenuShortcut(KeyEvent.VK_F));
		save  = new MenuItem("保存地图");
		save.setShortcut(new MenuShortcut(KeyEvent.VK_S));
		save.addActionListener(menuHandle);
		load  = new MenuItem("载入地图");
		load.setShortcut(new MenuShortcut(KeyEvent.VK_O));
		load.addActionListener(menuHandle);
		init  = new MenuItem("初始化");
		init.setShortcut(new MenuShortcut(KeyEvent.VK_I));
		init.addActionListener(menuHandle);
		about = new MenuItem("关于");
		about.setShortcut(new MenuShortcut(KeyEvent.VK_A));
		about.addActionListener(menuHandle);
		exit  = new MenuItem("退出");
		exit.setShortcut(new MenuShortcut(KeyEvent.VK_E));
		exit.addActionListener(menuHandle);
		file.add(load);
		file.add(save);
		file.addSeparator();
		file.add(init);
		file.addSeparator();
		file.add(about);
		file.addSeparator();
		file.add(exit);
		edit = new Menu("编辑");
		edit.setShortcut(new MenuShortcut(KeyEvent.VK_E));
		showGrid = new CheckboxMenuItem("显示网格");
		showGrid.addItemListener(stateHandle);
		edit.add(showGrid);
		main.add(file);
		main.add(edit);
		setMenuBar(main);
		popmu = new JPopupMenu();
		fillX = new JMenuItem("填充行");
		fillX.addActionListener(menuHandle);
		fillY = new JMenuItem("填充列");
		fillY.addActionListener(menuHandle);
		popmu.add(fillX);
		popmu.add(fillY);
		
		//添加一些列GUI组件
		clo = new CardLayout();
		//button组件
		b1 = new Button("地表");
		b2 = new Button("障碍物");
		b1.addActionListener(buttonHandle);
		b2.addActionListener(buttonHandle);
		
		pb = new Panel(new FlowLayout(FlowLayout.LEFT));
		pb.setBackground(Color.GRAY);
		pb.add(b1);
		pb.add(b2);
		
		tile = new Panel(new FlowLayout(FlowLayout.LEFT));
		fraise = new Panel(new FlowLayout(FlowLayout.LEFT));
		
		group.init(this);
		setTilePanel();
		setFraisePanel();
		cover = new Panel(new FlowLayout(FlowLayout.RIGHT));
		coverAll = new Button("填充地表");
		coverAll.addActionListener(buttonHandle);
		cover.add(coverAll);
		cover.add(coverAll);
		tile.add(cover);
		
		pc = new Panel();
		pc.setLayout(clo);
		pc.add(tile,"1");
		pc.add(fraise,"2");
		
		pu = new Panel(null);
		jlb = new Label("当前选中图像:");
		jlb.setBackground(Color.RED);
		iconlbl = new JLabel();
		player1 = new Button("玩家1位置");
		player2 = new Button("玩家2位置");
		player1.addActionListener(buttonHandle);
		player2.addActionListener(buttonHandle);
		types   = new Label("设置风格");
		setType = new JComboBox();
		creatsetType(setType);
		setType.addActionListener(comboBoxHandle);
		pu.add(jlb);
		pu.add(iconlbl);
		pu.add(player1);
		pu.add(player2);
		pu.add(types);
		pu.add(setType);
		jlb.setBounds(5,5,80,40);
		iconlbl.setBounds(30,48,80,80);
		player1.setBounds(5,132,80,40);
		player2.setBounds(5,175,80,40);
		types.setBounds(5,220,80,40);
		setType.setBounds(5,265,80,40);
		sim = new MyPanel();
		sim.setBackground(Color.BLACK);
		sim.addMouseListener(mouseHandle);
		sim.addKeyListener(keyHandle);
		
		this.setLayout(null);
		this.setSize(706,696);//画图的区域的边界为3
		this.setResizable(false);
		add(pc);
		add(pb);
		add(sim);
		add(pu);
		pc.setBounds(0,50,706,90);
		pb.setBounds(0,140,706,30);
		sim.setBounds(0,170,606,526);
		pu.setBounds(606,170,100,526);
		
		mapInit();
		//exit
		this.addWindowListener(new WindowAdapter(){
				public void windowClosing(WindowEvent e)
				{
					System.exit(0);
				}

			});
		GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
		this.setLocation((device.getDisplayMode().getWidth()-this.getWidth())/2,0); 
		setVisible(true);
		tmpImage = sim.createImage(606,526);
		tmpg     = tmpImage.getGraphics();
		sim.setSource(tmpg,tmpImage,group,map);
	}
	private void creatsetType(JComboBox jcb)
	{
		jcb.addItem("");
		jcb.addItem("小区");
		jcb.addItem("工厂");
		jcb.addItem("森林");
		jcb.addItem("墓地");
		jcb.addItem("沙漠");
	}
	public void mapInit(){
		map = new Map();
		map.playerMax=2;
		map.configureName=resType;
		imageRecord   = group.getImage(1,1);
		tileRecord    = 1;
		this.iconlbl.setIcon((Icon)new ImageIcon(imageRecord));
		tileorfraise  = true;
		imageorstring = true;
		showGrid.setState(false);
		iconlbl.setVisible(true);
	}
	public void setTilePanel()
	{
		for(int tileImageAt=1;tileImageAt<=group.tileNumbers;tileImageAt++)
		{
			flr[tileImageAt]=new JButton(new ImageIcon(group.getImage(1,tileImageAt)));
			flr[tileImageAt].setBorder(BorderFactory.createEmptyBorder());
			flr[tileImageAt].setIgnoreRepaint(true);
			tile.add(flr[tileImageAt]);
			flr[tileImageAt].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					imageorstring    = true;
					tileorfraise     = true;
					imageRecord      = ((ImageIcon)((JButton)e.getSource()).getIcon()).getImage();
					iconlbl.setIcon((Icon)new ImageIcon(imageRecord));
					iconlbl.setVisible(true);
					for(int n=1;n<=group.tileNumbers;n++)
					{
						if(imageRecord==group.getImage(1,n))
						{
							tileRecord=n;
							break;
						}
					}
				}
			});
		}
	}
	public void setFraisePanel()
	{
		for(int fraiseImageAt=1;fraiseImageAt<=group.fraiseNumbers;fraiseImageAt++)
		{
			fs[fraiseImageAt]=new JButton(new ImageIcon(group.getImage(2,fraiseImageAt)));
			fs[fraiseImageAt].setBorder(BorderFactory.createEmptyBorder());
			fs[fraiseImageAt].setIgnoreRepaint(true);
			fraise.add(fs[fraiseImageAt]);
			fs[fraiseImageAt].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					imageorstring  = true;
					tileorfraise   = false;
					imageRecord    = ((ImageIcon)((JButton)e.getSource()).getIcon()).getImage();
					iconlbl.setIcon((Icon)new ImageIcon(imageRecord));
					iconlbl.setVisible(true);
					for(int n=1;n<=group.fraiseNumbers;n++)
					{
						if(imageRecord==group.getImage(2,n))
						{
							fraiseRecord=n;
							break;
						}
					}
				}
			});
		}
	}
	public void fillx()
	{
		for(int i=14;i>=0;i--)
		{
			if(!imageorstring)return;
			if(tileorfraise)
			{
				map.tile[(mouseY-3)/40][i]=tileRecord;
			}
			else
			{
				if(map.tile[(mouseY-3)/40][i]!=0)
					map.fraise[(mouseY-3)/40][i]=fraiseRecord;
			}
		}
	}
	public void filly()
	{
		for(int i=0;i<13;i++)
		{
			if(!imageorstring)return;
			if(tileorfraise)
			{
				map.tile[i][(mouseX-3)/40]=tileRecord;
			}
			else
			{
				if(map.tile[i][(mouseX-3)/40]!=0)
					map.fraise[i][(mouseX-3)/40]=fraiseRecord;
			}
		}
	}
	public static void main(String args[])
	{
		new MapEditer("configures\\xq.ini");	
	}
	private class KeyHandle extends KeyAdapter
	{
		public void keyPressed(KeyEvent e)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -