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 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 = 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 + 15 * 35 - nodetempnode.height) { nodetempnode = new node(nodetempnode.x, 40 - nodetempnode.height); } nodes.add(0, new node(nodetempnode.x, nodetempnode.y + nodetempnode.height)); break; } }}