之六)优化:让程序运行更稳定、更高效

改善游戏的合理性

到目前为止,我们的游戏基本上算是完成了,为了使程序更合理,我们还需要将整个程序从头再理一遍,看看有没有改进的地方。

首先,在变量的使用上,由于很多地方会使用相同的数据,因此,将变量定义为 public static 可以减少不必要的重复定义,如颜色、使用的图片等。

其次,由于 JAVA 的特性,我们可以对程序进行简单的修改(如使类从 JApplet 继承而不是从 JFrame 继承等),将其改变为 Applet 程序,让游戏在网页中也可以运行。同时,也考虑到程序的发布,我们可以将最终结果生成 JAR 包。

第三、为了确保在游戏运行时所有需要的资源都已经加载,因此,我们需要使用 MediaTracker 的 addImage(Image image, int id) 和 waitForID(int id) 方法来保证资源加载。

第四、为了避免每次使用资源时都要从硬盘中读取,因此,我们尽可能对所有的资源都要进行缓冲处理,这是以空间换时间的做法。

第五、由于在最后发布程序的时候,我们需要将编译结果打包,因此,对于程序中的图片、声音等也需要放在包中,这样,对文件的访问就不能使用 File 类了,必须使用 java.lang.ClassLoader.findResource(java.lang.String) 来访问包中的资源。

节约内存的使用

虽然 JAVA 提供的垃圾回收机制使我们可以不必考虑内存分配 / 回收的问题,然而,考虑到运行游戏的客户端多样性,因此,我们还是有必要减少内存开销的。还记得在前面我们提到过 AnimateDelete 类中的 public AnimateDelete(JButton[] dots) 构造函数吗?这个看似无用的方法其实是非常有用的。

在前面,我们提及过,由于多个消除动画可以同步进行,因此,如果在每次实例化类的时候都将界面上的 JButton 控件复制进来,这是一笔不小的内存开支,因此,我们在 AnimateDelete 类中将接收到的 JButton 控件定义为 static ,这样,所有的实例都可以共享同一个 JButton 控件,表面上看起来定义 static 变量使得这部分内存的开销无法除,但考虑到 AnimateDelete 类调用的频率,因此,这样反而是节约了内存开支的。

同样,如果大家看看我的源程序,会发现我有一些地方都将变量定义为了 static

java游戏优化_用 JAVA 开发游戏连连看(之六)优化:让程序运行更稳定、更高...相关推荐

  1. java游戏开发--连连看-让程序运行更稳定、更高效

    之六)优化:让程序运行更稳定.更高效 改善游戏的合理性 到目前为止,我们的游戏基本上算是完成了,为了使程序更合理,我们还需要将整个程序从头再理一遍,看看有没有改进的地方. 首先,在变量的使用上,由于很 ...

  2. java开发的游戏测试_用java编写。模拟一个简单的测试打字速度的游戏

    请高手帮我看看我的程序哪里出现错误了,输出打字速度时出错importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.A ...

  3. java五子棋游戏设计_基于Java的五子棋游戏的设计

    摘  要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用JAVA开发五子棋游戏.主要完成了人机对战和玩家之间联网对战2个功能.网络连接部分为Soc ...

  4. java愤怒的小鸟代码_用java实现小游戏“愤怒的小鸟”附源码和效果演示

    推荐下我自己的群:6915 72518,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份最新资料和零基础入门教程!,欢迎初学和进阶中的小伙伴 今天跟大家分享一个用纯Java代 ...

  5. java华容道代码_华容道Java游戏源代码JAVA游戏源码下载

    鉴于JAVA的华容道游戏源码,希望对研讨JAVA游戏的朋友有所帮助.最初运行于西门子是非屏手机上. 华容道Java游戏源代码 (1 folders, 2 files, 1.38 KB, 76.13 K ...

  6. java游戏为什么_手机Java游戏老玩家:为什么我开始了玩王者荣耀?

    原标题:手机Java游戏老玩家:为什么我开始了玩王者荣耀? 王者看阿泽,荣耀来开黑!大家好,我是助手君阿泽~! 一位手机Java游戏老玩家:为什么,我开始了玩王者荣耀? 其实,大部分的手游,我是不喜欢 ...

  7. java五子棋游戏人工智能_基于java的五子棋游戏(人机对战)

    [实例简介] 我毕业设计自己做的基于java的五子棋游戏软件,获得优秀论文,功能在单纯的人机对战上算比较齐全,也比较好玩!希望为毕业设计做游戏的同学提供些查考! 软件的基本功能 软件的基本功能介绍如下 ...

  8. java写华容道_基于java的华容道小游戏

    一.华容道游戏简介 华容道,古老的中国游戏,以其变化多端.百玩不厌的特点与魔方.独立钻石棋一起被国外智力专家并称为"智力游戏界的三个不可思议".它与七巧板.九连环等中国传统益智玩具 ...

  9. 我的世界古代战争模组介绍java版_Minecraft1.6.4古代战争MOD整合版|我的世界1.6.4古代战争整合包游戏下载_红软单机游戏...

    <我的世界1.6.4古代战争整合包>属于3D的第一人称和第三人称沙盒游戏,所呈现的世界并不是华丽的画面与特效,而是注重在游戏性上面.玩家在游戏中做着建设,破坏等等许多事,透过像乐高一样的积 ...

最新文章

  1. TCP为何采用三次握手来建立连接,若采用二次握手可以吗
  2. MATLAB AppDesigner 设计UI界面中调用自定义函数
  3. 文本加密算法matlab,matlab希尔加密算法
  4. 【排序算法】快速排序-迭代方法
  5. 如何去除数据表中的重复数据
  6. 为ASP.NET AJAX 1.0 Beta补充trace和dump功能
  7. 【评价模型】熵权法和模糊评价模型
  8. PS2手柄移植到STM32上面的小笔记
  9. 微信公众号模板消息配置和发送
  10. 网站打开速度的查询 测试
  11. 系统问题调试:appcrash
  12. 扫码支付 (基于微信)
  13. Metasploit(一) 利用 MS17-010 漏洞进行攻击
  14. 麒麟信安系统chrome和360浏览器离线安装
  15. CF #764 Div.3(B ~D)
  16. 线性代数笔记(4) 特征向量/值与基变换
  17. 怎么理解python语言是一种强类型语言_Python 到底是强类型语言,还是弱类型语言?...
  18. 快速传超大文件的解决方案
  19. 想要转行软件测试,这个技能好学吗?前景怎么样呢
  20. 【SA8295P 源码分析】00 - 系列文章链接汇总

热门文章

  1. 国家职业分类大典公示 心理咨询行业迎来重大变革
  2. css特效:鼠标滑过图片出现一道闪光效果
  3. java 面试薪资25K的 常见问题
  4. Android App 架构图
  5. GitHub(九):掌握 Issues
  6. PSTR模型估计的MATLAB程序,关于pstr模型运行结果答疑
  7. 微商泛滥 朋友圈还是社交圈吗
  8. 让程序在崩溃时体面的退出之Unhandled Exception
  9. fis3 php cgi,FIS3 : FIS3 常用配置
  10. 无刷电机常用的磁性编码器资料收集