Java爱心收集游戏:用代码编织浪漫

想用代码创造一份浪漫吗?这款Java爱心收集游戏将带你体验编程的乐趣!

游戏玩法

  1. 屏幕上显示一个小男孩,你可以用键盘方向键控制他移动。2. 屏幕会随机生成爱心,小男孩触碰到爱心即可收集。3. 收集到12颗爱心后,第13颗爱心会变成一个女孩。4. 小男孩触碰到女孩,屏幕中央将出现一颗大爱心,并弹出'爱艺'对话框,游戏成功!

Java代码实现

以下是游戏的完整Java代码:javaimport javax.swing.;import java.awt.;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Random;

public class LoveCollector extends JFrame implements ActionListener, KeyListener { private final int SCREEN_WIDTH = 500; private final int SCREEN_HEIGHT = 500; private final int BOY_SIZE = 50; private final int HEART_SIZE = 30; private final int BIG_HEART_SIZE = 100; private final int TOTAL_HEARTS = 13; private final int HEARTS_TO_WIN = 12;

private JButton boy;    private JButton heart;    private JButton bigHeart;    private int collectedHearts;    private Random random;

public LoveCollector() {        random = new Random();

    setTitle('Love Collector');        setSize(SCREEN_WIDTH, SCREEN_HEIGHT);        setResizable(false);        setDefaultCloseOperation(EXIT_ON_CLOSE);        setLocationRelativeTo(null);

    Container container = getContentPane();        container.setLayout(null);

    boy = new JButton(new ImageIcon('D:/ai.jpg'));        boy.setBounds(SCREEN_WIDTH / 2 - BOY_SIZE / 2, SCREEN_HEIGHT / 2 - BOY_SIZE / 2, BOY_SIZE, BOY_SIZE);        container.add(boy);

    heart = new JButton(new ImageIcon('D:/ai.jpg'));        heart.setBounds(getRandomX(), getRandomY(), HEART_SIZE, HEART_SIZE);        heart.addActionListener(this);        container.add(heart);

    bigHeart = new JButton(new ImageIcon('D:/ai.jpg'));        bigHeart.setBounds(SCREEN_WIDTH / 2 - BIG_HEART_SIZE / 2, SCREEN_HEIGHT / 2 - BIG_HEART_SIZE / 2,                BIG_HEART_SIZE, BIG_HEART_SIZE);        bigHeart.setVisible(false);        container.add(bigHeart);

    collectedHearts = 0;

    Timer timer = new Timer(1000, this);        timer.start();

    // 注册键盘事件监听器        addKeyListener(this);        setFocusable(true);    }

private int getRandomX() {        return random.nextInt(SCREEN_WIDTH - HEART_SIZE);    }

private int getRandomY() {        return random.nextInt(SCREEN_HEIGHT - HEART_SIZE);    }

private void generateNewHeart() {        heart.setBounds(getRandomX(), getRandomY(), HEART_SIZE, HEART_SIZE);        heart.setVisible(true);    }

private void showBigHeart() {        bigHeart.setVisible(true);    }

private void showDialog() {        JOptionPane.showMessageDialog(this, '爱艺');    }

@Override    public void actionPerformed(ActionEvent e) {        Object source = e.getSource();

    if (source == heart) {            collectedHearts++;            if (collectedHearts == HEARTS_TO_WIN) {                generateNewHeart();                showBigHeart();            } else if (collectedHearts > HEARTS_TO_WIN) {                JOptionPane.showMessageDialog(this, 'Game Over!');                System.exit(0);            } else {                generateNewHeart();            }        }    }

@Override    public void keyPressed(KeyEvent e) {        int keyCode = e.getKeyCode();        int x = boy.getX();        int y = boy.getY();        int step = 10;

    if (keyCode == KeyEvent.VK_UP) {            boy.setLocation(x, y - step);        } else if (keyCode == KeyEvent.VK_DOWN) {            boy.setLocation(x, y + step);        } else if (keyCode == KeyEvent.VK_LEFT) {            boy.setLocation(x - step, y);        } else if (keyCode == KeyEvent.VK_RIGHT) {            boy.setLocation(x + step, y);        }

    if (boy.getBounds().intersects(heart.getBounds())) {            collectedHearts++;                        if (collectedHearts == TOTAL_HEARTS) {                generateNewHeart();                bigHeart.setIcon(new ImageIcon('D:/girl.jpg'));                bigHeart.setBounds(SCREEN_WIDTH / 2 - BIG_HEART_SIZE / 2, SCREEN_HEIGHT / 2 - BIG_HEART_SIZE / 2,                        BIG_HEART_SIZE, BIG_HEART_SIZE);                bigHeart.setVisible(true);                showDialog();            } else {                generateNewHeart();            }        }    }

@Override    public void keyTyped(KeyEvent e) {        // 不需要实现    }

@Override    public void keyReleased(KeyEvent e) {        // 不需要实现    }

public static void main(String[] args) {        SwingUtilities.invokeLater(() -> {            LoveCollector loveCollector = new LoveCollector();            loveCollector.setVisible(true);        });    }}

代码解读

  1. 游戏界面: 使用 JFrame 创建游戏窗口,JButton 分别代表小男孩、爱心和大爱心。2. 游戏逻辑: - keyPressed() 方法处理键盘输入,控制小男孩移动。 - actionPerformed() 方法处理游戏事件,例如爱心收集、游戏结束等。 - generateNewHeart() 方法随机生成新的爱心。3. 游戏胜利: 当小男孩收集到12颗爱心后,第13颗爱心会变成女孩,触碰女孩后游戏胜利。

总结

这款Java爱心收集游戏简单有趣,非常适合初学者学习Java游戏开发。你可以根据自己的创意修改代码,例如更换图片、添加音效等,让游戏更加精彩!

Java爱心收集游戏:用代码编织浪漫

原文地址: https://www.cveoy.top/t/topic/1D2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录