收藏 分享(赏)

Java坦克大战设计报告.doc

上传人:HR专家 文档编号:4853072 上传时间:2019-01-16 格式:DOC 页数:87 大小:2.54MB
下载 相关 举报
Java坦克大战设计报告.doc_第1页
第1页 / 共87页
Java坦克大战设计报告.doc_第2页
第2页 / 共87页
Java坦克大战设计报告.doc_第3页
第3页 / 共87页
Java坦克大战设计报告.doc_第4页
第4页 / 共87页
Java坦克大战设计报告.doc_第5页
第5页 / 共87页
点击查看更多>>
资源描述

1、 程序语言综合课程设计设计报告学 院:信息工程学院专业班级:学 号:3姓 名:指导老师:完成时间:2011 年 7 月 22 日2目录目录 .2题目一 坦克大战 41.1 题目简介 41.2 设计的内容、要求和目标 41.2.1 设计内容 41.2.2 设计要求 41.2.3 设计目标 41.3 总体设计 51.3.1 系统功能结构图 .51.3.2 系统总体流程图 .61.4 详细设计及实现 71.4.1 界面及布局设计 71.4.2 开机欢迎画面的实现方法 71.4.3 单人游戏的实现方法 91.4.4 添加背景音乐的方法 .121.4.5 双人游戏实现的方法 .121.4.6 游戏设置方

2、法 .141.4.7 存盘退出实现方法 .161.4.8 运行效果图 .171.4.9 源代码分析 .191.5 系统运行及使用说明 .37题目二 都昌大酒店餐饮管理系统 .382.1 题目简介 .382.2 设计的内容、要求和目标 .382.2.1 设计的内容 .382.2.2 要求 .382.2.3 目标 .382.3 总体设计 .392.3.1 功能模块设计 .392.3.2 系统所有类之间的关系 .392.4 数据库设计 .402.4.1 关系模式 .402.4.2 E-R 图 .402.4.3 数据库管理物理实现 .412.4.4 数据库表 .412.4.5 表的建立 .422.4.

3、6 表与表之间的关系 .432.5 详细设计及实现 .432.5.1 操作界面设计 .4432.5.2 类成员变量及方法设计 .472.5.3 源代码分析 .532.6 系统运行及使用说明 .64题目三 俄罗斯方块(手机版) .653.1 题目简介 .653.2 需求分析 .653.2.1 设计目的和意义 653.2.2 任务概述 653.2.3 需求分析 663.3 总体设计 .673.3.1 系统功能结构图 673.3.2 系统总体流程图 673.4 详细设计 .683.4.1 功能分析和描述 683.4.2 程序系统的结构 683.4.3 游戏的前景和背景设计 703.5 主要技术的实现

4、 .713.5.1 开机动画的实现 713.5.2 排行榜设计 713.5.3 消去方块的实现 733.6 系统实现 .743.6.1 程序系统的结构 743.6.2 程序设计说明 74总 结 78附录一 79附录二 82附录三 854题目一 坦克大战1.1 题目简介坦克大战是运用 java 高级编程语言使用 MyEclipse8.6 实现的一个游戏系统,它具有单人游戏和双人游戏的游戏界面以及对游戏的属性进行编辑的游戏设置对话框。1.2 设计的内容、要求和目标1.2.1 设计内容 本项目的内容包括技术和非技术两大部分:技术上需要进行数据存储和图片的处理、整个窗口的布局、代码的编写及调试。非技术

5、部分包括:人力资源的充分利用。1.2.2 设计要求(1)设计 GUI 界面的坦克大战。坦克大战中有我军坦克一辆,敌军坦克若干。初始状态是我军坦克位于屏幕正下方,而敌军坦克分布屏幕正上方,敌军坦克可以自由移动并发射子弹,我军坦克可以按“A” , “S”, “D”, “W”键操作我军坦克向不同的四个方向前进,按“J”键可以发射子弹;(2)程序要求用户在通过按下指定按钮来控制自己的坦克,敌人坦克是随机运动并发射子弹的;(3)当然用户还可以点击文件菜单选择各种需要的操作;(4)实现帮助功能,用户有不明白的地方可以查看帮助文档;(5)实现与数据库的连接,用户使用时必须登录。1.2.3 设计目标系统应该尽

6、量做到以下的目标:1) 人力与设备费用的减少;2) 采用现代程序设计技术;53) 数据的处理速度提高;4) 管理信息服务的改进;5) 人员利用率尽可能提高;1.3 总体设计1.3.1 系统功能结构图下面列出了本系统的整体功能结果图以及各个模块之间的彼此联系,见图1-1 所示。开机欢迎界面文件菜单背景音乐坦克大战主界面开始新游戏暂停游戏继续上局存盘退出退出游戏游戏设置单人游戏双人游戏敌人坦克数量敌人坦克速度我军坦克速度是否使用背景音乐是否使用音效图 1-1 系统各个功能模块之间的联系说明:用户根据主界面,在菜单项里可以选择开始游戏,可以开始单人游戏,也可以开始双人游戏,在游戏中倘若你有其他事情要

7、做,你可以选择暂停游戏,当然你还可以选择存盘退出,这样当你以后想再玩没玩完的游戏你就可以选择继续上局游戏,这样你可以接着上次玩的游戏,你还可以选择游戏设置,设置敌人的坦克数量和敌人坦克的速度,以及我军坦克速度,还有你可以设置6娱乐方式,你可以选择使用背景音乐,和游戏音效。 1.3.2 系统总体流程图坦克大战的总体流程图见图 1-2 所示。开始开机欢迎页面菜单选择开始单人游戏 开始双人游戏开始新游戏 游戏设置显示各项操作效果结束敌军数量控制 敌军速度控制 我军速度控制音乐控制停止 播放Y YY YY图 1-2 总体流程图3.3 系统所有类之间的关系系统所有类之间的关系如图 1-3 所示7T a

8、n k G a m e s . j a v aF i r s t D i a l o g . j a v a m y p a n e l . j a v aF i r s t P a n e l .j a v aS o u n d s . j a v aS R e n . j a v aW o r d M o v e .j a v am y t a n k . j a v ae n e m y T a n k .j a v aZ D a n . j a v a Z h a D a n . j a v a图 1-3 类之间的关系设计一个系统的时候,把不同功能的具体实现放到不同的类里面,这样便于以

9、后程序的扩展以及修改;类的名称最好是体现出这个类实现的功能,这样可以达到看类名就知道这个类的功能,方便以后程序的维护。本系统的实现一共用到了以上的 12 个类,它们之间的关系见图 1-3 所示,箭头方向代表是被依赖的类,各个类实现了一些单独的功能。1.4 详细设计及实现1.4.1 界面及布局设计系统的整体布局为:BorderLayout 布局, 采用了菜单、按钮、面板等组件,菜单主要包括选择开始新游戏,暂停游戏,继续上局游戏,存盘退出,退出游戏,游戏设置等功能。1.4.2 开机欢迎画面的实现方法FirstPanel 类是 javax.swing 包中 JPanel 容器的一个子类,它主要是重写

10、了paint()方法,先从文本文件里读取数据,然后把数据通过画笔画在画板上,标明 FirstPanel 类的主要成员变量和方法以及和 TankGames 类之间组合关系的UML 图如图 1-4 所示。8+ F i r s t P a n e l ( )+ p a i n t ( ) : v o i d+ s h o w ( ) : v o i d+ r u n ( ) : v o i d- w o r d : W o r d M o v e- f r : F i l e R e a d e r- b r : B u f f e r e d R e a d e r- s t r : s t r

11、i n g- a a : V e c t o r - i m g : I m a g e- f : F o n t- f 1 : F o n t- f 2 : F o n tF i r s t P a n e l- f p : F i r s t P a n e lT a n k G a m e s图 1-4 FirstPanel 类的 UML 图以下是 UML 图中有关数据和方法的详细说明。1、成员变量(1)word 是 WordMove 型数据,它是用来改变文字的纵坐标的,使文字动态的画在画板上。(2)fr 是 FileReader 型数据,它是用来读取文本文件的。(3)br 是 Buff

12、eredReader 型数据,是缓冲输出流,用它来读取 fr 里面的数据。(4)str 是 String 型数据,接受读取到得文本文件。(5)aa 是 Vector型数据,是类型为字符串类型的集合,用它来装一个个 str。(6)img 是 Image 型数据,是图片类型数据,用来设置背景图片的。(7)f,f1,f2 都是 Font 类型的数据,用来确定动态显示字的字体。2、方法(1)FirstPanel()是构造方法,负责完成 FirstPanel 容器的初始化。(2)容器调用 paint(Graphics g)方法可以在画板上把文本文件画出来,以便动态的显示出来。(3)容器调用 show()

