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

📄 mapeditor.java

📁 一个j2me手机游戏程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.dnd.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class MapEditor extends JFrame implements Runnable,KeyListener
{
	public static final int SCREEN_WIDTH=1024;
	public static final int SCREEN_HEIGHT=720;
	
	public static final int BOX_STRUT_HEIGHT = 250;
	
	public static final int MENUITEM_NEW               = 0;
	public static final int MENUITEM_OPEN              = 1;
	public static final int MENUITEM_SAVE              = 2;
	public static final int MENUITEM_SAVEAS            = 3;
	public static final int MENUITEM_LOADIMAGE         = 4;
	public static final int MENUITEM_EXIT              = 5;
	
	public static final int BT_SET_TILE                = 0;
	public static final int BT_SET_MAP                 = 1;
	public static final int BT_SET_SCREEN              = 2;
	public static final int BT_PREVIEW                 = 3;
	public static final int BT_QUIT_PREVIEW            = 4;
	
	public static final int MAX_ZOOM_FACTOR = 8;

	static int zoomFactor = 1;
	
	Container c;
	Container mainFrame = new Container();
	Container controlFrame = new Container();
	
	Thread m_t = new Thread(this);
	
	DropTarget dt;
	
	static Box tileBox;
	static Box mapBox;
	static Box screenBox;
	static Box controlBox;
	
	static JLabel lTileWidth = new JLabel("Tile Width");
	static JLabel lTileHeight = new JLabel("Tile Height");
	static JLabel lMapWidth = new JLabel("Map Width");
	static JLabel lMapHeight = new JLabel("Map Height");
	static JLabel lScreenWidth = new JLabel("Screen Width");
	static JLabel lScreenHeight = new JLabel("Screen Height");
	
	static JTextField tf_tileWidth = new JTextField(1);
	static JTextField tf_tileHeight = new JTextField(1);
	static JTextField tf_mapWidth = new JTextField(1);
	static JTextField tf_mapHeight = new JTextField(1);
	static JTextField tf_screenWidth = new JTextField(1);
	static JTextField tf_screenHeight = new JTextField(1);
	
	static JButton preview;
	static JButton quitPreview;
	static JButton setTile;
	static JButton setMap;
	static JButton setScreen;
	
	static JScrollPane panelScrollPane;
	
	JMenuBar MenuBar = new JMenuBar();
	JMenu[] menus = {new JMenu("File")};
	JMenuItem[] fileItems = {new JMenuItem("New"), new JMenuItem("Open"), new JMenuItem("Save"), new JMenuItem("Save as"), new JMenuItem("Load Tile"), new JMenuItem("Exit")};
	
	JToolBar toolBar = new JToolBar();
	
	static EditingPanel editingPanel = new EditingPanel();
	
	File destFile;
	
	static Border titleBorder;
	
	static Image mapBuffer;
	static Graphics g_mapBuffer;
	
	MapEditor()
	{
		super("MapEditor");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		c=getContentPane();
		c.setLayout(new BorderLayout());
		
		GridBagLayout gridBag = new GridBagLayout();
		GridBagConstraints constraints = new GridBagConstraints();
		
		setBounds(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
		
		controlBox = Box.createVerticalBox();
		tileBox = Box.createHorizontalBox();
		mapBox = Box.createHorizontalBox();
		screenBox = Box.createHorizontalBox();
		
		initToolBar();
		initMenuBar();
		initButtons();
		
		addKeyListener(this);
		
//		panelScrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//		panelScrollPane.setViewportView(editingPanel);
		
		tileBox.add(lTileWidth);
		tileBox.add(tf_tileWidth);
		tileBox.add(lTileHeight);
		tileBox.add(tf_tileHeight);
		tileBox.add(setTile);
		
		mapBox.add(lMapWidth);
		mapBox.add(tf_mapWidth);
		mapBox.add(lMapHeight);
		mapBox.add(tf_mapHeight);
		mapBox.add(setMap);
		
		screenBox.add(lScreenWidth);
		screenBox.add(tf_screenWidth);
		screenBox.add(lScreenHeight);
		screenBox.add(tf_screenHeight);
		screenBox.add(setScreen);
		
//		controlFrame.setLayout(new BorderLayout());
//		controlFrame.add(tfBox, BorderLayout.NORTH);
//		controlFrame.add(tilePanel, BorderLayout.CENTER);
//		controlFrame.add(preview, BorderLayout.SOUTH);
		
		controlBox.add(tileBox);
		controlBox.add(Box.createVerticalStrut(BOX_STRUT_HEIGHT));
		controlBox.add(mapBox);
		controlBox.add(Box.createVerticalStrut(BOX_STRUT_HEIGHT));
		controlBox.add(screenBox);
		controlBox.add(Box.createVerticalStrut(20));
		controlBox.add(preview);
		controlBox.add(quitPreview);
		
		mainFrame.setLayout(gridBag);
		
		constraints.weightx = constraints.weighty = 3.0;
		constraints.fill = constraints.BOTH;
		gridBag.setConstraints(editingPanel, constraints);
		mainFrame.add(editingPanel);
		
		constraints.weightx = 1.0;
		gridBag.setConstraints(controlBox, constraints);
		mainFrame.add(controlBox);
		
		c.add(toolBar, BorderLayout.NORTH);
		c.add(mainFrame, BorderLayout.CENTER);
		
		dt = new DropTarget(editingPanel, new TileDropTargetListener());
		
		setVisible(true);
		
		initMapBuffer();
		
		m_t.start();
	}

	
	void initMenuBar()
	{
		for(int i = 0;i < fileItems.length;i++)
		{
			menus[0].add(fileItems[i]);
			
			fileItems[i].addActionListener(new FileItemListener(i));
			
			if(i == 3 || i == fileItems.length - 2)
			{
				menus[0].addSeparator();
			}
		}
		
		setJMenuBar(MenuBar);
		
		for(int i = 0; i < menus.length; i++)
		{
	      MenuBar.add(menus[i]);
	    }
	    
	    MenuBar.add(menus[0]);
	    
	}
	
	void initToolBar()
	{
		toolBar.add(new ZoomIn("ZoomIn", new ImageIcon("plus.png")));
		toolBar.add(new ZoomOut("ZoomOut", new ImageIcon("minus.png")));
	}
	
	void initButtons()
	{
		setTile = new JButton("Set");
		setTile.addActionListener(new ButtonListener(BT_SET_TILE));
		
		setMap = new JButton("Set");
		setMap.addActionListener(new ButtonListener(BT_SET_MAP));
		
		setScreen = new JButton("Set");
		setScreen.addActionListener(new ButtonListener(BT_SET_SCREEN));
		
		preview = new JButton("Preview");
		preview.addActionListener(new ButtonListener(BT_PREVIEW));
		
		quitPreview = new JButton("Quit Preview");
		quitPreview.addActionListener(new ButtonListener(BT_QUIT_PREVIEW));
		quitPreview.setVisible(false);
	}
	
	void initMapBuffer()
	{
		if(mapBuffer == null)
		{
			mapBuffer=createImage(editingPanel.EDITING_IMAGE_WIDTH,editingPanel.EDITING_IMAGE_HEIGHT);
		}
		
		editingPanel.initMapBuffer();
	}
	
	void save(File saveFile)
 	{
 		System.out.println("Saving to " + saveFile.getName());
 		
 		try
 		{
 			FileOutputStream fout = new FileOutputStream(saveFile);
 			
 			DataOutputStream out = new DataOutputStream(fout);
 			
 			out.writeInt(editingPanel.tileWidth);
 			out.writeInt(editingPanel.tileHeight);
 			
 			out.writeInt(editingPanel.mapWidth / editingPanel.tileWidth);
 			out.writeInt(editingPanel.mapHeight / editingPanel.tileHeight);
 			
 			for(int i = 0;i < editingPanel.tileData.length;i++)
 			{
 				for(int j = 0;j < editingPanel.tileData[0].length;j++)
 				{
 					out.writeInt(editingPanel.tileData[i][j]);
 					System.out.println(editingPanel.tileData[i][j]);
 				}
 			}
 			
 			for(int i = 0;i < editingPanel.tileFlag.length;i++)
 			{
 				for(int j = 0;j < editingPanel.tileFlag[0].length;j++)
 				{
 					out.writeByte(editingPanel.tileFlag[i][j]);
 				}
 			}
 			
 			out.flush();
 			
 			fout.close();
 			out.close();
 		}
 		catch(Exception e)
 		{
 			System.out.println(e.toString());
 		}
 	}
 	
 	void open(File openFile)
 	{
 		System.out.println("Opening " + openFile.getName());
 		
 		try
 		{
 			DataInputStream in = new DataInputStream(new FileInputStream(openFile));
 			
 			editingPanel.tileWidth = in.readInt();
 			editingPanel.tileHeight = in.readInt();
 			
 			editingPanel.nb_tile_in_tile_image_H = editingPanel.imageWidth / zoomFactor / editingPanel.tileWidth;
 			editingPanel.nb_tile_in_tile_image_V = editingPanel.imageHeight / zoomFactor / editingPanel.tileHeight;
 			
 			editingPanel.nb_tile_in_map_H = in.readInt();
 			editingPanel.nb_tile_in_map_V = in.readInt();
 			
 			editingPanel.mapWidth = editingPanel.tileWidth * editingPanel.nb_tile_in_map_H;
 			editingPanel.mapHeight = editingPanel.tileHeight * editingPanel.nb_tile_in_map_V;
 			
 			editingPanel.tileData = new int[editingPanel.nb_tile_in_map_H][editingPanel.nb_tile_in_map_V];
 			
 			editingPanel.tileFlag = new byte[editingPanel.nb_tile_in_map_H][editingPanel.nb_tile_in_map_V];
 			
 			for(int i = 0;i < editingPanel.tileData.length;i++)
 			{
 				for(int j = 0;j < editingPanel.tileData[0].length;j++)
 				{
 					editingPanel.tileData[i][j] = in.readInt();
 					System.out.println(editingPanel.tileData[i][j]);
 				}
 			}
 			
 			for(int i = 0;i < editingPanel.tileFlag.length;i++)
 			{
 				for(int j = 0;j < editingPanel.tileFlag[0].length;j++)
 				{
 					editingPanel.tileFlag[i][j] = in.readByte();
 				}
 			}
 			
	 		in.close();
 		}
 		catch(Exception e)
 		{
 			e.printStackTrace();
 		}
 	}
 	

⌨️ 快捷键说明

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