JFrame实现简易雷霆战机

一、项目简介 

        通过JAVA语言中的JFrame类中的方法实现简易的雷霆战机小游戏,功能包括飞机移动,发射子弹,生成敌机以及摧毁敌机等.  


二、项目分析

        模块一:玩家飞机模块

               要实现这个简易的小游戏,玩家飞机必不可少,我们只需创建一个MainPlane类,在其中定义飞机的初始坐标,飞机的宽度高度以及飞机的默认速度,再通过多线程的方式来设置飞机的移动刷新,当飞机移动时,根据移动方向来改变坐标,如向左移动,就令x坐标减少相应的初始速度值,这样即可实现该功能模块.


        模块二:敌机模块

                此模块与玩家飞机模块类似,也需创建一个敌机的实体类并定义初始坐标,默认宽度与高度以及敌机的默认速度,并且除了通过多线程来控制敌机的刷新之外,还要通过Rectangle这个类来进行子弹碰撞检测,通过给定敌机和子弹的长宽以及坐标,我们可以通过子弹图片的大小以及敌机图片的大小来判断,判断两个图片是否冲突,若检测到碰撞,即显示飞机爆炸的图片,并把敌机移除,除此之外,当飞机飞出窗口的时候,也要移除飞机,这样即可实现这个模块.


        模块三:玩家移动与子弹模块

                为了完整的游玩游戏,我们需添加一个子弹模块,与之前的两个模块功能类似,设置子弹的初始属性,而玩家移动模块则需要通过继承keyAdapter类来添加键盘事件监听,只需重写键盘按下以及松开事件监听即可,我们知道上下左右以及w、a、s、d键的键值为多少,即可通过这两个方法判断按下的键是否为这几个键,定义一个boolean类型的值,若按下了这几个键,这个值即为true,再传到玩家飞机模块实现飞机移动即可.


        模块四:游戏主界面以及功能实现模块                

                这是最后一个模块,这个模块用来实现此前定义的所有功能,通过构造函数设置一个游玩窗口,并通过多线程来实例化进行玩家飞机、敌机以及子弹的分别创建与刷新,只需通过重写paint方法并通过BufferedImage类来画出玩家飞机以及敌机和子弹,再通过repaint和线程来实现画面的刷新;为了创造出多个敌机以及多个子弹的效果,我们可以定义两个集合来存储敌机和子弹,为了保证线程的安全性,我们可以运用Vector集合来存储这两个数据,并实现相应功能.


三、项目演示

 


 四、代码

玩家飞机模块:

import javax.swing.*;
import java.awt.*;

public class MainPlane extends Thread{
    //飞机的坐标
    int x = 210,y = 720;
    //飞机的宽高
    int width = 50,height = 50;
    //飞机移动的速度
    int speed = 10;
    //上下左右
    boolean up,down,left,rig
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用 Java Swing 中的 JFrame 实现简易文件编辑器的示例代码: ```java import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.filechooser.FileNameExtensionFilter; public class SimpleEditor extends JFrame implements ActionListener { private JTextArea textArea; private JButton openButton, saveButton; public SimpleEditor() { // 设置窗口的标题和大小 setTitle("Simple Editor"); setSize(500, 400); setDefaultCloseOperation(EXIT_ON_CLOSE); // 创建文本区域并添加到滚动面板中 textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); getContentPane().add(scrollPane, BorderLayout.CENTER); // 创建按钮并添加到面板中 openButton = new JButton("Open"); openButton.addActionListener(this); saveButton = new JButton("Save"); saveButton.addActionListener(this); JPanel buttonPanel = new JPanel(); buttonPanel.add(openButton); buttonPanel.add(saveButton); getContentPane().add(buttonPanel, BorderLayout.NORTH); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == openButton) { // 创建文件选择器并设置过滤器 JFileChooser fileChooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("Text Files", "txt"); fileChooser.setFileFilter(filter); // 显示文件选择器并处理用户选择的文件 int result = fileChooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); try { BufferedReader reader = new BufferedReader(new FileReader(file)); String line; while ((line = reader.readLine()) != null) { textArea.append(line + "\n"); } reader.close(); } catch (Exception ex) { ex.printStackTrace(); } } } else if (e.getSource() == saveButton) { // 创建文件选择器并设置过滤器 JFileChooser fileChooser = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("Text Files", "txt"); fileChooser.setFileFilter(filter); // 显示文件选择器并处理用户选择的文件 int result = fileChooser.showSaveDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); try { BufferedWriter writer = new BufferedWriter(new FileWriter(file)); writer.write(textArea.getText()); writer.close(); } catch (Exception ex) { ex.printStackTrace(); } } } } public static void main(String[] args) { // 创建并显示简易文件编辑器窗口 SimpleEditor editor = new SimpleEditor(); editor.setVisible(true); } } ``` 该程序创建了一个窗口,其中包括一个文本区域和两个按钮,用于打开和保存文件。当用户单击“Open”按钮时,程序会显示一个文件选择器,用户可以选择要打开的文件。程序会将打开的文件中的文本显示在文本区域中。当用户单击“Save”按钮时,程序会显示一个文件选择器,用户可以选择要保存的文件。程序会将文本区域中的文本保存到所选的文件中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值