Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Snake;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.util.ArrayList;
- import java.util.Random;
- import javax.swing.JFrame;
- import javax.swing.Timer;
- public class Snake implements ActionListener, KeyListener {
- public JFrame jframe;
- public Timer timer = new Timer(30, this);
- public Renderer renderer;
- public static Snake snake;
- public Snakes player1, player2;
- public ArrayList<Point> snakeParts = new ArrayList<Point>();
- public int ticks = 0, direction = DOWN, score = 0, tailLength, time, stopwatch, gameStatus, scoreLimit, width = 800,
- height = 700;
- public Cherry cherry;
- public Random random;
- public Dimension dimension;
- public boolean over, paused;
- public static final int UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, SCALE = 10, MENU = 1, PLAYING = 2;
- public Snake() {
- dimension = Toolkit.getDefaultToolkit().getScreenSize();
- jframe = new JFrame();
- jframe.setVisible(true);
- jframe.setSize(width, height);
- jframe.setResizable(false);
- jframe.setLocation(dimension.width / 2 - jframe.getWidth() / 2, dimension.height / 2 - jframe.getHeight() / 2);
- jframe.add(renderer = new Renderer());
- jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- jframe.addKeyListener(this);
- StartGame();
- }
- public void StartGame() {
- gameStatus = MENU;
- paused = over = false;
- random = new Random();
- cherry = new Cherry(random.nextInt(60), random.nextInt(70));
- player1 = new Snakes(this, 1, 0, 0);
- player2 = new Snakes(this, 2, 77, 0);
- ticks = 4000;
- time = 0;
- timer.start();
- }
- public void render(Graphics g) {
- g.setColor(Color.GREEN);
- g.fillRect(0, 0, 800, 700);
- if (gameStatus == MENU) {
- g.setColor(Color.BLACK);
- g.setFont(new Font("Arial", 1, 50));
- g.drawString("Snakes", width / 2 - 100, 50);
- g.drawString("Press Space to Play", width / 2 - 250, 100);
- } else if (gameStatus == PLAYING) {
- cherry.render(g);
- player1.render(g);
- player2.render(g);
- if (GameOver()) {
- g.setFont(new Font("Arial", 1, 25));
- g.setColor(Color.BLUE);
- g.drawString("Game Over", 300, 60);
- if (player1.score > player2.score) {
- g.setFont(new Font("Arial", 1, 20));
- g.setColor(Color.RED);
- g.drawString("Player 1 Win", 310, 80);
- }
- if (player1.score < player2.score) {
- g.setFont(new Font("Arial", 1, 20));
- g.setColor(Color.YELLOW);
- g.drawString("Player 2 Win", 310, 80);
- } else if (player1.score == player2.score) {
- g.setFont(new Font("Arial", 1, 20));
- g.setColor(Color.BLUE);
- g.drawString("Draw", 350, 80);
- }
- }
- }
- }
- @Override
- public void actionPerformed(ActionEvent arg0) {
- ticks--;
- if (snake.ticks % 5 == 0 && !GameOver() && !snake.paused) {
- if (cherry.cherry != null) {
- if (player1.head.equals(cherry.cherry)) {
- player1.score++;
- player1.tailLength++;
- cherry.cherry = new Point(random.nextInt(60), random.nextInt(70));
- } else if (player2.head.equals(cherry.cherry)) {
- player2.score++;
- player2.tailLength++;
- cherry.cherry = new Point(random.nextInt(60), random.nextInt(70));
- }
- }
- renderer.repaint();
- }
- }
- public boolean GameOver() {
- if ((player1.over && player2.over) || scoreLimit == 10)
- return true;
- return false;
- }
- public static void main(String[] args) {
- snake = new Snake();
- }
- @Override
- public void keyPressed(KeyEvent e) {
- // TODO Auto-generated method stub
- int i = e.getKeyCode();
- switch (i) {
- case KeyEvent.VK_A:
- player1.Move(LEFT);
- break;
- case KeyEvent.VK_D:
- player1.Move(RIGHT);
- break;
- case KeyEvent.VK_W:
- player1.Move(UP);
- break;
- case KeyEvent.VK_S:
- player1.Move(DOWN);
- break;
- case KeyEvent.VK_LEFT:
- player2.Move(LEFT);
- break;
- case KeyEvent.VK_RIGHT:
- player2.Move(RIGHT);
- break;
- case KeyEvent.VK_UP:
- player2.Move(UP);
- break;
- case KeyEvent.VK_DOWN:
- player2.Move(DOWN);
- break;
- // Restart Game
- case KeyEvent.VK_SPACE:
- if (GameOver())
- StartGame();
- else if (gameStatus == MENU) {
- gameStatus = PLAYING;
- } else
- paused = !paused;
- break;
- }
- }
- @Override
- public void keyReleased(KeyEvent arg0) {
- // TODO Auto-generated method stub
- }
- @Override
- public void keyTyped(KeyEvent arg0) {
- // TODO Auto-generated method stub
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment