透明 发表于 2015-1-18 11:41:02

JAVA编程:用Java写一个舆图编纂器

java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。用Java写一个舆图编纂器

记得媒体在采访C++之父的时分,他说作为程序员,要信任本人可以办理已了解的任何事变.
换句话说:您能够办理任何成绩,只需想得分明

实际成绩:开辟一个基于地砖的二维游戏的舆图编纂器,请求天生两个binary文件,各包括一个二维数组,*.map寄存地砖,花花卉草甚么的.*.item放道具,好比某个点大概会触发一个事务.很复杂,任意写.看到这里您已大抵分明程序的全体布局.
盘算机言语:java.

要了解事务必需剖析

开端来看,舆图编纂器:天生某种情势的多少数组,不管是哪一种情势的数组,你的目标:
天生数组.舆图是实践是一个(x,y)的二维坐标系,这很简单让人接洽到:亦不管

我筹办把设置两个程序界面(主界面/Map界面),Java的结构办理器欠好玩弄,不如分隔两个class,主界面用JBuilder主动创立的Application模块(带菜单).Map界面本人写,也是JFrame,类之间互相传送动静,map界面将在程序入手下手时被初始化,也能够在程序从主界面中初始化(有成绩)

构建程序
以下内容为程序代码:

basePanel.setLayout(newGridLayout(5,5));
for(bytei=0;i<9;i++){
baseMapButton=new
((Icon)pic.getImageIcon(i,0));
baseMapButton.setButtonTitle(i);
baseMapButton.addActionListener(buttonListener);
basePanel.add(baseMapButton);
}

itemPanel.setLayout(newGridLayout(5,5));
for(bytei=0;i<3;i++){
itemMapButton=newMapButton((Icon)pic.getImageIcon(i,1));
itemMapButton.setButtonTitle(i);
itemMapButton.addActionListener(buttonListener1);
itemPanel.add(itemMapButton);
}

tabbedPane.addTab("Bases",basePanel);
tabbedPane.addTab("Items",itemPanel);
contentPane.add(tabbedPane,BorderLayout.CENTER);




有两个中央要注释:
MapButton:本人写的一个类

以下内容为程序代码:

importjavax.swing.Icon;
importjavax.swing.JButton;

publicclassMapButtonextendsJButton{

publicMapButton(){
super();

}

publicMapButton(Stringarg0){
super(arg0);
}

publicMapButton(Actionarg0){
super(arg0);
}

publicMapButton(Iconarg0){
super(arg0);
}

publicMapButton(Stringarg0,Iconarg1){
super(arg0,arg1);
}

publicbytewidth,height;

//publicpic_w,pic_y;

publicvoidsetButtonTitle(bytew,byteh){
width=w;
height=h;
}

publicvoidsetButtonTitle(bytew){
width=w;
}

publicbytegetButtonWidth(){
returnwidth;
}

publicbytegetButtonHeight(){
returnheight;
}
}




pic:本人写的MapPic类的intance:

以下内容为程序代码:

packagecom.nenghe.mapeditor;

importjavax.swing.ImageIcon;

publicclassMapPic{
ImageIcon[]baseimages;

ImageIcon[]itemimages;

ImageIconimage1;

publicMapPic(){
init();
}

publicvoidinit(){
baseimages=newImageIcon;
baseimages=newImageIcon(MapPic.class.getResource("m1.png");
baseimages=newImageIcon(MapPic.class.getResource("m2.png");
baseimages=newImageIcon(MapPic.class.getResource("m3.png");
baseimages=newImageIcon(MapPic.class.getResource("m4.png");
baseimages=newImageIcon(MapPic.class.getResource("m5.png");
baseimages=newImageIcon(MapPic.class.getResource("m6.png");
baseimages=newImageIcon(MapPic.class.getResource("m7.png");
baseimages=newImageIcon(MapPic.class.getResource("m8.png");
baseimages=newImageIcon(MapPic.class.getResource("m9.png");

itemimages=newImageIcon;
itemimages=newImageIcon(MapPic.class.getResource("error.png");
itemimages=newImageIcon(MapPic.class.getResource("i1.png");
itemimages=newImageIcon(MapPic.class.getResource("i2.png");
}

publicImageIcongetImageIcon(intx,intflags){
if(flags==0){
returnbaseimages;
}elseif(flags==1){
returnitemimages;
}
returnnull;
}
}




写MapButton在于处置事务的时分能够正确的取得按钮的坐标,忘了说了,Map界面中我是用按钮取代舆图方格的.这是很简单想到的,最笨也是最省力的举措

pic独自写好改,甚么时分内容改动了,很简单改,硬要合写没有也任意.

上面就是事务了
有两个事务要处置,第一个是按钮事务,第二个菜单事务
按钮事务我套用如许的布局

以下内容为程序代码:

ActionListenerbuttonListener=newActionListener(){
publicvoidactionPerformed(ActionEvente){
//System.out.println(e.toString());
MapButtonpressedButton=(MapButton)e.getSource();

MapDraw.temp_x=pressedButton.getButtonWidth();
MapDraw.temp_y=0;
//System.out.println(MapDraw.temp_x+""+MapDraw.temp_y);
}
};
....

baseMapButton.addActionListener(buttonListener);




JBuilder中把按钮事务事务独自天生一个类,我不分明,看不懂.真的很深邃.
菜单事务模子JBuilder本人加的.overwrite

以下内容为程序代码:

publicvoid*_actionPerformed(ActionEvente){...}




用两其中间值从主界面向map界面传送按了甚么:

这里是map界面中的按钮的事务处置程序

以下内容为程序代码:

ActionListenerbuttonListener=newActionListener(){
publicvoidactionPerformed(ActionEvente){
MapButtonpressedButton=(MapButton)e.getSource();
pressedWidth=pressedButton.getButtonWidth();
pressedHeight=pressedButton.getButtonHeight();

if(temp_y==0){
if(item!=0){
item=0;
jfm.showMessage("这里的道具已被置空!
Theitemhasbeennull!";
}
map=temp_x;
pressedButton.setIcon((Icon)pic.getImageIcon(temp_x,
temp_y));
}else{
if(map==0){
jfm.showMessage("道具不克不及放在这!
Notputitematthispoint!";
}else{
if(temp_x==0){
bytevalue=map;
item=0;
pressedButton.setIcon((Icon)pic.getImageIcon(
value,0));
}else{
pressedButton.setIcon((Icon)pic.getImageIcon(
temp_x,temp_y));
item=temp_x;
}
}
}
}
};



叨教两其中间值是甚么呢?一览无余哦

最初是天生map

以下内容为程序代码:

publicvoidcreateMap()throwsIOException{
try{
DataOutputStreammapbinaryfile=newDataOutputStream(
newFileOutputStream(MapEditor.filename+"map");

DataOutputStreamitembinaryfile=newDataOutputStream(
newFileOutputStream(MapEditor.filename+"item");

mapbinaryfile.writeByte(width);
mapbinaryfile.writeByte(height);

for(bytei=0;i<height;i++)
for(bytej=0;j<width;j++){
//System.out.println(i+""+j);
bytemapvalue=map;
byteitemvalue=item;

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(EOFExceptione){
System.err.println("Error";
}
}




停止!
就这么复杂!可是成绩良多良多.都不克不及叫程序,任意写的玩的哦
必要源代码的伴侣请留下email,要指出bug哦
亦大概msn交换:chinuxman@hotmail.com


因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。

分手快乐 发表于 2015-1-21 12:47:29

是一种使用者不需花费很多时间学习的语言

admin 发表于 2015-1-25 15:24:44

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

只想知道 发表于 2015-1-30 23:55:18

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

老尸 发表于 2015-2-6 16:18:50

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

爱飞 发表于 2015-2-8 20:33:22

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

透明 发表于 2015-2-15 23:10:43

是一种为 Internet发展的计算机语言

若天明 发表于 2015-2-25 20:46:09

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

莫相离 发表于 2015-3-8 03:00:49

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

深爱那片海 发表于 2015-3-15 17:43:27

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

再现理想 发表于 2015-3-17 05:09:10

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

柔情似水 发表于 2015-3-18 14:03:50

是一种将安全性(Security)列为第一优先考虑的语言

冷月葬花魂 发表于 2015-3-20 06:58:10

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

若相依 发表于 2015-3-20 12:43:09

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

仓酷云 发表于 2015-3-20 15:02:13

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

飘飘悠悠 发表于 2015-3-25 11:17:59

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

愤怒的大鸟 发表于 2015-3-28 18:17:02

是一种语言,用以产生「小应用程序(Applet(s))

蒙在股里 发表于 2015-4-1 04:07:10

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

小魔女 发表于 2015-4-7 14:29:14

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

变相怪杰 发表于 2015-4-10 11:51:17

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
页: [1] 2
查看完整版本: JAVA编程:用Java写一个舆图编纂器