· 面向对象是一种效率较高的设计模式,在当前的Java学习中,使用面向对象的方法做了两个小项目,下面就来记录一下这两个案例的体会。
第一个是简陋坦克大战的设计,代码较多,就不上传了:
首先理一下思路,由于使用的是面向对象的设计模式,所以我们需要吧需求的样式先想好,而这款游戏是已经存在的,我们就可以在当前游戏的基础上进行面向对象的设计,从进入界面开始设计:
既然是面向对象,我们需要看一下他要实现的功能是什么,整体窗口的设计,包括菜单栏,界面的设计:
1:初始界面:游戏的底板绘制,增加坦克样式绘制,统计记录绘制;
2:游戏需要点击新游戏才会出现游戏面板,所以需要两个绘制面板进行衔接;
3:游戏中需要的类都有哪些:坦克类,子弹类,记录类,爆炸效果类,声音类,位置类等;(根据功能可以增加更多的类)
4:在设计过程中,需要寻找这些类之间的关系:
(1)坦克类包括我的坦克类和敌方坦克类,可以创建这两个类继承坦克类,并将两个类的共性成员放在坦克类里;
(2)将子弹类与坦克类联系起来;
(3)将面板之间的切换用事件 监听联系在一起;
(4)将主面板与键盘监听连接在一起;
(5)注意每个文件流之间的关系
5:实现敌方坦克的*活动:在敌方坦克类中对每个敌方坦克建立线程,获得不同的线程;
6:实现界面的衔接:关卡面板与主面板都要进行线程的运行接口;
(1)关卡面板中,通过线程run函数进行跑动延时600毫秒闪动
(2)主面板中run函数中添加击中我方和击中敌方的函数定义;
①集中敌方坦克与击中我方坦克的定义中有相同的部分可以提取出来放在主面板的方法中并在击中我方和击中敌方时调用;
(3)面板中建立绘制坦克类,其中参数包括方向,坐标,颜色(类型),由坦克类和位置类创建对象获得这些参数,并将参数传递给绘制坦克函数,用以绘制
①面板类中需要new我的坦克对象并进行绘制,面板中需要重写键盘监听接口的Type与release和press类并进行定义,这里只定义press类,进行我的坦克的上下左右控制
7:关于读取和写入的问题:继续游戏与存盘退出:
(1)将存盘和读盘封装成一个记录类中的两个方法,记录类中采用的文件