java贪食蛇 极速不死版
发布时间:2020-12-15 00:11:31 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Rectangle;import java.awt.event.KeyAdapter;import
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 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,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,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,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,width,height); } public Rectangle getRect() { return new Rectangle(x,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,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,nodeTempNode.y + nodeTempNode.height)); break; } } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |