go語言寫web怎么樣,go語言適合web開發嗎

求教貼,Java桌面小游戲的地圖怎么做

小游戲地圖一般都是各種圖片的拼接,然后保存到2維數組里面

我們提供的服務有:網站設計制作、成都網站設計、微信公眾號開發、網站優化、網站認證、耀州ssl等。為上千企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的耀州網站制作公司

比如

//數值常量

public?static?final?int?EMPTY=0;//空地什么也沒有

public?static?final?int?BRICK=1;//土墻

public?static?final?int?STONE=2;//石頭?

public?static?final?int?SEA=3;//海洋

public?static?final?int?GREENS=4;//草地

public?static?final?int?SNOW=5;//雪地

//對應的圖片

.....

public?static?final?Image?IMG_STONE=new?ImageIcon(MapValues.class.getResource("/resource/imgs/stone.png")).getImage();//石頭圖片

......

那么保存一副地圖就可以用類似于下面的二維數組表示

002405100

145111123

132131001

使用的時候, 加載二維數組,然后把對應的圖片顯示在地圖上就可以了.

不過這樣做也存在一定的問題.

1:圖片太多,對應的數字太多, 那么地圖編輯起來很麻煩, 需要有強大的記憶力,和想象力

2:不能一邊編輯,一邊就顯示出效果來, 出錯后,排查麻煩. 效率太低

所以,我們還需要寫點代碼,做一個簡單的地圖編輯器,添加輔助線,擦除工具等, 這樣的話, 編輯地圖就非常方便了,所見即所得.并且一鍵可以保存為地圖數據(二維數組)

學習swing的時候,寫過一個簡單的地圖編輯器,效果圖如下

為了熟悉不同的圖形界面API, 游戲界面使用的不是swing,而是JavaFX

求一個java寫的地圖程序

用java寫一個地圖編輯器

記得媒體在采訪c++之父的時候,他說作為程序員,要相信自己能夠解決已經理解的任何事情.

換句話說:您可以解決任何問題,只要想得明白

現實問題:開發一個基于地磚的二維游戲的地圖編輯器,要求生成兩個binary文件,各包含一個二維數組,*.map存放地磚,花花草草什么的.*.item放道具,比如某個點可能會觸發一個事件.很簡單,隨便寫.看到這里您已經大致明白程序的整體結構.

計算機語言:java.

要理解事件必須分析

初步來看,地圖編輯器:生成某種形式的若干數組,無論是哪種形式的數組,你的目的:

生成數組.地圖是實際是一個(x,y)的二維坐標系,這很容易讓人聯系到:亦無論

我準備把設置兩個程序界面(主界面/map界面),java的布局管理器不好擺弄,不如分開兩個class,主界面用jbuilder自動創建的application模塊(帶菜單).map界面自己寫,也是jframe,類之間相互傳遞消息,map界面將在程序開始時被初始化,也可以在程序從主界面中初始化(有問題)

構建程序

以下內容為程序代碼:

basepanel.setlayout(new gridlayout(5, 5));

for (byte i = 0; i 9; i++) {

basemapbutton[i] = new

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

basemapbutton[i].setbuttontitle(i);

basemapbutton[i].addactionlistener(buttonlistener);

basepanel.add(basemapbutton[i]);

}

itempanel.setlayout(new gridlayout(5, 5));

for (byte i = 0; i 3; 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) {

super(arg0);

}

public mapbutton(icon arg0) {

super(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 = new imageicon[9];

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

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

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

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

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

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

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

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

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

itemimages = new imageicon[3];

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]);

itemimages[2] = new imageicon(mappic.class.getresource("i2.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);

}

};

....

basemapbutton[i].addactionlistener(buttonlistener);

jbuilder中把按鈕事件事件單獨生成一個類,我不明白,看不懂.真的很高深.

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

以下內容為程序代碼:

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

用兩個中間值從主界面向map界面傳遞按了什么:

這里是map界面中的按鈕的事件處理程序

以下內容為程序代碼:

actionlistener buttonlistener = new actionlistener() {

public void actionperformed(actionevent e) {

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

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];

} else {

if (temp_x == 0) {

byte value = map[pressedwidth][pressedheight];

item[pressedwidth][pressedheight] = 0;

pressedbutton.seticon((icon) pic.getimageicon(

value, 0));

} else {

pressedbutton.seticon((icon) pic.getimageicon(

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反下,就可以了

如何做一個簡單的java地圖編輯器

地圖編輯器思路如下:

這個小地圖是3x3的,我們用漢字對它進行描述:

石頭 空白 雪地

空白 磚墻 空白

水面 空白 草地

這像什么? 像不像二維數組.! 所以我們可以使用二維數組來存儲一副地圖.

當然了使用漢字來描述地圖, 還是太麻煩...

我們使用數字來存儲更好.把數字和對應的圖片做好一一對應的關系.比如0代表空白 1代表石頭 ... 繪制地圖的時候,循環二維數組,如果是1就在此處畫石頭,循環到0就什么也不畫直接跳過..

拓展,如果還想有稍微立體點的效果, 就是比如有薄霧什么的, 那么你可以建立另外一個天氣圖層的二維數組, 這個數組就是繪制薄霧等天氣的, 這個要最后繪制, 這樣才能起到薄霧對下面地圖的遮擋..

編輯地圖的時候 ,先點擊一個圖片,表示等下需要繪制的圖片是哪一個.然后在編輯地圖的時候按下鼠標代表開始開始繪制, 然后鼠標拖動到哪里就繪制到哪里, 最后松開鼠標松開, 完成繪制

地圖的保存: 二維數組可以直接把每個元素寫入到文本文件里, 當然了也可以直接把整個二維數組對象都寫入到文件里,使用的時候,直接讀取還原即可

Java版網頁地圖

大思路挺簡單的。就是處理圖片,在數據庫中存放一張大圖(完整的大地圖)。根據頁面請求,在服務端用Java處理后,向客戶端發送不同的大圖部分。

你說不用API,這是不可能的,你寫System.out.println("");就是在用API。只不過是Java標準配置,用起來方便。我想你的意思是不用第三方類庫(如GoogleAPI)吧。

本文名稱:go語言寫web怎么樣,go語言適合web開發嗎
本文鏈接:http://m.kartarina.com/article48/dseedep.html

成都網站建設公司_創新互聯,為您提供企業網站制作服務器托管小程序開發營銷型網站建設外貿網站建設品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計
主站蜘蛛池模板: 老司机亚洲精品影院无码| 无码夫の前で人妻を犯す中字| 亚洲av永久中文无码精品| 亚洲AV永久青草无码精品| 人妻中文字系列无码专区| 精品国产AV无码一区二区三区| 一本无码中文字幕在线观| 亚洲av日韩aⅴ无码色老头| 亚洲精品无码国产| 久久久久久亚洲av无码蜜芽| 高h纯肉无码视频在线观看| 无码人妻丰满熟妇啪啪| 中文字幕人成无码人妻 | 久久亚洲AV无码精品色午夜麻豆| 亚洲精品无码人妻无码| 无码少妇精品一区二区免费动态| 无码精品人妻一区二区三区影院 | 亚洲AV无码专区在线电影成人| 午夜福利无码不卡在线观看| 午夜无码一区二区三区在线观看| 亚洲中文无码永久免费| 日韩精品专区AV无码| 亚洲级αV无码毛片久久精品| 国产午夜无码福利在线看网站| 亚洲最大天堂无码精品区| 无码AV片在线观看免费| 麻豆aⅴ精品无码一区二区| 无码人妻精品中文字幕免费| 亚洲av无码片在线播放| 国产精品无码久久综合| 国产精品无码专区| 亚洲AV无码AV男人的天堂| 亚洲熟妇无码乱子AV电影| 亚洲大尺度无码专区尤物 | 日韩人妻无码精品一专区| 久久亚洲AV无码精品色午夜麻| 中文字幕乱码人妻无码久久| 中文有无人妻vs无码人妻激烈 | 亚洲精品无码久久毛片| 麻豆人妻少妇精品无码专区| 国产成人无码aa精品一区|