title

title


  1. import java.applet.Applet;
  2. import java.applet.AudioClip;
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.awt.Graphics2D;
  8. import java.awt.Image;
  9. import java.awt.Rectangle;
  10. import java.awt.Toolkit;
  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.awt.event.KeyAdapter;
  14. import java.awt.event.KeyEvent;
  15. import java.util.ArrayList;
  16. import javax.swing.ImageIcon;
  17. import javax.swing.JPanel;
  18. import javax.swing.Timer;
  19.  
  20. public class background extends JPanel implements ActionListener {
  21.   private Timer timer;
  22.   private control buah;
  23.   private ArrayList fruits;
  24.   private boolean ingame;
  25.   private int B_WIDTH;
  26.   private int B_HEIGHT;
  27.   AudioClip soundTrack;
  28.   AudioClip sound;
  29.   Image gambar;
  30.   private Image back;
  31.   
  32.  
  33.   private int[][] pos = {
  34.     {89,-30}, {29,-90}, {59,-120},
  35.     {109,-280}, {259,-390}, {150,-590},
  36.     {170,-490}, {70,-510}, {60,-530},
  37.     {90,-540}, {45,-560}, {139,-580},
  38.     {80,-590}, {50,-660}, {239,-680},
  39.     {30,-700}, {180,-740}, {50,-760},
  40.     {109,-780}, {259,-790}, {150,-790},
  41.     {220,-810}, {128,-820}, {20,-860},
  42.     {259,-900}, {200,-920}, {159,-930}, 
  43.     {59,-940}, {209,-980}, {30,-990}, 
  44.     {89,-1380}, {29,-1680}, {59,-2000}
  45.    };
  46.  
  47.   public background() {
  48.     addKeyListener(new TAdapter());
  49.     setFocusable(true);
  50.     setBackground(Color.black);
  51.     setDoubleBuffered(true);
  52.     ingame = true;
  53.  
  54.     setSize(400,400);
  55.     buah = new control();
  56.  
  57.     initFruits();
  58.     soundTrack=Applet.newAudioClip(getClass().getResource("backsound.wav"));
  59.     soundTrack.loop();
  60.     timer = new Timer(20, this);
  61.     timer.start();
  62.     
  63.   }
  64.   @Override
  65.   public void addNotify() {
  66.     super.addNotify();
  67.     B_WIDTH = getWidth();
  68.     B_HEIGHT = getHeight(); 
  69.   }
  70.  
  71.   public final void initFruits() {
  72.     fruits = new ArrayList();
  73.     for (int i=0; i<pos.length; i++ ) {
  74.       fruits.add(new buah(pos[i][0], pos[i][1]));
  75.     }
  76.   }
  77.   
  78.    public static Image loadImage(String fileName) {
  79.     ImageIcon icon = new ImageIcon(fileName);
  80.     return icon.getImage();
  81.   }
  82.   
  83.   @Override
  84.   public void paint(Graphics g) {
  85.     super.paint(g);
  86.  
  87.     if (ingame) {
  88.  
  89.       Graphics2D g2d = (Graphics2D)g;
  90.  
  91.       if (buah.isVisible()) {
  92.         g2d.drawImage(buah.getImage(), buah.getX(), buah.getY(),this);
  93.       }
  94.  
  95.       for (int i = 0; i < fruits.size(); i++) {
  96.         buah a = (buah)fruits.get(i);
  97.         if (a.isVisible()) {
  98.           g2d.drawImage(a.getImage(), a.getX(), a.getY(), this);
  99.         }
  100.       }
  101.       g2d.setColor(Color.red);
  102.       g2d.drawString("Target Buah: " + fruits.size(), 5, 15);
  103.     } else {
  104.       String msg = "Permainan Selesai";
  105.       Font small = new Font("Helvetica", Font.BOLD, 30);
  106.       FontMetrics metr = this.getFontMetrics(small);
  107.  
  108.       g.setColor(Color.red);
  109.       g.setFont(small);
  110.       g.drawString(msg, (B_WIDTH - metr.stringWidth(msg)) /2, B_HEIGHT /2);
  111.     }
  112.     Toolkit.getDefaultToolkit().sync();
  113.     g.dispose();
  114.   }
  115.   @Override
  116.   public void actionPerformed(ActionEvent e) {
  117.  
  118.     if (fruits.isEmpty()) {
  119.       ingame = false;
  120.     }
  121.  
  122.     for (int i = 0; i < fruits.size(); i++) {
  123.       buah a = (buah) fruits.get(i);
  124.       if (a.isVisible()) {
  125.         a.move();
  126.       }
  127.       else {
  128.         fruits.remove(i);
  129.       }
  130.     }
  131.     buah.move();
  132.     checkCollisions();
  133.     repaint(); 
  134.   }
  135.   public void checkCollisions() {
  136.     Rectangle r3 = buah.getBounds();
  137.     for (int j = 0; j<fruits.size(); j++) {
  138.       buah a = (buah) fruits.get(j);
  139.       Rectangle r2 = a.getBounds();
  140.  
  141.       if (r3.intersects(r2)) {
  142.         a.setVisible(false);
  143.         sound = Applet.newAudioClip(getClass().getResource("soft-slidertick.wav"));
  144.         sound.play();
  145.       }
  146.     }
  147.   }
  148.   private class TAdapter extends KeyAdapter {
  149.  
  150.     @Override
  151.     public void keyReleased(KeyEvent e) {
  152.       buah.keyReleased(e);
  153.     }
  154.  
  155.     @Override
  156.     public void keyPressed(KeyEvent e) {
  157.       buah.keyPressed(e);
  158.     }
  159.   }
  160. }


Report Page