Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.91 KB | None | 0 0
  1. package snake;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Color;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.event.KeyEvent;
  8. import java.awt.event.KeyListener;
  9. import java.util.ArrayList;
  10. import java.util.Random;
  11. import java.util.concurrent.ExecutorService;
  12. import java.util.concurrent.Executors;
  13. import java.util.concurrent.Future;
  14. import java.util.logging.Level;
  15. import java.util.logging.Logger;
  16.  
  17. /**
  18.  *
  19.  * @author laudeleo
  20.  */
  21. public class MinAppletKlass extends Applet implements KeyListener, Runnable {
  22.  
  23.     Image dbImage;  //deklarerar en Image variabel dit en osynlig kopia av applet-grafiken sparas
  24.     Graphics dbg;   //deklarerar Graphics variabel dit alla grafik-egenskaper för appleten sparas
  25.     Snake mySnake;
  26.     Random r = new Random();
  27.     int bredd = 10;
  28.     int hojd = 10;
  29.     ExecutorService tg = Executors.newCachedThreadPool();
  30.     //ArrayList<Snake> enemysnakes = new ArrayList<Snake>();
  31.     ArrayList<Food> food = new ArrayList<Food>();
  32.  
  33.     public void init() {
  34.         mySnake = new Snake(r.nextInt(50) * 10, r.nextInt(50) * 10, 10, 10, this, food, tg, mySnake);
  35.         addKeyListener(this);
  36.         //enemysnakes.add(new Snake(0, 5, 50, 15, this, food, tg));
  37.         for (int i = 0; i < 10; i++) {
  38.             food.add(new Food(r.nextInt(50) * 10, r.nextInt(50) * 10, 9, 9, this));
  39.         }
  40.  
  41.         Future grafikTrad = tg.submit(this);
  42.     }
  43.  
  44.     public void update(Graphics g) {
  45.         //Initialiserar den osynliga kopian av grafiken
  46.         if (dbImage == null) {
  47.             //skapar en tom "image" med samma storlek som innevarande applet
  48.             dbImage = createImage(this.getSize().width, this.getSize().height);
  49.             //hämtar grafikegenskaper
  50.             dbg = dbImage.getGraphics();
  51.         }
  52.  
  53.         //Tömmer skämen i bakgrunden
  54.         dbg.setColor(getBackground());
  55.         dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);
  56.  
  57.         //Ritar grafiken pånytt i bakgrunden
  58.         dbg.setColor(getForeground());
  59.         paint(dbg);
  60.  
  61.         //Ritar den uppdaterade bilden på bildskärmen
  62.         g.drawImage(dbImage, 0, 0, this);
  63.  
  64.     }
  65.  
  66.     public void paint(Graphics g) //Hit kommer alla utritningsfunktioner
  67.     {
  68.         // Ritar ut rutfältets bakgrundsfärg
  69.         g.setColor(Color.LIGHT_GRAY);
  70.         g.fillRect(2, 2, 560, 560);
  71.  
  72.         // Ritar ut rutfältet
  73.         g.setColor(Color.black);
  74.         for (int i = 0; i < 56; i++) {
  75.             for (int j = 0; j < 56; j++) {
  76.                 g.drawRect(bredd * i, hojd * j, bredd, hojd);
  77.             }
  78.         }
  79.  
  80.         // Ritar ut äpplen
  81.         for (int i = 0; i < food.size(); i++) {
  82.             g.setColor(Color.RED);
  83.             g.fillOval(food.get(i).x, food.get(i).y, food.get(i).bredd, food.get(i).hojd);
  84.         }
  85.  
  86.         // Ritar ut scoreboard
  87.         g.setColor(Color.BLACK);
  88.         g.drawString("Score Board", 655, 140);
  89.  
  90.         g.setColor(Color.GRAY);
  91.         g.drawRect(610, 150, 165, 300);
  92.  
  93.         // Mysnake resultat på scoreboard
  94.         g.setColor(Color.blue);
  95.         g.fillRect(630, 180, 10, 10);
  96.         g.drawString(Integer.toString(mySnake.linkl.size() - 1), 645, 190);
  97.  
  98.         // Ritar ut antalet äppel kvar på scoreboard
  99.         g.setColor(Color.red);
  100.         g.fillOval(630, 300, 10, 10);
  101.         g.drawString(Integer.toString(food.size()), 645, 310);
  102.  
  103.         //if (mySnake.linkl.isEmpty() == false) {
  104.             for (int i = 0; i < mySnake.linkl.size(); i++) {
  105.                 g.setColor(Color.BLUE);
  106.                 g.fillRect(mySnake.linkl.get(i).x, mySnake.linkl.get(i).y, mySnake.linkl.get(i).hojd, mySnake.linkl.get(i).hojd);
  107.  
  108.             }
  109.         //}
  110.     }
  111.  
  112.     public void keyTyped(KeyEvent e) {
  113.     }
  114.  
  115.     public void keyPressed(KeyEvent e) {
  116.     }
  117.  
  118.     public void keyReleased(KeyEvent e) {
  119.  
  120.         if (e.getKeyCode() == KeyEvent.VK_LEFT) {
  121.             mySnake.direction = 'l';
  122.         } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
  123.             mySnake.direction = 'r';
  124.         } else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
  125.             mySnake.direction = 'd';
  126.         } else if (e.getKeyCode() == KeyEvent.VK_UP) {
  127.             mySnake.direction = 'u';
  128.         }
  129.     }
  130.  
  131.    boolean crash() {
  132.         if (mySnake.snakeCrash()) {
  133.             for (int i = 0; i < mySnake.linkl.size() - 1; i++) {
  134.                 food.add(new Food(r.nextInt(50), r.nextInt(50), 9, 9, this));
  135.             }
  136.         }
  137.         return false;
  138.     }
  139.  
  140.     public void run() {
  141.  
  142.         while (true) {
  143.             try {
  144.                 mySnake.snakeMovements();
  145.                 mySnake.snakeEat();
  146.                 mySnake.snakeRespawn();
  147.                 crash();
  148.                 repaint();
  149.                 Thread.sleep(90);
  150.             } catch (InterruptedException ex) {
  151.                 Logger.getLogger(MinAppletKlass.class.getName()).log(Level.SEVERE, null, ex);
  152.             }
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement