java贪食蛇 极速不死版
发布时间:2020-05-28 18:15:34 所属栏目:Java 来源:互联网
导读:java贪食蛇 极速不死版
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 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;
}
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
