Ramdan51-062

Snake

Dec 14th, 2017
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.56 KB | None | 0 0
  1. package Snake;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.Graphics;
  7. import java.awt.Point;
  8. import java.awt.Toolkit;
  9. import java.awt.event.ActionEvent;
  10. import java.awt.event.ActionListener;
  11. import java.awt.event.KeyEvent;
  12. import java.awt.event.KeyListener;
  13. import java.util.ArrayList;
  14. import java.util.Random;
  15.  
  16. import javax.swing.JFrame;
  17. import javax.swing.Timer;
  18.  
  19. public class Snake implements ActionListener, KeyListener {
  20.  
  21.     public JFrame jframe;
  22.     public Timer timer = new Timer(30, this);
  23.     public Renderer renderer;
  24.     public static Snake snake;
  25.     public Snakes player1, player2;
  26.     public ArrayList<Point> snakeParts = new ArrayList<Point>();
  27.     public int ticks = 0, direction = DOWN, score = 0, tailLength, time, stopwatch, gameStatus, scoreLimit, width = 800,
  28.             height = 700;
  29.     public Cherry cherry;
  30.     public Random random;
  31.     public Dimension dimension;
  32.     public boolean over, paused;
  33.  
  34.     public static final int UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, SCALE = 10, MENU = 1, PLAYING = 2;
  35.  
  36.     public Snake() {
  37.         dimension = Toolkit.getDefaultToolkit().getScreenSize();
  38.         jframe = new JFrame();
  39.         jframe.setVisible(true);
  40.         jframe.setSize(width, height);
  41.         jframe.setResizable(false);
  42.         jframe.setLocation(dimension.width / 2 - jframe.getWidth() / 2, dimension.height / 2 - jframe.getHeight() / 2);
  43.         jframe.add(renderer = new Renderer());
  44.         jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  45.         jframe.addKeyListener(this);
  46.         StartGame();
  47.     }
  48.  
  49.     public void StartGame() {
  50.         gameStatus = MENU;
  51.         paused = over = false;
  52.         random = new Random();
  53.         cherry = new Cherry(random.nextInt(60), random.nextInt(70));
  54.         player1 = new Snakes(this, 1, 0, 0);
  55.         player2 = new Snakes(this, 2, 77, 0);
  56.         ticks = 4000;
  57.         time = 0;
  58.         timer.start();
  59.     }
  60.  
  61.     public void render(Graphics g) {
  62.         g.setColor(Color.GREEN);
  63.         g.fillRect(0, 0, 800, 700);
  64.         if (gameStatus == MENU) {
  65.             g.setColor(Color.BLACK);
  66.             g.setFont(new Font("Arial", 1, 50));
  67.             g.drawString("Snakes", width / 2 - 100, 50);
  68.             g.drawString("Press Space to Play", width / 2 - 250, 100);
  69.         } else if (gameStatus == PLAYING) {
  70.             cherry.render(g);
  71.             player1.render(g);
  72.             player2.render(g);
  73.             if (GameOver()) {
  74.                 g.setFont(new Font("Arial", 1, 25));
  75.                 g.setColor(Color.BLUE);
  76.                 g.drawString("Game Over", 300, 60);
  77.                 if (player1.score > player2.score) {
  78.                     g.setFont(new Font("Arial", 1, 20));
  79.                     g.setColor(Color.RED);
  80.                     g.drawString("Player 1 Win", 310, 80);
  81.                 }
  82.                 if (player1.score < player2.score) {
  83.                     g.setFont(new Font("Arial", 1, 20));
  84.                     g.setColor(Color.YELLOW);
  85.                     g.drawString("Player 2 Win", 310, 80);
  86.                 } else if (player1.score == player2.score) {
  87.                     g.setFont(new Font("Arial", 1, 20));
  88.                     g.setColor(Color.BLUE);
  89.                     g.drawString("Draw", 350, 80);
  90.                 }
  91.             }
  92.  
  93.         }
  94.     }
  95.  
  96.     @Override
  97.     public void actionPerformed(ActionEvent arg0) {
  98.         ticks--;
  99.         if (snake.ticks % 5 == 0 && !GameOver() && !snake.paused) {
  100.             if (cherry.cherry != null) {
  101.                 if (player1.head.equals(cherry.cherry)) {
  102.                     player1.score++;
  103.                     player1.tailLength++;
  104.                     cherry.cherry = new Point(random.nextInt(60), random.nextInt(70));
  105.                 } else if (player2.head.equals(cherry.cherry)) {
  106.                     player2.score++;
  107.                     player2.tailLength++;
  108.                     cherry.cherry = new Point(random.nextInt(60), random.nextInt(70));
  109.                 }
  110.             }
  111.             renderer.repaint();
  112.         }
  113.     }
  114.  
  115.     public boolean GameOver() {
  116.         if ((player1.over && player2.over) || scoreLimit == 10)
  117.             return true;
  118.         return false;
  119.     }
  120.  
  121.     public static void main(String[] args) {
  122.         snake = new Snake();
  123.     }
  124.  
  125.     @Override
  126.     public void keyPressed(KeyEvent e) {
  127.         // TODO Auto-generated method stub
  128.         int i = e.getKeyCode();
  129.         switch (i) {
  130.         case KeyEvent.VK_A:
  131.             player1.Move(LEFT);
  132.             break;
  133.         case KeyEvent.VK_D:
  134.             player1.Move(RIGHT);
  135.             break;
  136.         case KeyEvent.VK_W:
  137.             player1.Move(UP);
  138.             break;
  139.         case KeyEvent.VK_S:
  140.             player1.Move(DOWN);
  141.             break;
  142.         case KeyEvent.VK_LEFT:
  143.             player2.Move(LEFT);
  144.             break;
  145.         case KeyEvent.VK_RIGHT:
  146.             player2.Move(RIGHT);
  147.             break;
  148.         case KeyEvent.VK_UP:
  149.             player2.Move(UP);
  150.             break;
  151.         case KeyEvent.VK_DOWN:
  152.             player2.Move(DOWN);
  153.             break;
  154.  
  155.         // Restart Game
  156.         case KeyEvent.VK_SPACE:
  157.             if (GameOver())
  158.                 StartGame();
  159.             else if (gameStatus == MENU) {
  160.                 gameStatus = PLAYING;
  161.             } else
  162.                 paused = !paused;
  163.             break;
  164.         }
  165.     }
  166.  
  167.     @Override
  168.     public void keyReleased(KeyEvent arg0) {
  169.         // TODO Auto-generated method stub
  170.  
  171.     }
  172.  
  173.     @Override
  174.     public void keyTyped(KeyEvent arg0) {
  175.         // TODO Auto-generated method stub
  176.  
  177.     }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment