上一篇飞机大战文章差不多介绍了简单的飞机大战的实现,剩下要做的就是添加一个分数排行榜和计分器。计分器十分简单,画一个字符串Score,然后显示当前获得的分数即可。既然是排行榜,当然是要记录前几名的分数,具体使用什么方式存储呢?如果使用数组或者数组队列,在每一次关闭了程序之后,记录的数据就会消失,再次打开之后排行榜上的分数就全部变成0了。所以这里我使用了文件读写来存储分数数据。每一次需要存储的分数都会被写在文本中,当再次打开程序的时候只要读取文件里的数据就会得到数据。

public void fileInput(File file) throws IOException{

FileInputStream fis=new FileInputStream(filename);

DataInputStream dis=new DataInputStream(fis);

for(int i=0;i<3;i++){

count[i]=dis.readInt();

}

fis.close();

}

public void fileOutput(File file,int[] score) throws IOException{

FileOutputStream fos=new FileOutputStream(filename);

DataOutputStream dps=new DataOutputStream(fos);

for(int i=0;i<3;i++){

dps.writeInt(score[i]);

}

fos.flush();

fos.close();

}

这里我创建的是一个现实前三名的排行榜,但是创建数组时使用的容量是4。因为重新打开游戏进行游戏再打开排行榜时,需要重新读写本地存储的排行榜数据再添加新的数据进入比较,所以需要容量为4的数组。在读入当次游戏的数据后将数组进行排序,然后在把前三的数据写入文件中。排行榜上显示的也是数组的前三个数。这样,一个排行榜也写好了。不过游戏还是有一点问题。在进行游戏时,如果点击暂停按钮,最小化窗口然后再打开窗口,这时界面会变成初始界面。因为在暂停的时后在主线程的执行中并没有执行绘制图形,所以JFrame界面刷新后变为初始界面。为了改变这种情况,我决定重写JFrame的paint方法。在paint方法中加入标志位,当暂停时最小化窗口了再打开窗口时先让线程执行绘制的方法,然后再进入暂停按钮对应的标志位的语句。

if(biaozhi[0]==1){

//绘制暂停时的界面}

if(flag){

continue;

}

这样就解决了遇到的问题。暂停后无论怎么移动界面也不会出现问题了。

现在的飞机大战能实现的功能都比较简单,还可以再加入一些元素,比如随着时间增加难度增大,加入BGM,给飞机添加一个最终技能之类的。如果还有什么想要实现的再自己添加就好了。差不多就这些了,很久没有更新,最近要多写点文章了- -。

java飞机大战分数显示_Java简单飞机大战(2)相关推荐

  1. java飞机大战背景图片_Java简单飞机大战(1)

    在完成了多线程小球之后,就可以写一个飞机大战小游戏了,虽然比较简单,但玩起来还是有一点乐趣的.下面就讲一下我的大概思路和一些实现步骤. 一开始当然要想好一个框架,毕竟框架还是很重要的.当点击开始按钮的 ...

  2. 点击list view中一行内容可以在combox中显示_java版飞机大战小游戏详细教程(零基础小白也可以分分钟学会!)...

    一:游戏展示 飞机大战小游戏我们都玩过,通过移动飞机来打敌机,这里给大家展示一下游戏成果:呜呜呜由于gif只能上传5M大小,所以就不能给大家展示操作了,如果大家有兴趣可以自己自己做出来再玩哟. 这里面 ...

  3. c语言编程实现飞机飞行速度,C语言实现简单飞机大战.pdf

    C语语言言实实现现简简单单飞飞机机大大战战 本文实例为大家分享了C语言实现飞机大战的具体代码,供大家参考,具体内容如下 义四个函数实现飞机大战 #include #include #include / ...

  4. java jsp中的日历表_JAVA简单的日历程序

    JAVA简单的日历程序 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 /**以下是日历的代码程序 有疑问 回信 ycj@18e.net **/ //Cale ...

  5. java利用redis实现排行榜_Java简单使用redis-zset实现排行榜

    简单使用redis-zset实现排行榜 此方法实现一个根据某字段的查询次数进行排行,查询的次数越多排行越前(从大到小排序),适用于初学者 1.添加依赖 org.springframework.boot ...

  6. JAVA可以赋值分数吗_Java数据类型知多少?

    c c++趣味编程全彩印刷基本游戏 70.4元 包邮 (需用券) 去购买 > Java数据类型 1.八大基本数据类型类型储存需求取值范围byte(字节型)1字节-128~127 short(短整 ...

  7. java图形用户登录界面_Java简单登录图形界面

    一.登录界面 1.程序代码 1 import java.awt.*;//导入awt包 2 import javax.swing.*;//导入swing包 3 import java.awt.event ...

  8. 怎么实现java和数据库的链接_JAVA简单链接Oracle数据库,实现注册和登陆的功能

    //User 用户的基本信息,也是USERINFO表中的3个列 package 登陆判断; public class User { private String name; private Strin ...

  9. java实现磁盘分配显示_Java实现窗体动态加载磁盘文件

    在使用图形界面操作系统时,当打开一个文件夹系统会自动列出该文件夹下的所有文件及子文件夹.本实例实现了类似的功能:首先让用户选择一个文件夹,程序会动态列出该文件夹下的所有文件:如果该文件是隐藏文件,就在 ...

最新文章

  1. PowerShell 学习笔记——运行命令
  2. python pymysql 多线程 读写数据库 报错 Packet sequence number wrong
  3. 迷你linux操作系统,自己动手做一个迷你型Linux操作系统
  4. Oracle 11g 新特性 -- Invisible Indexes(不可见的索引) 说明
  5. OJ1065: 统计数字字符的个数(C语言)
  6. python行业缺口_根据缺口的模式选股买股票,python 学习代码
  7. Tree-AC训练实录
  8. 国家级精品课程计算机程序设计,国家级精品课程
  9. Python代码规范
  10. sql server2008导入文本文件
  11. Deepin安装phpstorm教程
  12. 嵌入式系统ARM期末总复习
  13. Remove 以及dorp做实验验证MongoDB删除文档后索引是否会自动删除
  14. Activiti学习——生成历史流程跟踪图
  15. Google Chrome Windows平台稳定版离线安装包下载
  16. Date转LocalDateTime
  17. BIOS 启动类型:Legacy+UEFI、UEFI BOOT、Legacy BOOT
  18. 麒麟os或将取代android,新款操作系统将要诞生!华为研发麒麟OS,网友:取代安卓...
  19. 家里有两只猫给挖坑,还有世界美食的诱惑,我就被无监督学习彻底收服了!...
  20. 锁相环原理(PLL)

热门文章

  1. string mysql_MySQL中的string类型
  2. 新起之秀 祺峰文化荣获2019年中国会展产业年度金手指奖
  3. crontab 详细用法
  4. 有return的时候,finally块中代码还会执行吗
  5. 水平螺旋输送机的设计(说明书+CAD图纸+任务书+评阅表+鉴定意见+外文)
  6. Docker安装及下载镜像
  7. 《前端框架开发技术》HTML+CSS+JavaScript (站酷静态页面官网7页)
  8. HDMI(一):TMDS
  9. leetcode树之二叉树分裂子树
  10. 招商信用卡账单短信温馨提醒