JAVA游戏入门开发DAY 1

来源:互联网 发布:网络监控布线图 编辑:程序博客网 时间:2024/05/29 10:02

第一次试着写,不知道怎么说,如果有说得不好的地方,请大家批评指正。

总的说来,有一定编程基础手,就应该写几个项目来熟悉一下,如你学完JAVA基本语法,然后就应该做几个JAVA项目,藉此熟悉语言的同时也能窥探到这门语言的编程思路和方法,如果光会语言而没做过项目的话,那么就很难写出好程序。


我是书城和一些书店的常客,经常去一些书店读书,国内的编程书总的来说让人失望,甚至让人害怕编程,在此吐槽几句,很多书雷同就不说了,写得好的书,你雷同,也就算了,也不能不分青红皂白,大部分的书很多都是扔书包,拖字数,说了很多无关紧要的东西,但是项目原理却着墨甚少,甚至不说,然后再贴几个函数方法,写写说明,然后再将最后完成的代码往上面一贴,搞定,ok,顶多隔壁加点注释,特别是安卓编程的书,代码一贴、然后布局XML一贴就完事了。一本书几百甚至上千页厚,真正有用的内容可能就十来页,剩下的基本都是代码,只能说是天坑。问题是你只给代码不给深入解释,不说明原理,又有何意义?打个比方,你走路都还没学好就直接学飞了,其实就是本末倒置,一些原理,一些方法都是从初级到高级进化而来,真的需要加以说明,但是直接就将最终代码给出,让人摸不着头脑。。。。。


然后我在外网偶遇到一篇写的不错的JAVA编程入门,是循序渐进类型的,手把手教,也挺符合我的风格,我希望我讲的即使不太会编程,即使完全不会的人也能看得懂,也能明白,由此享受编程之乐趣。也符合当年老师的教诲,写教程就应该让尽可能多的人看得懂也听得明白,这样才是我的风格。


顺道当是为自己做笔记。


首先让大家看看完成品,有目标才有动力嘛。




成品如上所示,当中包括了平台的搭建、人物的控制、移动、碰撞检测、子弹、还有就是最简单最简单的AI。


然后这里就不讲JAVA了,以后有机会再说吧,这里就当大家有一个初步的JAVA基础,然后由浅入深的来进行说明,另外说明一点,我并非英语专业的,英语也没去考4级,所以大部分都是结合自己的理解意译,务求简单、明了、看得懂。


首先,设计游戏得先设置一个平台,就好像你画画得先有纸,跳舞得有舞台一样。所以这一篇先搭建一个平台。这一篇比较简单,如果会的可以不看,基础中的基基础:


忘了说,我们是在ECLIPSE下编程的,怎么安装?如何配置等我就不在此说明了,网络上一大堆,请自行百度,再次我就直接来了。


首先在这个软件下新建一个项目,如图:


在右边单击鼠标右键,然后NEW一个JAVA项目出来


然后给项目起一个名字,最好如图所示,这里要小心,确保没有错误提示才好。然后原文说JRE的版本1.6或者1.7都可以,没所谓。然后我们所有图片都在该路径的SRC文件夹下



1.新建一个包,叫做kiloboltgame,也是跟刚刚的步骤差不多,也是右键,新建,然后选PACKAGE,然后输入名字就好,我们就在包下面新建我们的主要的类,也是对着包,右键,新建一个CLASS,叫StartingClass,最后结果如图:


这样包里面就有一个类了


2。集成APPLET类和重写方法。


这里我简单说明一下,初学的JAVA程序都是在命令行运行,如果要好像WINDOWS的窗口程序那样运行的话,我们就继承APPLET类,帮我们新建窗口,这样一来就减轻我们的工作量,什么窗口事件啊,很多响应就不用自己亲手写了。


1,在StartingClass关键字后面增加关键字extends Applet,声明我们要继承这个父类,以便我们的程序可以窗口化。


2。如果新增关键字后面有红色波浪线,说明有错误,此时是因为我们没有导入该类的包,包可以简单理解成C语言的头文件,也就是一些初始化要用的东西。原文作者建议大家用Ctrl+Shift+O来手动导入,我就喜欢直接将鼠标移动到红色波浪线下面,然后选择有Import XXXX关键字的那一项。


