项目总结
三 周的游戏项目总算是做完了。通过这三周的项目感觉到自己提高了很多,不管是基础知识还是实际应用都有了一个层次的提升。对一个项目的组织和完成也有了一定 的认识和理解,对项目的分析与设计有了初步的认识,当拿到一个项目的时候不是盲目的去敲代码,首先要对整个项目所以对象进行分析与设计。
我们完成的是《勇敢的小猪》项目,再项目中用到的重要知识点大概有:
声音播放:主要用于处理游戏中在不同情况下的声音效果。游戏中主要用了它的三个方法,播放声音:Play()、循环播放:Loop()、停止播放:Stop()。
反射:用于在程序运行时通过相对路径动态寻找资源。游戏中主要用于获得类内部的一些属性,反射的功能很多,但在这个游戏中只使用了getResource。获得图片的相对路径,在程序打成jar包的时候都能通过相对路径找到图片,从而使游戏在不同的机子上能正常的运行。
媒体跟踪器:用来加载图片和音乐,媒体对象可以包括音频剪辑和图像,目前只支持图片。媒体跟踪器是一个跟踪多种媒体对象状态的实用工具类。要使用媒体跟踪器,需要创建一个 MediaTracker 实例,然后对每个要跟踪的图像调用其 addImage 方法。另外,还可以为每个图像分配一个唯一的标识符。例如:
MediaTracker mt = new MediaTracker();
bk = getGameImage("./image/background.jpg"); // 获取游戏时背景
mt.addImage(bk, 0);
双缓冲图片绘制:避免画面的抖动现象。首先在内存中创建一个图像大小的区域,把要绘制的图像在内存中绘制一遍,当需要把图像绘制到窗口时,就一次性从内存中绘制到窗口上。这样加快了图片的绘制,从而避免了图片绘制的抖动现象。该方法在图片绘制时非常实用。例如:
/** 取得画布,屏外做图时使用 */
Image imgMemory = this.createImage(800, 600);
/**创建画布及其画笔*/
Graphics penMemory = imgMemory.getGraphics();
/**强制执行一次*/
this.repaint();
适配器(MouseAdapter):用于事件监听的添加。主要由于接口,当你使用某一种接口的时候,常用的规则是必须实现接口里面的所以方法。如果你只需要接口中某一种或几种方法的时候可以使用适配器来选择你需要的方法。例如:
public void addMouseClick() {
// 监听鼠标点击事件,只使用鼠标单击事件
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) { });}
封装:把相同的代码进行封装,减少代码的重复性。项目中所以窗体界面都是居中,大小都一样,可以写在一个类里面进行封装,这样其他窗体可以直接继承它的所以属性和方法,避免代码的重复性。
抽象类:把子类必须实现的方法写在里面,以免忘记。项目中主要用于狼类,子弹类等,把相同的方法写在一个抽象类里面,他们直接继承该类,在写子类的时候必须继承里面的抽象方法,它起到提示作用。
多线程:实现小猪的上下移动、狼的产生与上升过程相关处理。游戏中主要用于处理各个对象的相互协调,使画面更顺畅,避免相互之间抢进程。实现多线程有两种方法,一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的run 方法。接下来可以分配并启动该子类的实例。另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
集合(Collection):自动变长,用于添加角色对象。是一种特殊对象,它用来在对象被创建是收集对象,以便于成组管理并统一的操作它们,并能在有必要是一个一个地单独引用这些对象。Collection其实只是一个接口,它下面还包括两个子接口:一个是list。list又由三个类实现,分别是 ArrayList和LinkList还有Vector。ArrayList和Vector的功能基本相同,主要区别是ArrayList为线程不同步, Vector是线程同步的,它们添加对象都只能从最末尾添加。而LinkList主要是链表形式的,它能从任意位置添加对象,在对象的插入时 LinkLIst速度较快;另一个是set,由HashSet和TreeSet实现,HashSet是无序的,对于添加进入的对象的位置是任意的, TreeSet是有序的,它对加入的对象用一定的顺序进行排列。而set和list的主要区别是set不允许添加的对象有重复的,而list却允许重复。集合中的任意元素都为可变长的,所以使用集合来操作对象是非常方便的。
java编程规范:java程序的统一规范。在项目中体会了一个JAVA编程规范,初步理解到了MVC。M:model(模型)、V:view(视图)能看得见的东西、C:control(控制),最后还用到一个util用于放工具类的。在编程程序时有了这个规范,别人看你的代码也就容易了。
这些知识点有的在书上有所阐述,在学习中也学到 过,只是单独的使用,没有综合的运用起来。在这项目中综合运用时还有很多不足的地方,主要是不能灵活的运用。在项目中初步理解到了分析、设计的重要性。有 的知识点是在做项目时才接触的,声音播放,反射、媒体跟踪器、二次缓冲,图片绘制等。但是它们在实际运用中却很重要,也很实用,在项目中主要是图片绘制与 图片切换,利用时间差完成整个游戏。通过使用它们,对它们也有了一点理解。