Java source code sharing

Source: Internet
Author: User
This article will share with you the source code of a java greedy snake. it is a fast and undead version of a greedy snake. For more information about coders, see.
Import java. awt. color; import java. awt. graphics; import java. awt. graphics2D; import java. awt. rectangle; import java. awt. event. keyAdapter; import java. awt. event. keyEvent; import java. awt. image. bufferedImage; import java. util. arrayList; import java. util. list; import javax. swing. JFrame;/*** @ url http://download.csdn.net/detail/leasystu/4308246 ** @ Author Easy */public class InterFace extends JFrame {public static final int WIDTH = 800, HEIGHT = 600, SLEEPTIME = 20, L = 1, R = 2, U = 3, D = 4; BufferedImage offersetImage = new BufferedImage (WIDTH, HEIGHT, BufferedImage. TYPE_3BYTE_BGR); Rectangle rect = new Rectangle (20, 40, 15*50, 15*35); Snake snake; Node node; public InterFace () {snake = new Snake (this); createNode (); this. setBounds (100,100, WIDTH, HEIGHT); this. addKeyListener (new KeyAdapter () {public void keyPressed (KeyEvent arg0) {System. out. println (arg0.getKeyCode (); switch (arg0.getKeyCode () {case KeyEvent. VK_LEFT: snake. dir = L; break; case KeyEvent. VK_RIGHT: snake. dir = R; break; case KeyEvent. VK_UP: snake. dir = U; break; case KeyEvent. VK_DOWN: snake. dir = D ;}}); this. setTitle ("snake 0.1 By: Easy"); this. setdefaclocloseoperation (EXIT_ON_CLOSE); this. setVisible (true); new Thread (new ThreadUpadte ()). start ();} public void paint (Graphics g) {Graphics2D g2d = (Graphics2D) offersetImage. getGraphics (); g2d. setColor (Color. white); g2d. fillRect (0, 0, WIDTH, HEIGHT); g2d. setColor (Color. black); g2d. drawRect (rect. x, rect. y, rect. width, rect. height); if (snake. hit (node) {createNode ();} snake. draw (g2d); node. draw (g2d); g. drawImage (offersetImage, 0, 0, null);} class ThreadUpadte implements Runnable {public void run () {while (true) {try {Thread. sleep (SLEEPTIME); repaint ();} catch (InterruptedException e) {e. printStackTrace () ;}}} public void createNode () {int x = (int) (Math. random () * 650) + 50, y = (int) (Math. random () * 500) + 50; Color color = Color. blue; node = new Node (x, y, color);} public static void main (String args []) {new InterFace () ;}} class Node {int x, y, width = 15, height = 15; Color color; public Node (int x, int y, Color color) {this (x, y); this. color = color;} public Node (int x, int y) {this. x = x; this. y = y; this. color = color. black;} public void draw (Graphics2D g2d) {g2d. setColor (color); g2d. drawRect (x, y, width, height);} public Rectangle getRect () {return new Rectangle (x, y, width, height);} class Snake {public List
  
   
Nodes = new ArrayList
   
    
(); InterFace interFace; int dir = InterFace. r; public Snake (InterFace interFace) {this. interFace = interFace; nodes. add (new Node (20 + 150, 40 + 150); addNode ();} public boolean hit (Node node) {for (int I = 0; I <nodes. size (); I ++) {if (nodes. get (I ). getRect (). intersects (node. getRect () {addNode (); return true ;}return false ;}public void draw (Graphics2D g2d) {for (int I = 0; I <nodes. size (); I ++) {nodes. get (I ). draw (g2d);} move ();} public void move () {nodes. remove (nodes. size ()-1); addNode ();} public synchronized void addNode () {Node nodeTempNode = nodes. get (0); switch (dir) {case InterFace. l: if (nodeTempNode. x <= 20) {nodeTempNode = new Node (20 + 15*50, nodeTempNode. y);} nodes. add (0, new Node (nodeTempNode. x-nodeTempNode. width, nodeTempNode. y); break; case InterFace. r: if (nodeTempNode. x> = 20 + 15*50-nodeTempNode. width) {nodeTempNode = new Node (20-nodeTempNode. width, nodeTempNode. y);} nodes. add (0, new Node (nodeTempNode. x + nodeTempNode. width, nodeTempNode. y); break; case InterFace. u: if (nodeTempNode. y <= 40) {nodeTempNode = new Node (nodeTempNode. x, 40 + 15*35);} nodes. add (0, new Node (nodeTempNode. x, nodeTempNode. y-nodeTempNode. height); break; case InterFace. d: if (nodeTempNode. y> = 40 + 15*35-nodeTempNode. height) {nodeTempNode = new Node (nodeTempNode. x, 40-nodeTempNode. height);} nodes. add (0, new Node (nodeTempNode. x, nodeTempNode. y + nodeTempNode. height); break ;}}}
   
  

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.