13、方法可以将画板上的文字显示出来。(4)容器调用 run()方法可以改变文字的纵坐标,使原本静态的文字运动起来。9综上所述,FirstPanel 创建的容器效果如图 1-5 所示。图 1-5 FirstPanel 创建的容器1.4.3 单人游戏的实现方法mypanel 类是 javax.swing 包中 JPamel 类的子类,所创建的对象是一个面板,面板上有坦克大战的敌我双方坦克,和战场,以及我军消灭敌军数量的标识,标明 mypanel 类的主要成员变量、方法以及和 TankGames 类之间组合关系的10UML 如图 1-6 所示。 + m y p a n e l ( ) : v o i d

14、+ p a i n t ( G r a p h i c s ) ( ) : v o i d+ a d d m y t a n k ( ) : v o i d+ z h a n j i ( ) : v o i d+ a d d E n e m y t a n k ( ) : v o i d+ B o m p ( ) : v o i d+ d r a w t a n k ( ) : v o i d+ d r a w z d ( ) : v o i d+ s h o t E n e m y t a n k ( ) : v o i d+ s h o t m y t a n k ( ) : v o i

15、d+ i s z h o n g ( ) : b o o l+ G a m e O v e r ( ) : v o i d- i s Z a n T : b o o l- i s S o u n d s : b o o l- i s M u s i c : b o o l- w o r d : W o r d M o v e- m t : m y t a n k- e n : e n e m y T a n k- z d : Z D a n- z h d : Z h a D a n- B Z : i n t- i m a g e 1 : I m a g e- i m a g e 2 : I m

16、 a g e- i m a g e 3 : I m a g e- f : F o n t- s t r : s t r i n g ( i d l )- t a n : i n tm y p a n e l- m p : m y p a n e lT a n k G a m e图 1-6 mypanel 类的 UML 图以下是 UML 图中有关数据和方法的详细说明。1、成员变量(1)isZanT、isSounds、isMusic 都是 boolean 类型数据,分别确定是否游戏暂停,是否使用背景音乐,是否使用音效。(2)word 是 WordMove 类型数据,用于制造动态字。(3)mt,en

17、 分别是 mytank 和 enemyTank 类型数据,用于在画板上定义敌我双方坦克。(4)zd,zhd 分别是 ZDan 和 ZhaDan 类型数据,在画板上定义子弹和炸弹。(5)image1、imge2、imgae3 都是 Image 类型数据,在击中坦克时,将这三幅图片画出来,制造爆炸效果。(6)f 是 Font 类型数据,用于定义游戏结束时动态字的字体。2、方法(1)mypanel()构造方法,初始化定义的成员变量。11(2)paint(Graphics g)在画板上画坦克,画子弹,画炸弹等各种作战场面。(3)addmytank()方法用来增加我军坦克,我军坦克的生命值是 3,当我军

18、生命值大于 0 时,每死一次就增加一辆我军坦克,直至我军坦克生命值为 0。(4)addEnemytank()方法是用来增加敌军坦克,敌军坦克默认情况下是 20 辆,而战场只允许敌军 4 辆坦克作战,所以每击毁敌军一辆坦克就会调用此方法增加一辆敌军坦克,直至敌军坦克数量小于或者等于 4。(5)zhanji()方法是用来记录我军击毁坦克数量。(6)Bomp()方法是在击中坦克时画出爆炸效果。(7)drawtank()用来在画板上画出敌我双方坦克。(8)drawzd()用来在画板上画子弹。(9)shotEnemytank()是在我军发射子弹时调用的,用户按下指定键就会激发此方法。(10)shotmy

19、tank()是敌军发射子弹时调用此方法。(11)isjizhong()是用来判断子弹是否击中坦克。(12)GameOver()是在游戏结束时调用的,用来描述游戏结束。因此 mypanel 创建的画板的效果如图 1-7 所示。图 1-7 mypanel 创建的画板的效果爆炸效果如下图:12图 1-8 爆炸效果图1.4.4 添加背景音乐的方法为了在应用程序中播放音乐,首先根据相应的音频文件创建一个 File 对象,例如:File file=new File(“十年.Wav”);然后,file 对象调用 toURL()方法返回一个 URL 对象,例如:URL url=file.toURL();最后,

20、使用 Applet 类的静态方法返回一个音频对象,例如:clip=Applet.newAudioClip(url);1.4.5 双人游戏实现的方法SRen 类是 javax.swing 包中 JPamel 类的子类,所创建的对象是一个面板,面板上有坦克大战的敌我双方坦克(此时我军坦克数量为 2),和战场,以及我军消灭敌军数量的标识,标明 SRen 类的主要成员变量、方法以及和 TankGames类之间组合关系的 UML 如图 1-9 所示。13+ S R e n ( ) : v o i d+ p a i n t ( G r a p h i c s ) ( ) : v o i d+ a d d

21、m y t a n k ( ) : v o i d+ z h a n j i ( ) : v o i d+ a d d E n e m y t a n k ( ) : v o i d+ B o m p ( ) : v o i d+ d r a w t a n k ( ) : v o i d+ d r a w z d ( ) : v o i d+ s h o t E n e m y t a n k ( ) : v o i d+ s h o t m y t a n k ( ) : v o i d+ i s z h o n g ( ) : b o o l+ G a m e O v e r ( ) :

22、 v o i d- i s Z a n T : b o o l- i s S o u n d s : b o o l- w o r d : W o r d M o v e- e e m : i n t- z d : Z D a n- z h d : Z h a D a n- B Z : i n t- i m a g e 1 : I m a g e- i m a g e 2 : I m a g e- i m a g e 3 : I m a g e- f : F o n t- s t r : s t r i n g ( i d l )- m y t s 0 l i f e : i n t- m y

23、 t s 0 X M : i n t- m y t s 0 l i f e : i n t- m y t s 0 X M : i n tS R e n- s p : S R e nT a n k G a m e图 1-9 SRen 类的 UML 图以下是 UML 图中有关数据和方法的详细说明。1、成员变量(1)isZanT、isSounds 都是 boolean 类型数据,分别确定是否游戏暂停,是否使用音效。(2)word 是 WordMove 类型数据,用于制造动态字。(3)myts0life、myts1life 都是 int 类型的数据,分别用来记录我方两辆坦克的生命值。(4)myts0X

24、M、myts1XM 都是 int 类型的数据,分别来记录我方两辆坦克消灭敌军坦克数量。(5)zd,zhd 分别是 ZDan 和 ZhaDan 类型数据,在画板上定义子弹和炸弹。(6)image1、imge2、imgae3 都是 Image 类型数据,在击中坦克时,将这三幅图片画出来,制造爆炸效果。(7)f 是 Font 类型数据,用于定义游戏结束时动态字的字体。2、方法(1)SRen()构造方法,初始化定义的成员变量。(2)paint(Graphics g)在画板上画坦克,画子弹,画炸弹等各种作战场面。(3)addmytank()方法用来增加我军坦克,我军坦克的生命值是 3,当我军生命值14大

25、于 0 时,每死一次就增加一辆我军坦克,直至我军坦克生命值为 0。(4)addEnemytank()方法是用来增加敌军坦克,敌军坦克默认情况下是 20 辆,而战场只允许敌军 4 辆坦克作战,所以每击毁敌军一辆坦克就会调用此方法增加一辆敌军坦克,直至敌军坦克数量小于或者等于 4。(5)zhanji()方法是用来记录我军击毁坦克数量。(6)Bomp()方法是在击中坦克时画出爆炸效果。(7)drawtank()用来在画板上画出敌我双方坦克。(8)drawzd()用来在画板上画子弹。(9)shotEnemytank()是在我军发射子弹时调用的,用户按下指定键就会激发此方法。(10)shotmytank

26、()是敌军发射子弹时调用此方法。(11)isjizhong()是用来判断子弹是否击中坦克。(12)GameOver()是在游戏结束时调用的,用来描述游戏结束。因此 mypanel 创建的画板的效果如图 1-10 所示。图 1-10 SRen 创建的画板1.4.6 游戏设置方法FirstDialog 是 java.swing 包中 Dialog 类的子类,它创建的是一个对话框,此对话框里面主要有选择按钮,滚动条,还有两个按钮。标明 FirstDialog 类的主要成员变量、方法以及和 TankGames 类之间组合关系的 UML 如图 1-11 所示。 15+ F i r s t D i a l

27、 o g ( )+ a c t i o n P e r m e d ( )+ i t e m S t a t e C h a n g e d ( )- j b l 1 : J L a b e l- j b l 2 : J L a b e l- j b l 3 : J L a b e l- j b l 4 : J L a b e l- j c k 1 : J C h e c k B o x- j c k 2 : J C h e c k B o x- j s c 1 : J S c r o l l B o x- j s c 2 : J S c r o l l B o x- j s c 3 : J

28、S c r o l l B o x- b o x 1 : B O x- b o x 2 : B O x- b o x 3 : B O x- b o x 4 : B O x- j p : J P a n e l- j b t 1 : J B u t t o n- j b t 2 : J B u t t o nF i r s t D i a l o g- d i a l o g : F i r s t D i a l o gT a n k G a m e图 1-11 SRen 类的 UML 图以下是 UML 图中有关数据和方法的详细说明。1、成员变量(1)jbl1,jbl2,jbl3,jbl4 都

29、是 JLabel 类型数据,用于提示标签。(2)jck1,jck2 是 JCheck 类型数据,用来控制音效和背景音乐。(3)jsc1,jsc2,jsc3 都是 JScrollBox 类型数据,分别用来控制敌军坦克数量,敌军坦克速度,我军坦克速度。(4)box1,box2,box3,box4 都是 Box 类型数据,用于整体布局。(5)jp 是 JPanel 类型数据,整体布局需要。(6)jbt1,jbt2 都是 JButton 数据类型。2、方法(1)FirstDialog()构造方法,初始化定义的成员变量。(2)actionPerformed(Event e)方法用于出来监听事件。(3)I

30、temStatechanged(Event e)方法用于处理选择框事件的处理。因此 FirstDialog 创建的画板的效果如图 1-12 所示。16图 1-12 FirstDialog 创建的对话框1.4.7 存盘退出实现方法本程序是利用输出输入流将战场敌我双方坦克坐标保存到文本文件里面,详细请见下图。图 1-13 存盘退出菜单当点击存盘退出,程序就会在 F 盘下新建一个文本文件,如:图 1-14 保存游戏信息的文本这时当我们点击继续上局时,又回回到刚才玩的游戏,如:图 1-15 继续上局菜单17继续上局后的效果图如下图:图 1-16 继续上局效果图1.4.8 运行效果图系统运行的主界面如图

31、 1-17 所示图 1-17 运行欢迎界面效果图坦克大战单人游戏效果如图 1-18 所示18图 1-18 单人游戏效果图双人游戏效果如图 1-19 所示图 1-19 双人游戏效果图菜单选择如图 1-20 所示图 1-20 菜单选择191.4.9 源代码分析1.开机欢迎界面实现的代码。public class FirstPanel extends JPanel implements Runnable public WordMove word = null;FileReader fr = null;BufferedReader br = null;String str=“;Vector aa =n

