OleVedeler

Snake

May 6th, 2012
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.35 KB | None | 0 0
  1. //My verson of snake, has some minor bugs
  2.  
  3. import javax.swing.*;
  4. import java.awt.BorderLayout;
  5. import java.awt.Graphics;
  6.  
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.awt.event.KeyEvent;
  10. import java.awt.event.KeyListener;
  11. import java.util.*;
  12. import java.awt.*;
  13. import javax.swing.Timer;
  14.  
  15. public class EnkelSnake extends JFrame implements KeyListener{
  16.    
  17.     private SpillPanel panel;
  18.    
  19.     public EnkelSnake(int x, int y){
  20.         super("Snake V.1");
  21.         panel = new SpillPanel(x, y);
  22.         add(panel, BorderLayout.CENTER);
  23.         setSize(x, y);
  24.         setVisible(true);
  25.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  26.         addKeyListener(this);
  27.         panel.go();
  28.     }
  29.    
  30.     private class SpillPanel extends JPanel{
  31.        
  32.         private Point sign = new Point();
  33.         private Point size = new Point();
  34.         private Point applePos = new Point(100,100);
  35.         private Random rand = new Random();
  36.        
  37.         private int counter = 0;
  38.         private int score = 0;
  39.        
  40.         private int antalldeler = 1;
  41.         private int nedteller = 5;
  42.         private int multiplayer = 1;
  43.        
  44.         private ArrayList<Point> position = new ArrayList<Point>();
  45.         private boolean EatFirstApple = false;
  46.        
  47.         Timer t = new Timer(1000, new ActionListener(){
  48.             public void actionPerformed(ActionEvent e) {
  49.                 counter++;
  50.             }
  51.         });
  52.    
  53.         public SpillPanel(int x, int y){
  54.             size.x = x;
  55.             size.y = y;
  56.             for (int i = 0; i < antalldeler; i++) {
  57.                 position.add(i, new Point( (x / 2) - 10 * i, (y / 2)));
  58.             }
  59.             setSign(1,0);
  60.         }
  61.         public void setSign(int x, int y){
  62.             this.sign = new Point(x,y);
  63.         }
  64.         public Point getSign(){
  65.             return sign;
  66.         }
  67.        
  68.         public void paintComponent(Graphics g){
  69.             super.paintComponent(g);   
  70.             for (int i = 0; i < antalldeler; i++) {
  71.                 g.fillRect(position.get(i).x, position.get(i).y, 9, 9);
  72.             }
  73.             g.drawRect(10, 10, 460, 440);
  74.             g.fillOval(applePos.x, applePos.y, 10, 10);
  75.             g.drawRect(100, 0, 200 , 10);
  76.             g.fillRect(100, 0, ((nedteller - counter)) * 200/nedteller, 10);
  77.             g.drawString(("Score: " + score), 10, 10);
  78.             g.drawString("x"+ multiplayer, 400, 10);
  79.         }
  80.        
  81.         public void newApple(){
  82.                 applePos.x = rand.nextInt(40) * 10 + 10;
  83.                 applePos.y = rand.nextInt(40) * 10 + 10;
  84.                 t.restart();
  85.                 counter = 0;
  86.         }
  87.        
  88.         public void outOfTime(){
  89.             if(counter > nedteller){
  90.                 newApple();
  91.                 multiplayer = 1;
  92.             }else{
  93.                 t.start();
  94.             }
  95.         }
  96.        
  97.         public void eatTail(){
  98.             for (int i = 1; i < antalldeler; i++) {
  99.                 if((position.get(0).x < position.get(i).x + 5
  100.                         && position.get(0).x > position.get(i).x - 5)
  101.                         && position.get(0).y < position.get(i).y + 5
  102.                         && position.get(0).y > position.get(i).y - 5){
  103.                         System.exit(0);
  104.                 }
  105.             }
  106.            
  107.         }
  108.        
  109.        
  110.         public void eatApple(){
  111.             if((position.get(0).x <= applePos.x + 5
  112.                     && position.get(0).x >= applePos.x - 5)
  113.                     && position.get(0).y <= applePos.y + 5
  114.                     && position.get(0).y >= applePos.y - 5){
  115.                 newApple();
  116.                 score += 10 * multiplayer;
  117.                 position.add(position.size(), new Point( position.get(position.size() - 1).x +5, position.get(position.size() - 1).y ));
  118.                 antalldeler++; 
  119.                 multiplayer++;
  120.  
  121.             }
  122.         }
  123.        
  124.        
  125.         public void go(){
  126.             while(true){
  127.                 repaint(); 
  128.                 outOfTime();
  129.                 eatApple();
  130.                 eatTail();
  131.                 try{
  132.                     Thread.sleep(50);
  133.                 }catch(InterruptedException ie){}  
  134.                
  135.                 for (int i = antalldeler - 1 ; i > 0; i--) {
  136.                     position.set(i,new Point(position.get(i - 1).x,
  137.                             position.get(i - 1).y));
  138.                 }
  139.                
  140.                 position.set(0, new Point(position.get(0).x + 10 * getSign().x,
  141.                         position.get(0).y + 10 * getSign().y));
  142.                
  143.                
  144.                 if(position.get(0).x <= 5 || position.get(0).x >= size.x - 35 || position.get(0).y <= 0 || position.get(0).y >= size.y - 55){
  145.                     System.exit(0);
  146.                 }
  147.             }
  148.         }
  149.     }
  150.    
  151.     public static void main(String[] args) {
  152.         new EnkelSnake(500, 500);
  153.     }
  154.  
  155.     public void keyPressed(KeyEvent e) {
  156.  
  157.         int tast = e.getKeyCode();
  158.        
  159.         if(tast == KeyEvent.VK_UP && panel.getSign().y != 1){
  160.                 panel.setSign(0, -1);
  161.         }
  162.         else if(tast == KeyEvent.VK_DOWN && panel.getSign().y != -1){
  163.                 panel.setSign(0, 1);
  164.         }
  165.         else if(tast == KeyEvent.VK_LEFT && panel.getSign().x != 1){
  166.                 panel.setSign(-1,0);
  167.         }
  168.         else if(tast == KeyEvent.VK_RIGHT && panel.getSign().x != -1){
  169.                 panel.setSign(1, 0);
  170.         }  
  171.     }
  172.  
  173.     public void keyReleased(KeyEvent e) {}
  174.     public void keyTyped(KeyEvent e) {}
  175. }
Advertisement
Add Comment
Please, Sign In to add comment