Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package snake;
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.util.ArrayList;
- import java.util.Random;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Future;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- /**
- *
- * @author laudeleo
- */
- public class MinAppletKlass extends Applet implements KeyListener, Runnable {
- Image dbImage; //deklarerar en Image variabel dit en osynlig kopia av applet-grafiken sparas
- Graphics dbg; //deklarerar Graphics variabel dit alla grafik-egenskaper för appleten sparas
- Snake mySnake;
- Random r = new Random();
- int bredd = 10;
- int hojd = 10;
- ExecutorService tg = Executors.newCachedThreadPool();
- //ArrayList<Snake> enemysnakes = new ArrayList<Snake>();
- ArrayList<Food> food = new ArrayList<Food>();
- public void init() {
- mySnake = new Snake(r.nextInt(50) * 10, r.nextInt(50) * 10, 10, 10, this, food, tg, mySnake);
- addKeyListener(this);
- //enemysnakes.add(new Snake(0, 5, 50, 15, this, food, tg));
- for (int i = 0; i < 10; i++) {
- food.add(new Food(r.nextInt(50) * 10, r.nextInt(50) * 10, 9, 9, this));
- }
- Future grafikTrad = tg.submit(this);
- }
- public void update(Graphics g) {
- //Initialiserar den osynliga kopian av grafiken
- if (dbImage == null) {
- //skapar en tom "image" med samma storlek som innevarande applet
- dbImage = createImage(this.getSize().width, this.getSize().height);
- //hämtar grafikegenskaper
- dbg = dbImage.getGraphics();
- }
- //Tömmer skämen i bakgrunden
- dbg.setColor(getBackground());
- dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);
- //Ritar grafiken pånytt i bakgrunden
- dbg.setColor(getForeground());
- paint(dbg);
- //Ritar den uppdaterade bilden på bildskärmen
- g.drawImage(dbImage, 0, 0, this);
- }
- public void paint(Graphics g) //Hit kommer alla utritningsfunktioner
- {
- // Ritar ut rutfältets bakgrundsfärg
- g.setColor(Color.LIGHT_GRAY);
- g.fillRect(2, 2, 560, 560);
- // Ritar ut rutfältet
- g.setColor(Color.black);
- for (int i = 0; i < 56; i++) {
- for (int j = 0; j < 56; j++) {
- g.drawRect(bredd * i, hojd * j, bredd, hojd);
- }
- }
- // Ritar ut äpplen
- for (int i = 0; i < food.size(); i++) {
- g.setColor(Color.RED);
- g.fillOval(food.get(i).x, food.get(i).y, food.get(i).bredd, food.get(i).hojd);
- }
- // Ritar ut scoreboard
- g.setColor(Color.BLACK);
- g.drawString("Score Board", 655, 140);
- g.setColor(Color.GRAY);
- g.drawRect(610, 150, 165, 300);
- // Mysnake resultat på scoreboard
- g.setColor(Color.blue);
- g.fillRect(630, 180, 10, 10);
- g.drawString(Integer.toString(mySnake.linkl.size() - 1), 645, 190);
- // Ritar ut antalet äppel kvar på scoreboard
- g.setColor(Color.red);
- g.fillOval(630, 300, 10, 10);
- g.drawString(Integer.toString(food.size()), 645, 310);
- //if (mySnake.linkl.isEmpty() == false) {
- for (int i = 0; i < mySnake.linkl.size(); i++) {
- g.setColor(Color.BLUE);
- g.fillRect(mySnake.linkl.get(i).x, mySnake.linkl.get(i).y, mySnake.linkl.get(i).hojd, mySnake.linkl.get(i).hojd);
- }
- //}
- }
- public void keyTyped(KeyEvent e) {
- }
- public void keyPressed(KeyEvent e) {
- }
- public void keyReleased(KeyEvent e) {
- if (e.getKeyCode() == KeyEvent.VK_LEFT) {
- mySnake.direction = 'l';
- } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
- mySnake.direction = 'r';
- } else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
- mySnake.direction = 'd';
- } else if (e.getKeyCode() == KeyEvent.VK_UP) {
- mySnake.direction = 'u';
- }
- }
- boolean crash() {
- if (mySnake.snakeCrash()) {
- for (int i = 0; i < mySnake.linkl.size() - 1; i++) {
- food.add(new Food(r.nextInt(50), r.nextInt(50), 9, 9, this));
- }
- }
- return false;
- }
- public void run() {
- while (true) {
- try {
- mySnake.snakeMovements();
- mySnake.snakeEat();
- mySnake.snakeRespawn();
- crash();
- repaint();
- Thread.sleep(90);
- } catch (InterruptedException ex) {
- Logger.getLogger(MinAppletKlass.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement