java 贪吃蛇源码 100多行~
2012-05-17 13:53
288 查看
先看效果:
直接上代码~利用上机课写的~运行效果不错,给初学者一点参考~
贪吃蛇可以穿墙~不死~
再给个代码的链接:http://download.csdn.net/detail/leasystu/4308246
直接上代码~利用上机课写的~运行效果不错,给初学者一点参考~
贪吃蛇可以穿墙~不死~
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; 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; } } }
再给个代码的链接:http://download.csdn.net/detail/leasystu/4308246
相关文章推荐
- Java GUI编程之贪吃蛇游戏简单实现方法【附demo源码下载】
- Java仿贪吃蛇游戏源码之小游戏吃豆豆源码附带文档
- java贪吃蛇源码(注意图片路径)
- java版 贪吃蛇小游戏 完整源码 (测试100%无误
- java一些练习-贪吃蛇MVC源码分享
- java中使用双向链表实现贪吃蛇程序源码分享
- 黑马程序员--【源码+碉堡】Java控制台版贪吃蛇震撼开源
- java贪吃蛇源码 按键监听,paint重写 linkedlist集合类
- java源码分析(6)-StringBuffer
- jdk 源码分析(16)java CyclicBarrier 源码解析
- JAVA-day08 上午-集合零散知识、集合实现贪吃蛇
- Portal-Basic Java Web 应用开发框架 v2.6.2 发布(源码、示例及文档)
- java无源码怎么办
- JAVA 公众微信的开放源码项目管理合作伙伴招募的版本号
- Java 集合框架 ArrayList 源码剖析
- java并发锁ReentrantLock源码分析一 可重入支持中断锁的实现原理
- thymeleaf模板引擎调用java类中的方法(附源码)
- java swing游戏源码-宇宙战争游戏,Java飞船射击游戏
- vitamio官方demo源码分析1——MediaPlayerDemo_Video.java分析
- Java进制转换(源码分析)