📄 snake.java
字号:
package greedSnake;
import java.util.Random;
import java.util.Vector;
import java.util.Enumeration;
import com.nttdocomo.ui.Graphics;
public class Snake {
public final static int UP = 1;
public final static int DOWN = 3;
public final static int LEFT = 2;
public final static int RIGHT = 4;
private int direction;
// private Grid grid;
private Node node;
private Vector snakeData = null;
private static Random rnd = new Random();
/** Private internal constructor. */
public Snake() {
snakeData = new Vector();
Node node = new Node(4, 0);
snakeData.addElement(node);
node = new Node(3, 0);
snakeData.addElement(node);
node = new Node(2, 0);
snakeData.addElement(node);
node = new Node(1, 0);
snakeData.addElement(node);
node = new Node(0, 0);
snakeData.addElement(node);
setDirection(Snake.DOWN);
}
public int getDirection() {
return direction;
}
public void setDirection(int dir) {
if (direction % 2 != dir % 2) {
direction = dir;
}
}
public Node getHead() {
return (Node) snakeData.elementAt(0);
}
public Node getNextHead() {
Node node = (Node) snakeData.elementAt(0);
node = new Node(node.x, node.y);
switch (this.direction) {
case Snake.UP:
node.y--;
break;
case Snake.DOWN:
node.y++;
break;
case Snake.LEFT:
node.x--;
break;
case Snake.RIGHT:
node.x++;
break;
}
return node;
}
public void move() {
Node node = (Node) snakeData.elementAt(0);
Node newNode = this.getNextHead();
for (int i = snakeData.size() - 1; i > 0; i--) {
Node node1 = (Node) snakeData.elementAt(i);
Node node2 = (Node) snakeData.elementAt(i - 1);
node1.x = node2.x;
node1.y = node2.y;
}
node.x = newNode.x;
node.y = newNode.y;
}
public void addNode() {
Node node = (Node) snakeData.lastElement();
Node newNode = new Node(node.x, node.y);
snakeData.addElement(newNode);
}
public void paint(Graphics g) {
int SnakeColor = 0xff0000;
int gn = GreedSnake.NODE_SIZE;
Enumeration e = snakeData.elements();
while (e.hasMoreElements()) {
Node node = (Node) e.nextElement();
g.setColor(SnakeColor);
g.fillRect(node.x * gn, node.y * gn, gn, gn);
}
}
public void eatFood(Food food) {
this.addNode();
}
public boolean ptInSnake(Node node) {
for (int i = 1; i < snakeData.size(); i++) {
Node nodeInSnake = (Node) snakeData.elementAt(i);
if ((nodeInSnake.x == node.x) && (nodeInSnake.y == node.y)) {
return true;
}
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -