网站首页 > 文章中心 > 其它

java画个地图源代码

作者:小编 更新时间:2023-09-21 18:19:07 浏览量:364人看过

mappy编写java游戏地图

我百度博客里讲了NeatBeans开发手机游戏地图的.不过做游戏地图,其实用mapwin也行.

求一个java写的地图程序

记得媒体在采访c◆◆之父的时候,他说作为程序员,要相信自己能够解决已经理解的任何事情.

换句话说:您可以解决任何问题,只要想得明白

计算机语言:java.

要理解事件必须分析

生成数组.地图是实际是一个(x,y)的二维坐标系,这很容易让人联系到:亦无论

我准备把设置两个程序界面(主界面/map界面),java的布局管理器不好摆弄,不如分开两个class,主界面用jbuilder自动创建的application模块(带菜单).map界面自己写,也是jframe,类之间相互传递消息,map界面将在程序开始时被初始化,也可以在程序从主界面中初始化(有问题)

构建程序

以下内容为程序代码:

basemapbutton[i] = new

((icon) pic.getimageicon(i, 0));

basemapbutton[i].setbuttontitle(i);

basemapbutton[i].addactionlistener(buttonlistener);

basepanel.add(basemapbutton[i]);

}

itemmapbutton[i] = new mapbutton((icon) pic.getimageicon(i, 1));

itemmapbutton[i].setbuttontitle(i);

itemmapbutton[i].addactionlistener(buttonlistener1);

itempanel.add(itemmapbutton[i]);

tabbedpane.addtab("bases", basepanel);

tabbedpane.addtab("items", itempanel);

contentpane.add(tabbedpane, borderlayout.center);

有两个地方要解释:

mapbutton:自己写的一个类

import javax.swing.icon;

import javax.swing.jbutton;