3.原文作者想让大家手动添加 init(), start(), stop(), destroy(),这四个其实可以在ECLIPES中,在菜单中选SOURCE,然后选Override,然后再从对话框中选择,注意要看清楚是重写那一个包中的方法。


这是个方法其实是APPLET中已经有的方法,但是只是提供最基本功能,甚至可以说是一个框架,需要我们在上面增加自己的操作


顾名思义,这4个函数,如init()掌管的是窗口程序初始化时,程序要做的工作,这个我们日后会说明要增加什么进去。

start()就是程序一开始要执行什么操作,而且只执行一次。

stop()这个我没查,有兴趣的同学可以去查一下,大致意思可能是程序停止的时候执行什么操作吧,欢迎补充。

destory()这个就是退出的时候,需要执行什么操作,就好比C语言的析构函数,回收资源,或者是好像其他网游那样,退出的时候弹个广告出来,就是在这个函数中做文章。


原文中还有个4。就是让在添加init的时候,你在打好init,然后就按下Ctrl+space键,让程序自动帮你完成添加,但是这方法在中国是没用的,因为调出来的是输入法,所以要改成Ctrl+/ 才能自动完成。



5.按一下Ctrl+Shift+F,让程序自动格式化你的代码,也就是帮你对齐,排版一下

 package kiloboltgame;import java.applet.Applet;public class StartingClass extends Applet {    @Override    public void init() {        // TODO Auto-generated method stub        super.init();    }    @Override    public void start() {        // TODO Auto-generated method stub        super.start();    }    @Override    public void stop() {        // TODO Auto-generated method stub        super.stop();    }    @Override    public void destroy() {        // TODO Auto-generated method stub        super.destroy();    }} 


最后我们就可以得到上述的结果。


这里根据原文,啰嗦两句

正如我之前所说,这四个方法是APPLET类框架提供的,在整个程序的生命周期里,很多操作(专业术语应该叫事件)都是靠这四个方法完成。


@Override,看到这个你就知道这个方法是继承于类,提醒你添加了别忘了复写。


原文也高能爆出一句:更多资讯请自行谷歌(呵呵),但目前来说,别担心。


在每一个方法中都包含了一个super关键字,super代表父类,相应的,如果看到this,则是代表本类,super.xxx代表调用了父类里面的方法。再此,由于我们要复写,所以可以大大的放心,将每一个super.XXX删除。

至此工作基本完成。

然后老外在这里布置了几个思考题,就当做思维拓展,让大家思考一下:

1.你如何才能让程序持续运行?不断重复的执行代码?

2.我们用什么工具可以让多个任务在JAVA中同时执行?

3.什么叫游戏循环执行?


回答以上问题,答完之后再看答案(别偷看哦亲)


1、我们利用循环的方法。

2、线程

3。游戏循环是一个游戏的核心,我们称之为游戏的心脏,简而言之,游戏循环可以不断地检测游戏的变化并且不断地更新游戏的运行状态。如图形、碰撞、动画等都是依靠有序循环来让游戏持续运行。这里加点原文没有的说明。也就是说,游戏循环相当于一个管家,帮我们不断的根据实际情况更新游戏的情况。如人物走着走着碰到障碍物了,这时候就得阻挡人物前进,这就得靠游戏循环不断的去执行碰撞检测,并且做出相应的操作。


我们这里有一个游戏循环的例子来帮你理解。


while (playerIsAlive) {        updatePosition();    applyGravity();    drawCharacterAtCurrentLocation();    } 

当循环条件playerIsAlive永远为真的时候,游戏就会更新人物的位置,绘制人物当前所在位置,并且更新人物的移动速度。


这是一个简单的游戏循环的例子。


随着课程的深入,我们将去介绍相关的游戏编程的概念,并且建立一个可用的完善的游戏循环,也符合我的宗旨,当我们开始开发安卓游戏的时候,原作者吐槽说会技术因素会更麻烦(⊙o⊙)?????。其实本文是安卓游戏开发的签到前导课。。。。


今天就说到这,下一次课就会将如何用线程更新游戏。


P.S. 没有留言没有支持就不怎么想更新了。。。


这将会是一个循序渐进的课程,每次课只讲一点,务求讲懂,懂才是关键。



0 0
原创粉丝点击