欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java贪食蛇 极速不死版,java贪食蛇极速不死,import java.

来源: javaer 分享于  点击 42314 次 点评:190

java贪食蛇 极速不死版,java贪食蛇极速不死,import java.


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("贪吃蛇 0.1   By : Easy");        this.setDefaultCloseOperation(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<Node> nodes = new ArrayList<Node>();    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;        }    }}
相关栏目:

用户点评