java项目坦克大战PPT

上传人:xx****x 文档编号:243009718 上传时间:2024-09-13 格式:PPT 页数:45 大小:105.50KB
返回 下载 相关 举报
java项目坦克大战PPT_第1页
第1页 / 共45页
java项目坦克大战PPT_第2页
第2页 / 共45页
java项目坦克大战PPT_第3页
第3页 / 共45页
点击查看更多>>
资源描述
,Click to edit Master title style,Click to edit Master text stylesgood1,Second levelgood2,Third levelgood3,Fourth levelgood4,Fifth levelgood5,手把手助你拿高薪,版权所有:尚学堂科技,TankWar,尚学堂,Tank War,项目的需求,单机版程序演示,能够四处移动,能够打击敌人,敌人能够移动,能够模拟爆炸,能够产生障碍,能够增长生命,自我介绍,项目的针对对象,初步掌握了,J2SE,的同学,掌握了常用的一些类,掌握了常用的一些知识点,写过一些学习的程序(,toy program),学习方法,不必太关注细节,不必非得把某个类所有的细节全了解清楚再动手,不必追求完美,关键是要写完,要想方设法让它运行起来,量变引起质变,做这个项目是为了,复习,J2SE,,综合运用,J2SE,所学的知识,初步掌握面向对象编程的基本思想,掌握,Eclipse,开发,J2SE,程序的基本方法,初步掌握,Eclipse,调试程序的方法,掌握编程时一些约定俗成的东西,命名,/,格式 等,掌握一些常用的编程方法,getters setters,持有对方引用,定义常量,保留程序版本,学会版本比较,激发大家的学习兴趣,做这个项目不是为了,不是为掌握软件工程的系统理论,瀑布式,螺旋递增式,不是为了掌握专业游戏的开发方法,不应用专门的,Game API,不是为了掌握专业的设计模式,没有刻意去应用设计模式,项目的注意事项,要敲,一定要动手敲,要一行一行跟着敲,看会或者听懂都不算掌握了程序,只有写出来才能证明你真正的掌握,不要照抄,不要记我做程序的步骤,要掌握思路,项目所用的工具,eclipse 3.2,JDK5.0,或以上,泛型在,5.0,后才得到支持,项目的预备知识,J2SE,基础知识,面向对象,I/O,多线程,GUI,初步,事件模型,版本0.1,功能:,产生一个窗口,掌握:,通过,Eclipse,建立新的项目,为新的项目指定不同的源代码和输出目录,指定项目所用的,JDK,版本,通过,Eclipse,建立新的类,注意:,类名和方法名的命名,见名知意,类名首字母大写,方法名、变量名首字母小写,应用驼峰标识,版本0.2,功能:,添加关闭窗口的事件处理,不允许窗口的大小改动,掌握:,匿名类的用法,思考:匿名类的应用场合?,类短小、不涉及将来的扩展、不涉及重要的业务逻辑,通过,Eclipse,重写父类的方法,注意:,没掌握匿名类的先照抄,不写也行,不影响最后的运行效果,版本0.3,功能:,画出代表坦克的实心圆,掌握:,如何重写,paint,方法,注意:,不要改变原来的前景色,回顾:,paint(Graphics g),方法,窗口重画时自动调用,x,轴、,y,轴的方向,x,y,w,h,x,y,Frame,的左上角,版本0.4,功能:,让坦克运动起来,步骤:,将位置改变为变量,启动线程不断重画,思考:为什么使用线程重画,而不是每按下一个键进行一次重画?,线程重画更均匀,更能控制重画的速度。,按键重画不能解决子弹自动飞行的问题。,每次重画改变,Tank,位置,掌握:,内部类的使用,思考:内部类有哪些好处?什么时候使用内部类?,可以方便的访问包装类的方法。不方便公开的,只为包装类服务的类应当定义为内部类。,注意:,x, y,值得含义,指的是小方块的左上角点,版本0.41,功能,使用双缓冲消除闪烁现象,原因,刷新重画频率太快,paint,方法还没有完成,逐条显示,解决办法,将所有东西画在虚拟图片上,一次性显示出来,注意,如果不能理解透彻就照抄本版本代码,不影响对,J2SE,的练习功效,思考,把游戏窗口的大小改变为,640 X 480?,定义常量以应付将来的改动,版本0.5,功能:,代码重构,将以后可能需要多处改变的量定义为常量,Frame,的宽度和高度,常量名一般大写,注意:,常量一般是,public static final,的。,版本0.6,功能:,让坦克听从我们的指挥,添加键盘监听器类,KeyMonitor,TankCient,添加键盘监听器,针对不同的键改变坦克的位置,与重画线程结合产生不同方向运动,注意:,switch case,语句中,break,语句的运用,写程序要,循序渐进,思考,增加100辆坦克到游戏中,版本0.7重要版本,功能:,将坦克单独包装成类,步骤:,建立,Tank,类,为,Tank,类添加成员变量,x y,添加,draw,方法,使,Tank,类独立控制自己的画法,添加,Tank,类处理按键的方法,根据,Tank,类修改,TankClient,类,掌握:,面向对象的思考方法,细节隐藏、构建单独的类、首先考虑系统中有哪些类,合适的方法应该出现在合适的类中,思考,如何让坦克向8个方向行走?,版本0.8,功能:,让主战坦克向,8,个方向行走(,1,),步骤,添加记录按键状态的布尔量,添加代表方向的量(使用枚举),根据按键状态确定,Tank,方向,根据方向进行下一步的移动(,move,),版本0.9,功能:,让主战坦克向,8,个方向行走(,2,),步骤,处理键抬起的消息,修改,TankClient,相关代码,版本1.0,功能,添加子弹类,步骤:,添加,Missile,类,添加,x,y,dir,等属性以及常量,添加构造方法, draw,方法等必要方法,根据不同方向,进行不同的运动,在,TankClient,中模拟一颗子弹,new,一颗子弹出来,画出来,注意:,不一定一次写到位,进行多次试验,将步骤分解开来逐一进行调试,版本1.1,功能:,根据主战坦克的方向和位置,打出子弹,步骤,增加对,Ctrl,键的按键处理,根据“坦克打出一发子弹”这句话,来确定,Tank,中的方法,fire,,其返回值为,Missle,根据,Tank,方向和位置设定子弹的方向和位置并,new,出来,然后返回(,fire,方法的实现),注意:,掌握面向对象的思维方式来确定类应该具有的方法,x,y,w,h,版本1.2,功能,为了解决坦克停下也能打出炮弹的问题,画出炮筒,步骤,Tank,类增加新的属性,ptDir,每次,move,后根据,Tank,新的方向确定炮筒的方向,将炮筒用直线的形式表现出来,x,y,w,h,版本1.3,功能,打出多发炮弹,步骤:,使用容器装炮弹,每当抬起,Ctrl,键就往容器中加入新的炮弹,逐一画出每一发炮弹,注意:,泛型的使用,版本1.4,功能,解决炮弹不消亡的问题,解决坦克出界的问题,步骤:,加入控制炮弹生死的量,bLive,(,Missle,),当炮弹已经死去就不需要对其重画,当炮弹飞出边界就死亡,当炮弹死亡就从容器中去除,注意:,将思维转化为代码,Debug的运用,一步一步跟踪代码,为代码设置断点,Step into 和 step over的概念,学会在运行过程中观测变量的值,版本1.5,功能,画一辆敌人的坦克,步骤:,加入区别敌我的量,good,根据敌我的不同设置不同的颜色,更新,Tank,的构造函数,加入,good,TankClient,中,new,出敌人的坦克并画出,版本1.6,功能:,将敌人坦克击毙,分析:一颗子弹击中敌人坦克,步骤:,Missle,中加入,hitTank(Tank),方法,返回布尔类型,碰撞检测的辅助类,Rectangle,为,Tank,和,Missle,都加入,getRect,方法,当击中敌人坦克时,坦克被打死,子弹也死去,增加控制,Tank,生死的量,live,如果死去就不画了,注意:,不要照抄代码,沿着思路往里加入代码,版本1.7,功能,加入爆炸,步骤:,添加爆炸类,用不同直径的圆模拟爆炸,加入,live,加入位置属性,加入,draw,方法,爆炸应该存在于集合类中,TankClient,加入集合,将集合中的爆炸逐一画出(如果死去就去除),击毙一辆坦克后应产生爆炸,hitTank,时应产生爆炸,版本1.8,功能:,添加多辆坦克,步骤:,用容器来装敌人的,Tank,向容器中装入多辆敌人,Tank,画出来,运行,不能打掉,添加,hitTanks,方法,打一系列,Tank,TankClient,里面每发子弹都打,tanks,版本1.9,功能:,让敌军坦克更加智能,步骤:,让敌军坦克动起来,构造函数中可以指定方向,new,敌军坦克的时候指定敌军坦克的方向,让敌军坦克向随机方向移动,(Tank),静态的,添加随机数产生器,java.util.Random,move,完成后,如果是敌军坦克的,随机产生一个数,来设定坦克下一个方向,Direction.values(),让敌军坦克向随机方向移动随机的步骤,添加变量,记录随机步骤,当,=0,时,改变方向,否则,只是随机步骤递减,让敌军坦克发射炮弹,本军炮弹不打本军,炮弹添加好坏,bGood,,根据好坏画不同颜色,修改炮弹的构造方法,修改,Tank,的,fire,方法,修改,hitTank,方法,好不能打好,坏不能打坏,敌军炮火不能太猛烈,版本2.0,功能:,添加两堵墙,步骤:,建,Wall,类、建立,Wall,对象、画出来,让每一颗子弹打击每一堵墙,hitWall(),方法,注意:,子弹速度不能太快,否则很容易穿过墙,让坦克不能穿过墙,记录上一次的位置,oldX, oldY,修改构造函数,每次,move,之前纪录上一次位置,添加,stay,方法,记录移动前的位置,当撞到时回到移动前的位置,当碰到墙的时候,stay,版本2.1,功能:,坦克不能互相穿越,步骤:,当坦克撞到,Tank,时,stay,版本2.2,功能:,超级炮弹,步骤:,处理按键,A,版本2.3,功能:,主战坦克的生命值,步骤:,加入,life,变量,在窗口显示生命值,版本2.4,功能:,图形化表示主战坦克的生命值,步骤:,根据不同的,life,值进行的不同的显示,版本2.5,功能:,添加“血块”,步骤:,添加,blood,类,添加必要的方法,让,blood,对象固定轨迹运动,并在一定时间后消失,版本2.6,功能:,最后的修正,敌人死光了重新加入,我军死掉了,F2,开始,注释/文档与打包,生成javadocs文档,生成jar文件,坦克的不足之处,面向对象的组织仍然不是很完美,细小的毛病,退出时控制线程结束,专门的,GAME API,主战坦克和机器人(敌人坦克)应当分开控制,界面不漂亮,2.6以后的版本?,网络版,20,个左右的版本,图形版,意见反馈,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!