📄 pinballpanel.java
字号:
import java.awt.event.*;import java.util.Vector;import javax.swing.*;import java.awt.*;public class PinBallPanel extends JPanel { private Vector balls; //A vector to hold balls private PinBallFire fireButton = new PinBallFire(new Point(PinBallGame.FrameWidth-40, PinBallGame.FrameHeight-70)); public PinBallPanel(){ balls = new Vector(); addMouseListener(new MouseKeeper()); score = 0; scoreLabel = new Label("Score = 0 "); targets = new Vector(); targets.addElement(new Wall(30, 50, 2, 350)); targets.addElement(new Wall(30, 50, 360, 2)); targets.addElement(new Wall(390, 50, 2, 380)); targets.addElement(new Hole(100, 100)); targets.addElement(new ScorePad(150, 220, 100)); targets.addElement(new Peg(300, 140, 200)); targets.addElement(new Spring(120, 350)); add("North", scoreLabel); } private int score = 0; private Label scoreLabel = new Label("Score = 0"); private Vector targets; public void addScore (int v){ score = score + v; scoreLabel.setText("Score = " + score); } private class MouseKeeper extends MouseAdapter{ private PinBallTarget element; public void mousePressed (MouseEvent e) { element = null; int x = e.getX(); int y = e.getY(); if (fireButton.includes(x, y)) balls.addElement(fireButton.fire(x, y)); if (x < 40) { //each target occupies a 40 by 40 pixel box switch (y / 40) { case 2: element = new Hole(0, 0); break; case 3: element = new Peg(0, 0, 100); break; case 4: element = new Peg(0, 0, 200); break; case 5: element = new ScorePad(0, 0, 100); break; case 6: element = new ScorePad(0, 0, 200); break; case 7: element = new Spring(0, 0); break; case 8: element = new Wall(0, 0, 2, 15); break; } } } public void mouseReleased (MouseEvent e) { int x = e.getX(); // only perform release action if mouse is int y = e.getY(); // released on playing surface if ((element != null) && (x > 50)) { element.moveTo(x, y); targets.addElement(element); repaint(); } } } public void run() { while (true) { moveBalls(); repaint(); try { Thread.sleep(10); } catch(InterruptedException e) {System.exit(0);} } } private void moveBalls() { for (int i = 0; i < balls.size(); i++) { PinBall theBall = (PinBall) balls.elementAt(i); if (theBall.y() < PinBallGame.FrameHeight){ theBall.move(); for (int j = 0; j < targets.size(); j++) { PinBallTarget target = (PinBallTarget) targets.elementAt(j); if (target.intersects(theBall)) target.hitBy(theBall); }; } else { balls.removeElement(theBall); } } } public void paintComponent(Graphics g) { super.paintComponent(g); //clear window fireButton.paint(g); for (int i = 0; i < balls.size(); i++) { Ball aBall = (Ball) balls.elementAt(i); aBall.paint(g); } for (int j = 0; j < targets.size(); j++) { PinBallTarget target = (PinBallTarget) targets.elementAt(j); target.paint(g); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -