Java源码实现《植物大战僵尸》

前言

学Java的朋友们,福利来了,今天小编给大家带来了一款 植物大战僵尸源码,看图:

视频演示

环境JDK1.8

类继承UML图

源码实现

我们先从main函数看起,继承了javafx.application.Application。JavaFx是Java图形化界面技术AWT、Swing技术的新替代品。

通过main()执行Application的launch(String str)方法,当然launch(String str)方法不传入任何值也是可以执行的.launch(String str)方法会默认执行本类下的init()、start()、stop()方法。执行下面的main()方法后显示顺序为:

这是初始化方法➡这是start()方法➡这是stop()方法➡这是main()方法。

复制代码
public class Main extends Application {
    // 完整源码: gitee店康姆/hadluo/java_code.git
    public static MediaPlayer mediaPlayer;
    private static Database currentd;

    @Override
    public void start(Stage primaryStage) throws Exception{
        // 程序启动执行
        deserialize();
        addMusic();
        Parent mainPage=FXMLLoader.load(getClass().getResource("MainPage.fxml"));
        Scene scene = new Scene(mainPage,1024,600);
        primaryStage.setTitle("Plants VS Zombies");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public void addMusic() {
        Media sound = new Media(getClass().getResource("/assets/background.wav").toString());
        mediaPlayer = new MediaPlayer(sound);
        mediaPlayer.setAutoPlay(true);
        mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
        mediaPlayer.setStartTime(Duration.seconds(0));
        mediaPlayer.setStopTime(Duration.seconds(50));
        mediaPlayer.play();
    }

    public static Database getDatabase(){
        return currentd;
    }
    public static void serialize() throws IOException {
        ObjectOutputStream out=null;
        try {
            out = new ObjectOutputStream (new FileOutputStream("database.txt"));
            out.writeObject(currentd);
        }
        finally {
            out.close();
            //System.out.println("Saved!");
            System.exit(0);
        }
    }
    public static void deserialize() throws ClassNotFoundException, FileNotFoundException, IOException{
        ObjectInputStream in = null;
        try {
            in=new ObjectInputStream (new FileInputStream("database.txt"));
            currentd=(Database) in.readObject();
            in.close();
        }
        catch (FileNotFoundException e){
            currentd=new Database();
        }
        catch (NullPointerException e) {
            currentd=new Database();
            //System.out.println("This user does not exist in the database");
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
// 完整源码: gitee店康姆/hadluo/java_code.git

结尾语

我是分享好物+教程+源码的老罗,欢迎关注!

相关推荐
hay_lee1 天前
Spring AI实现对话聊天-流式输出
java·人工智能·ollama·spring ai
Hx_Ma161 天前
SpringBoot数据源自动管理
java·spring boot·spring
微小冷1 天前
Rust异步编程详解
开发语言·rust·async·await·异步编程·tokio
SunnyDays10111 天前
Java 高效实现 CSV 转 Excel
java·csv转excel
starfire_hit1 天前
JAVAWEB根据前台请求获取用户IP
java·服务器·网络
fengxin_rou1 天前
[Redis从零到精通|第四篇]:缓存穿透、雪崩、击穿
java·redis·缓存·mybatis·idea·多线程
A9better1 天前
C++——不一样的I/O工具与名称空间
开发语言·c++·学习
像少年啦飞驰点、1 天前
从零开始学 RabbitMQ:小白也能懂的消息队列实战指南
java·spring boot·微服务·消息队列·rabbitmq·异步编程
清水白石0081 天前
《为什么说 deque 是 Python 滑动窗口的“隐藏神器”?深入解析双端队列的高效之道》
开发语言·python
杜子不疼.1 天前
Ascend_C自定义算子开发
c语言·开发语言