Java黄金矿工游戏教程:使用IDEA编写经典小游戏
Java黄金矿工游戏教程:使用IDEA编写经典小游戏
想学习如何使用Java编写游戏吗?本教程将带领你使用Java Swing库和IDEA开发环境,一步步创建一个经典的黄金矿工小游戏。
1. 创建项目并添加代码
在IDEA中创建一个新的Java项目,并将以下代码复制到你的主类文件中:javaimport javax.swing.;import java.awt.;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.List;import java.util.Random;
public class GoldMiner extends JPanel implements ActionListener {
private static final int WIDTH = 800; private static final int HEIGHT = 600; private static final int DELAY = 10;
private Timer timer; private List<Gold> golds; private Hook hook; private boolean isHookMovingUp;
public GoldMiner() { initGame(); }
private void initGame() { setPreferredSize(new Dimension(WIDTH, HEIGHT)); setBackground(Color.black); setFocusable(true);
golds = new ArrayList<>(); generateGolds();
hook = new Hook(); hook.setX(WIDTH / 2); hook.setY(0);
timer = new Timer(DELAY, this); timer.start(); }
private void generateGolds() { Random rand = new Random(); int numGolds = rand.nextInt(5) + 5; // Generate between 5 and 10 golds
for (int i = 0; i < numGolds; i++) { Gold gold = new Gold(); gold.setX(rand.nextInt(WIDTH - Gold.SIZE)); gold.setY(rand.nextInt(HEIGHT / 2)); golds.add(gold); } }
private void moveHook() { if (isHookMovingUp) { if (hook.getY() > 0) { hook.setY(hook.getY() - 1); } else { isHookMovingUp = false; } } else { if (hook.getY() < HEIGHT) { hook.setY(hook.getY() + 1); } else { isHookMovingUp = true; } } }
private void checkCollision() { Rectangle hookBounds = new Rectangle(hook.getX(), hook.getY(), Hook.WIDTH, Hook.HEIGHT);
for (Gold gold : golds) { Rectangle goldBounds = new Rectangle(gold.getX(), gold.getY(), Gold.SIZE, Gold.SIZE); if (hookBounds.intersects(goldBounds)) { golds.remove(gold); break; } } }
private void draw(Graphics g) { if (golds.size() == 0) { gameOver(g); } else { for (Gold gold : golds) { g.setColor(Color.yellow); g.fillRect(gold.getX(), gold.getY(), Gold.SIZE, Gold.SIZE); }
g.setColor(Color.red); g.fillRect(hook.getX(), hook.getY(), Hook.WIDTH, Hook.HEIGHT); } }
private void gameOver(Graphics g) { String msg = 'Game Over'; Font font = new Font('Helvetica', Font.BOLD, 40); FontMetrics metrics = getFontMetrics(font);
g.setColor(Color.white); g.setFont(font); g.drawString(msg, (WIDTH - metrics.stringWidth(msg)) / 2, HEIGHT / 2); }
@Override public void actionPerformed(ActionEvent e) { moveHook(); checkCollision(); repaint(); }
@Override public void paintComponent(Graphics g) { super.paintComponent(g); draw(g); }
public static void main(String[] args) { JFrame frame = new JFrame('Gold Miner Game'); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GoldMiner game = new GoldMiner(); frame.add(game); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); }}
2. 编写游戏元素类
你需要创建两个简单的类:Gold 和 Hook,分别表示游戏中的金块和钩子。java// Gold.javapublic class Gold { public static final int SIZE = 20; private int x; private int y;
// Getters and setters for x and y}
// Hook.javapublic class Hook { public static final int WIDTH = 10; public static final int HEIGHT = 30; private int x; private int y;
// Getters and setters for x and y}
3. 运行游戏
完成以上步骤后,运行你的主类文件。一个窗口将会弹出,显示你的黄金矿工游戏!钩子会自动上下移动,试图捕捉金块。
4. 游戏玩法
玩家的目标是使用钩子收集尽可能多的金块。当所有金块被收集完毕时,游戏结束。
总结
恭喜!你已经成功使用Java和IDEA编写了一个简单的黄金矿工游戏。你可以尝试修改代码,添加新的功能,例如:
- 不同的金块类型,拥有不同的分数和速度* 障碍物,使游戏更具挑战性* 计分系统,记录玩家得分* 音效,增强游戏体验
通过不断学习和实践,你将能够开发出更加复杂和有趣的游戏!
原文地址: https://www.cveoy.top/t/topic/PXm 著作权归作者所有。请勿转载和采集!