32、ull;Image img;Font f = new Font(“华文姚体“,Font.BOLD,25);Font f1 = new Font(“华文姚体“ ,Font.BOLD,35);Font f2 = new Font(“华文彩云“ ,Font.BOLD,150);public FirstPanel() word = new WordMove(30,340);word.setHH(500);word.b=true;aa = new Vector();this.setBackground(Color.black);show();try img = ImageIO.read(new File

33、(“123.jpg“); catch (IOException e) e.printStackTrace();public void paint(Graphics g) super.paint(g);g.setColor(Color.yellow);for(int i=0;i enemy = new Vector();public Vector myt = new Vector();public Vector ZDs = new Vector();String str=“击毁敌军坦克数量“;Font f = new Font(“华文新魏“ ,Font.BOLD,20);public int t

34、an=0,150,300,450;/构造方法public mypanel(String n) String ss=n;/新游戏进这if(ss.equals(“First“) for(int i=0;i=4) int i=(int)(Math.random()*3);enemyTank k = new enemyTank(tani+10,0,0);k.setDirect(2);if(!enemyTank.isContact(k) Thread t = new Thread(k);t.start(); this.enemy.add(k);enemyTank.enemy.add(k);/爆炸效果pu

35、blic void Bomp(Graphics g) for(int i=0;i6) g.drawImage(image1,zh.x,zh.y,30,30,this);else if(zh.LifeTime3) g.drawImage(image2,zh.x,zh.y,30,30,this);else g.drawImage(image3,zh.x,zh.y,30,30,this);zh.lifeDown();if(zh.LifeTime=0) ZDs.remove(zh);/画坦克(不管是画敌人坦克还是画自己坦克都须调用此方法)public void drawtank(int x,int y

36、,int type,int direct,Graphics g) switch(type) case 0:g.setColor(Color.CYAN);break;case 1:g.setColor(Color.yellow);break;switch(direct) case 0:g.fill3DRect(x,y,5,30,false);g.fill3DRect(x+15,y,5,30,false);24g.fill3DRect(x+5,y+5,10,20,false);g.fillOval(x+7,y+10,7,10);g.drawLine(x+10,y+10,x+10,y);break;

37、case 1:g.fill3DRect(x,y,30,5,false);g.fill3DRect(x,y+15,30,5,false);g.fill3DRect(x+5,y+5,20,10,false);g.fillOval(x+10,y+7,10,7);g.drawLine(x+20,y+10,x+30,y+10);break;case 2:g.fill3DRect(x,y,5,30,false);g.fill3DRect(x+15,y,5,30,false);g.fill3DRect(x+5,y+5,10,20,false);g.fillOval(x+7,y+10,7,10);g.draw

38、Line(x+10,y+20,x+10,y+30);break;case 3:g.fill3DRect(x,y,30,5,false);g.fill3DRect(x,y+15,30,5,false);g.fill3DRect(x+5,y+5,20,10,false);g.fillOval(x+10,y+7,10,7);g.drawLine(x+10,y+10,x,y+10);break;/画子弹public void drawzd(Tank tank,Graphics g) if(tank.zx!=null) for(int k=0;k0) mytank k = new mytank(200,

39、350,1);myt.add(k);/判断子弹是否击中坦克public boolean isJizhong(Tank en,ZDan zd) 26boolean b = false;switch(zd.direct) case 0:if(zd.xen.xbreak;case 1:if(zd.yen.ybreak;case 3:if(zd.yen.yi200) et.bl=false;sounds.clip2.stop();/键盘事件处理public void keyPressed(KeyEvent e) if(!isOver()mt.y-=mytank.myspeed;if(mt.y670)m

40、t.x-=mytank.myspeed;else if(e.getKeyCode()=KeyEvent.VK_S) mt.setDirect(2);mt.y+=mytank.myspeed;if(mt.y370) mt.y-=mytank.myspeed;else if(e.getKeyCode()=KeyEvent.VK_A) mt.setDirect(3);28mt.x-=mytank.myspeed;if(mt.x0) for(int i=0;i200) et.bl=false;sounds.clip2.stop();/画坦克(不管是画敌人坦克还是画自己坦克都须调用此方法)public

41、void drawtank(int x,int y,int type,int direct,Graphics g) switch(type) case 0:g.setColor(Color.CYAN);break;case 1:g.setColor(Color.yellow);break;30case 2:g.setColor(Color.orange);break;switch(direct) case 0:g.fill3DRect(x,y,5,30,false);g.fill3DRect(x+15,y,5,30,false);g.fill3DRect(x+5,y+5,10,20,false

42、);g.fillOval(x+7,y+10,7,10);g.drawLine(x+10,y+10,x+10,y);break;case 1:g.fill3DRect(x,y,30,5,false);g.fill3DRect(x,y+15,30,5,false);g.fill3DRect(x+5,y+5,20,10,false);g.fillOval(x+10,y+7,10,7);g.drawLine(x+20,y+10,x+30,y+10);break;case 2:g.fill3DRect(x,y,5,30,false);g.fill3DRect(x+15,y,5,30,false);g.f

43、ill3DRect(x+5,y+5,10,20,false);g.fillOval(x+7,y+10,7,10);g.drawLine(x+10,y+20,x+10,y+30);break;case 3:g.fill3DRect(x,y,30,5,false);g.fill3DRect(x,y+15,30,5,false);g.fill3DRect(x+5,y+5,20,10,false);g.fillOval(x+10,y+7,10,7);g.drawLine(x+10,y+10,x,y+10);break;/画子弹public void drawzd(Tank tank,Graphics g) if(tank.zx!=null) for(int k=0;ktank.zx.size();k+) ZDan s = tank.zx.get(k);if(s.isLive) g.draw3DRect(s.x,s.y,1,1,false);else tank.zx.remove(s);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报