我想创建一个Java飞机大战小游戏,启动代码,会弹出一个游戏框,有背景图有登录注册框,登录注册连接数据库;登录成功之后,进入主界面,主界面中间自上而下有三个长方形按钮,分别是开始游戏‘’,‘’选择英雄机,设置‘’四个按钮
时间: 2024-03-09 10:51:25 浏览: 17
好的,以下是一个简单的Java飞机大战小游戏的启动代码,包含了你所需要的功能:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class PlaneWar extends JFrame implements ActionListener {
private JButton startBtn;
private JButton heroBtn;
private JButton settingBtn;
private JButton loginBtn;
private JButton registerBtn;
private JLabel backgroundLabel;
private JPanel mainPanel;
private JPanel loginPanel;
private JTextField usernameField;
private JPasswordField passwordField;
private String username;
private String password;
private Connection conn;
public PlaneWar() {
// 初始化数据库连接
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/plane_war";
conn = DriverManager.getConnection(url, "root", "password");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
// 初始化登录面板
loginPanel = new JPanel();
loginPanel.setLayout(null);
loginPanel.setBounds(0, 0, 800, 600);
loginPanel.setBackground(Color.WHITE);
JLabel usernameLabel = new JLabel("Username:");
usernameLabel.setBounds(250, 200, 100, 30);
loginPanel.add(usernameLabel);
usernameField = new JTextField();
usernameField.setBounds(350, 200, 200, 30);
loginPanel.add(usernameField);
JLabel passwordLabel = new JLabel("Password:");
passwordLabel.setBounds(250, 250, 100, 30);
loginPanel.add(passwordLabel);
passwordField = new JPasswordField();
passwordField.setBounds(350, 250, 200, 30);
loginPanel.add(passwordField);
loginBtn = new JButton("Login");
loginBtn.setBounds(300, 300, 100, 30);
loginBtn.addActionListener(this);
loginPanel.add(loginBtn);
registerBtn = new JButton("Register");
registerBtn.setBounds(400, 300, 100, 30);
registerBtn.addActionListener(this);
loginPanel.add(registerBtn);
// 初始化主面板
mainPanel = new JPanel();
mainPanel.setLayout(null);
mainPanel.setBounds(0, 0, 800, 600);
mainPanel.setBackground(Color.WHITE);
startBtn = new JButton("Start Game");
startBtn.setBounds(300, 200, 200, 50);
startBtn.addActionListener(this);
mainPanel.add(startBtn);
heroBtn = new JButton("Select Hero");
heroBtn.setBounds(300, 275, 200, 50);
heroBtn.addActionListener(this);
mainPanel.add(heroBtn);
settingBtn = new JButton("Setting");
settingBtn.setBounds(300, 350, 200, 50);
settingBtn.addActionListener(this);
mainPanel.add(settingBtn);
// 初始化背景图片
ImageIcon bgImage = new ImageIcon("background.jpg");
backgroundLabel = new JLabel(bgImage);
backgroundLabel.setBounds(0, 0, 800, 600);
// 将登录面板添加到背景图片上
backgroundLabel.add(loginPanel);
// 将背景图片添加到窗口中
add(backgroundLabel);
// 设置窗口属性
setTitle("Plane War");
setSize(800, 600);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == loginBtn) {
// 处理登录事件
username = usernameField.getText();
password = new String(passwordField.getPassword());
try {
String sql = "SELECT username, password FROM user WHERE username=? AND password=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
// 登录成功,显示主面板
backgroundLabel.remove(loginPanel);
backgroundLabel.add(mainPanel);
backgroundLabel.repaint();
} else {
// 登录失败,弹出提示框
JOptionPane.showMessageDialog(this, "Invalid username or password.");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
} else if (e.getSource() == registerBtn) {
// 处理注册事件
// TODO: 实现用户注册功能
} else if (e.getSource() == startBtn) {
// 处理开始游戏事件
// TODO: 跳转到游戏界面
} else if (e.getSource() == heroBtn) {
// 处理选择英雄机事件
// TODO: 弹出英雄机选择框
} else if (e.getSource() == settingBtn) {
// 处理设置事件
// TODO: 弹出设置框
}
}
public static void main(String[] args) {
new PlaneWar();
}
}
```
这段代码实现了一个简单的飞机大战游戏的启动界面,包括了登录注册连接数据库的功能,以及主界面的三个按钮。请注意,这只是一个简单的示例代码,还需要你自己进行完善和扩展。