Dev-san

Untitled

Nov 14th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.04 KB | None | 0 0
  1.  
  2. import java.awt.BasicStroke;
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.GridBagConstraints;
  8. import java.awt.GridBagLayout;
  9. import java.awt.Point;
  10. import java.awt.Rectangle;
  11. import java.awt.Shape;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseListener;
  14.  
  15. import javax.swing.*;
  16.  
  17. import java.util.Random;
  18. import java.util.logging.Level;
  19. import java.util.logging.Logger;
  20.  
  21.  
  22. class Topka extends JPanel implements MouseListener {
  23.     int numBars = 200;
  24.     Rectangle[] bars = new Rectangle[numBars];
  25.     Topka()
  26.     {
  27.          x = 150;
  28.          y = 50;
  29.          topka = new Rectangle(x, y, radius, radius);
  30.          kreirajScena();
  31.          this.addMouseListener(this);
  32.          vreme = 0;
  33.     }
  34.     void dodajVreme(int v)
  35.     {
  36.         vreme += v;
  37.     }
  38.  
  39.     void kreirajScena()
  40.     {
  41.         Random rand = new Random();
  42.         for (int i = 0; i < numBars; i++)
  43.         {
  44.             int rint = rand.nextInt(20);
  45.             int rint2 = rand.nextInt(150);
  46.            
  47.             Rectangle r = new Rectangle(scenaPos.x + i*500, scenaPos.y, 100 + rint, 100 + rint2);
  48.             bars[i] = r;
  49.         }
  50.     }
  51.     int minGap = 150;
  52.     boolean nacrtajScena(Graphics g)
  53.     {
  54.         Random rand = new Random();
  55.         scenaPos.x -= 1;
  56.         Color col = g.getColor();
  57.        
  58.         boolean kolizija = false;
  59.        
  60.         for (int i = 0; i < numBars; i++)
  61.         {
  62.             Rectangle bar = bars[i];
  63.             bar.x -= 1;
  64.             Rectangle low = new Rectangle(bar);
  65.             low.height += (h - low.y);
  66.             low.y = bar.height + minGap;
  67.             if (bar.intersects(topka) || low.intersects(topka))
  68.                 kolizija = true;
  69.             else
  70.             {
  71.                 if (bar.x + bar.width < topka.x)
  72.                     poeni = i+1;
  73.             }
  74.             g.setColor(orange);
  75.             g.fillRect(bar.x, bar.y, bar.width, bar.height);
  76.             g.fillRect(low.x, low.y, low.width, low.height);
  77.             g.setColor(Color.black);
  78.             g.drawRect(bar.x, bar.y, bar.width, bar.height);
  79.             g.drawRect(low.x, low.y, low.width, low.height);
  80.         }
  81.         g.setColor(col);
  82.         return kolizija;
  83.     }
  84.    
  85.     void updateForce()
  86.     {
  87.         if (force.x > 0)
  88.         {
  89.             force.x -= 1;
  90.         }
  91.         else if (force.x < 0)
  92.         {
  93.             force.x += 1;
  94.         }
  95.         if (force.y > 0)
  96.         {
  97.             force.y -= 1;
  98.         }
  99.         else if (force.y < 0)
  100.         {
  101.             force.y += 1;
  102.         }
  103.     }
  104.     void update()
  105.     {
  106.         int maxY = h-topka.height;
  107.  
  108.         updateForce();
  109.         //System.out.println("Force: " + force);
  110.         topka.x += force.x;
  111.         topka.y += (delta*gravity+force.y/2);
  112.         if (topka.y >= maxY)
  113.         {
  114.             topka.y = maxY;
  115.             gameOver = true;
  116.             return;
  117.         }
  118.     }
  119.    
  120.     @Override
  121.     public void paintComponent(Graphics g)
  122.     {
  123.         Graphics2D g2d = (Graphics2D)g;
  124.         Color topkaBoja = new Color(0, 223, 161);
  125.         w = this.getWidth(); h = this.getHeight();
  126.         cw = w/2; ch = h/2;
  127.         int bgHeight = 50;
  128.         h -= bgHeight;
  129.         update();
  130.         g.setColor(black);
  131.         g.fillRect(0, 0, w, h);
  132.         g.setColor(orange);
  133.         g.fillRect(0, h, w, bgHeight);
  134.         g2d.setStroke(new BasicStroke(4));
  135.         g.setColor(Color.black);
  136.         g.drawLine(0, h, w, h);
  137.         g.setColor(orange);
  138.         gameStarted = vreme > 3000;
  139.         if (!gameStarted)
  140.         {
  141.             g.setFont(font);
  142.             String poraka = Integer.toString(4 - vreme / 1000);
  143.             int w = g2d.getFontMetrics(font).stringWidth(poraka);
  144.             g.drawString(poraka, cw-w/2, ch);
  145.             return ;
  146.         }
  147.        
  148.         if (gameOver)
  149.         {
  150.             g.setFont(font);
  151.             String poraka = "GAME OVER";
  152.             int w = g2d.getFontMetrics(font).stringWidth(poraka);
  153.             g.drawString(poraka, cw-w/2, ch);
  154.             return;
  155.         }
  156.        
  157.         boolean kolizija = nacrtajScena(g);
  158.         if (kolizija)
  159.             gameOver = true;
  160.         g.setColor(topkaBoja);
  161.  
  162.         g.fillOval(topka.x, topka.y, topka.width, topka.height);
  163.         g.setColor(Color.black);
  164.         g.drawOval(topka.x, topka.y, topka.width, topka.height);
  165.         g.setFont(malFont);
  166.         g.setColor(Color.white);
  167.         g.drawString("Points: " + poeni, 5, 20);
  168.     }
  169.     Font font = new Font("TimesRoman", Font.PLAIN, 40);
  170.     Font malFont = new Font("TimesRoman", Font.BOLD, 15);
  171.    
  172.     Point force = new Point(0, -20);
  173.     Point scenaPos = new Point(500, 0);
  174.    
  175.     boolean gameOver = false;
  176.     boolean gameStarted = false;
  177.     int radius = 30;
  178.     int gravity = 9;
  179.     Color orange = new Color(255, 87, 41), black = new Color(60, 60, 60);
  180.     int w = this.getWidth(), h = this.getHeight();
  181.     int cw = w/2, ch = h/2;
  182.     int delta = 1;
  183.     int x, y;
  184.     Rectangle topka;
  185.     int poeni = 0;
  186.     int vreme = 0;
  187.     @Override
  188.     public void mouseClicked(MouseEvent arg0) {
  189.  
  190.     }
  191.     @Override
  192.     public void mouseEntered(MouseEvent arg0) {
  193.         // TODO Auto-generated method stub
  194.        
  195.     }
  196.     @Override
  197.     public void mouseExited(MouseEvent arg0) {
  198.         // TODO Auto-generated method stub
  199.        
  200.     }
  201.     @Override
  202.     public void mousePressed(MouseEvent arg0) {
  203.         force.y += -20;
  204.        
  205.     }
  206.     @Override
  207.     public void mouseReleased(MouseEvent arg0) {
  208.         // TODO Auto-generated method stub
  209.        
  210.     }
  211. }
  212.  
  213. /**
  214.  *
  215.  * @author Ilija Boshkov
  216.  */
  217.  
  218. public class Info extends JApplet implements Runnable {
  219.    
  220.     Topka krug;
  221.    
  222.     @Override
  223.     public void init()
  224.     {
  225.         setSize(500, 500);
  226.         krug = new Topka();
  227.         this.getContentPane().add(krug);
  228.         Thread anim = new Thread(this);
  229.         anim.start();
  230.     }
  231.     void sleep(int n)
  232.     {
  233.         try {
  234.             Thread.sleep(n);
  235.         } catch (InterruptedException ex) {
  236.             Logger.getLogger(Info.class.getName()).log(Level.SEVERE, null, ex);
  237.         }
  238.     }
  239.  
  240.     @Override
  241.     public void run() {
  242.         repaint();
  243.         for (int i = 0; i < 3; i++)
  244.         {
  245.            
  246.             krug.dodajVreme(1000);
  247.             repaint();
  248.             sleep(1000);
  249.             repaint();
  250.         }
  251.         krug.dodajVreme(1000);
  252.         while (true)
  253.         {
  254.  
  255.             this.repaint();
  256.             sleep(20);
  257.         }
  258.        
  259.     }
  260.     int vreme = 0;
  261. }
Advertisement
Add Comment
Please, Sign In to add comment