public class mapbutton extends jbutton {

public mapbutton() {

super();

public mapbutton(string arg0) {

super(arg0);

public mapbutton(action arg0) {

public mapbutton(icon arg0) {

public mapbutton(string arg0, icon arg1) {

super(arg0, arg1);

public byte width, height;

//public pic_w, pic_y;

public void setbuttontitle(byte w, byte h) {

width = w;

height = h;

public void setbuttontitle(byte w){

width =w;

public byte getbuttonwidth() {

return width;

public byte getbuttonheight() {

return height;

pic:自己写的mappic类的intance:

package com.nenghe.mapeditor;

import javax.swing.imageicon;

public class mappic {

imageicon[] baseimages;

imageicon[] itemimages;

imageicon image1;

public mappic() {

init();

public void init() {

baseimages[0] = new imageicon(mappic.class.getresource("m1.png"/images/wink.gif[/img]);

itemimages[0] = new imageicon(mappic.class.getresource("error.png"/images/wink.gif[/img]);

itemimages[1] = new imageicon(mappic.class.getresource("i1.png"/images/wink.gif[/img]);

public imageicon getimageicon(int x, int flags) {

if (flags == 0) {

return baseimages[x];

} else if (flags == 1) {

return itemimages[x];

return null;

写mapbutton在于处理事件的时候可以准确的获得按钮的坐标,忘了说了,map界面中我是用按钮代替地图方格的.这是很容易想到的,最笨也是最省力的办法

pic单独写好改,什么时候内容改变了,很容易改,硬要合写没有也随便.

下面就是事件了

有两个事件要处理,第一个是按钮事件,第二个菜单事件

按钮事件我套用这样的结构

actionlistener buttonlistener = new actionlistener() {

public void actionperformed(actionevent e) {

//system.out.println(e.tostring());

mapbutton pressedbutton = (mapbutton) e.getsource();

mapdraw.temp_x = pressedbutton.getbuttonwidth();

mapdraw.temp_y = 0;

//system.out.println(mapdraw.temp_x◆" "◆mapdraw.temp_y);

};

....

jbuilder中把按钮事件事件单独生成一个类,我不明白,看不懂.真的很高深.

菜单事件模型jbuilder自己加的.overwrite

public void *_actionperformed(actionevent e) {...}

用两个中间值从主界面向map界面传递按了什么:

这里是map界面中的按钮的事件处理程序

pressedwidth = pressedbutton.getbuttonwidth();

pressedheight = pressedbutton.getbuttonheight();

if (temp_y == 0) {

if (item[pressedwidth][pressedheight] != 0) {

item[pressedwidth][pressedheight] = 0;

jfm.showmessage("这里的道具已被置空!\nthe item has been null!"/images/wink.gif[/img];

map[pressedwidth][pressedheight] = temp_x;

pressedbutton.seticon((icon) pic.getimageicon(temp_x,

temp_y));

} else {

if (map[pressedwidth][pressedheight] == 0) {

jfm.showmessage("道具不能放在这!\nnot put item at this point!"/images/wink.gif[/img];

if (temp_x == 0) {

byte value = map[pressedwidth][pressedheight];

pressedbutton.seticon((icon) pic.getimageicon(

value, 0));

temp_x, temp_y));

item[pressedwidth][pressedheight] = temp_x;

请问两个中间值是什么呢?一目了然哦

最后是生成map

public void createmap() throws ioexception {

try {

dataoutputstream mapbinaryfile = new dataoutputstream(

new fileoutputstream(mapeditor.filename ◆ "map"/images/wink.gif[/img]);

dataoutputstream itembinaryfile = new dataoutputstream(

new fileoutputstream(mapeditor.filename ◆ "item"/images/wink.gif[/img]);

mapbinaryfile.writebyte(width);

mapbinaryfile.writebyte(height);

for (byte i = 0; i height; i◆◆)

for (byte j = 0; j width; j◆◆) {

//system.out.println(i◆" "◆j);

byte mapvalue = map[i][j];

byte itemvalue = item[i][j];

if (mapvalue != 0) {

system.out.println(i◆" "◆j◆" "◆ mapvalue);

mapbinaryfile.writebyte(j);

mapbinaryfile.writebyte(i);

mapbinaryfile.writebyte(mapvalue);

if (itemvalue != 0) {

itembinaryfile.writebyte(j);//x

itembinaryfile.writebyte(i);//y

itembinaryfile.writebyte(itemvalue);

mapbinaryfile.close();

itembinaryfile.close();

} catch (eofexception e) {

system.err.println("error"/images/wink.gif[/img];

用JAVA定义一个二维数组的地图

地图拥用个二维数组,A,B的逻辑分别判断,Aif(i(数组高度)= 0,j != 0 )(j--),if(j = 0,i = 0)(i ◆◆),if(i != 0,j == 0)(j ◆◆)if(i == 10, j == 10)(i --)B的逻辑与A反下,就可以了

石头 空白 雪地

空白 砖墙 空白

水面 空白 草地

这像什么? 像不像二维数组.! 所以我们可以使用二维数组来存储一副地图.

当然了使用汉字来描述地图, 还是太麻烦...

我们使用数字来存储更好.把数字和对应的图片做好一一对应的关系.比如0代表空白 1代表石头 ... 绘制地图的时候,循环二维数组,如果是1就在此处画石头,循环到0就什么也不画直接跳过..

拓展,如果还想有稍微立体点的效果, 就是比如有薄雾什么的, 那么你可以建立另外一个天气图层的二维数组, 这个数组就是绘制薄雾等天气的, 这个要最后绘制, 这样才能起到薄雾对下面地图的遮挡..

地图的保存: 二维数组可以直接把每个元素写入到文本文件里, 当然了也可以直接把整个二维数组对象都写入到文件里,使用的时候,直接读取还原即可

怎么样用JAVA绘制地图?

好像是电子地图吧,应该是用mapinfo开发的,你上网查查吧,我不做这块,但是了解一点

java 关于画图类的应用 例如画个圆什么的 最好能画出一张地图~

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import javax.swing.JFrame;

import javax.swing.JPanel;

class PaintovalPane extends JPanel

{

public void paintComponent(Graphics g)

super.paintComponent(g);

g.setColor(Color.pink);

class PaintovalFrame extends JFrame

public PaintovalFrame()

setTitle("lamp");

addWindowListener(

new WindowAdapter()

public void WindowClosing(WindowEvent e)

System.exit(0);

});

Container contentPane = getContentPane();

contentPane.add(new PaintovalPane());

public class Paintoval {

public static void main(String[] args) {

JFrame f = new PaintovalFrame();

f.show();

以上就是土嘎嘎小编为大家整理的java画个地图源代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章