. 这是本人早些在别的地方发过的帖子了,加上本靓仔有点懒(很懒),备注只给了一些关键的地方(应该够了吧。。。。)
. 最后,如果大家觉的还可以,还请大家给点赞给我,你们的鼓励也就是我坚持的动力
/**
* @see 8 is UP,
* @see 2 is DOWN,
* @see 4 is LEFT,
* @see 6 is RIGHT;
* @author 一只蓝色的水杯子
* @docends Don it go to negative direction ,
* and if ask you doing The last step,you no don it want do it,
* you can go do Enter
*/
public class SnaleTest {
@SuppressWarnings({ "static-access", "resource" })
public static void main(String[] args) {
NodePanel nodes = new NodePanel();
Snakes snakes = (Snakes)nodes.getSnakes();
/*for(int sum = 0;sum< 10;sum ++) {
nodes.prints();
snakes.step();
try {
Thread.sleep(1000);//暂停一秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}*/
Scanner imports = new Scanner(System.in);
snakes.eat();
nodes.prints();
for(;;) {
System.out.println("Please Import:");
String dir = imports.nextLine();
if(dir.equalsIgnoreCase("8")) {
snakes.step(snakes.UP);
}else if(dir.equalsIgnoreCase("2")) {
snakes.step(snakes.DOWN);
}else if(dir.equalsIgnoreCase("4")) {
snakes.step(snakes.LEFT);
}else if(dir.equalsIgnoreCase("6")) {
snakes.step(snakes.RIGHT);
}else if(dir.equalsIgnoreCase("no")) {
System.out.println("GameOver!");
System.exit(0);
}else {
snakes.step();
}
snakes.yes();
nodes.prints();
if(snakes.yeah())
snakes.eat();
}
}
}/**
* @see 8 is UP,
* @see 2 is DOWN,
* @see 4 is LEFT,
* @see 6 is RIGHT;
* @author 一只蓝色的水杯子
* @docends Don it go to negative direction ,
* and if ask you doing The last step,you no don it want do it,
* you can go do Enter
*/
public class SnaleTest {
@SuppressWarnings({ "static-access", "resource" })
public static void main(String[] args) {
NodePanel nodes = new NodePanel();
Snakes snakes = (Snakes)nodes.getSnakes();
/*for(int sum = 0;sum< 10;sum ++) {
nodes.prints();
snakes.step();
try {
Thread.sleep(1000);//暂停一秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}*/
Scanner imports = new Scanner(System.in);
snakes.eat();
nodes.prints();
for(;;) {
System.out.println("Please Import:");
String dir = imports.nextLine();
if(dir.equalsIgnoreCase("8")) {
snakes.step(snakes.UP);
}else if(dir.equalsIgnoreCase("2")) {
snakes.step(snakes.DOWN);
}else if(dir.equalsIgnoreCase("4")) {
snakes.step(snakes.LEFT);
}else if(dir.equalsIgnoreCase("6")) {
snakes.step(snakes.RIGHT);
}else if(dir.equalsIgnoreCase("no")) {
System.out.println("GameOver!");
System.exit(0);
}else {
snakes.step();
}
snakes.yes();
nodes.prints();
if(snakes.yeah())
snakes.eat();
}
}
}
class Node {
private int i,j;
public Node(int i,int j) {
super();
this.i = i;
this.j = j;
}
public Node() {}
public void setJ(int j) {
this.j = j;
}
public void setI(int i) {
this.i = i;
}
public int getJ() {
return j;
}
public int getI() {
return i;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + i;
result = prime * result + j;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Node other = (Node) obj;
if (i != other.i)
return false;
if (j != other.j)
return false;
return true;
}
}
class NodePanel {
private Snakes snakes = new Snakes();
public Snakes getSnakes() {
return snakes;
}
public void prints() {
int j,i;//,sum = 5,num = 5;
for(i = 0;i< 10;i ++) {
for(j = 0;j < 32;j ++) {
if(snakes.contaninss(i, j)) {
System.out.print("#");
}else if(j == 0||j == 31) {
System.out.print("|");
}else if(i == 0 || i == 9) {
System.out.print("+");
}else if(i == snakes.score && j == snakes.count){
System.out.print("0");
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
class Snakes {
LinkedList<Node> nodes= new LinkedList<Node>();
Random random = new Random();
public static final int UP = -10;
public static final int DOWN = 10;
public static final int LEFT = -1;
public static final int RIGHT = 1;
private int dir;//存储当前方向
public int sum;
public int num;
public int score;
public int count;
public void step() {
//去尾巴
nodes.removeLast();
//加头
Node head = nodes.getFirst();
Node last = nodes.getLast();
int i = head.getI() + dir / 10;
int j = head.getJ() + dir % 10;
nodes.addFirst(new Node(i,j));
sum = i;
num = j;
if(yeah())
nodes.add(new Node(last.getI(),last.getJ()));
}
public void step(int dir) {
if(this.dir + dir == 0)
throw new RuntimeException("Don it go to negative direction !");
this.dir = dir;
step();
}
public Snakes() {
nodes.add(new Node(1,5));
nodes.add(new Node(1,4));
nodes.add(new Node(1,3));
nodes.add(new Node(1,2));
nodes.add(new Node(1,1));
//this.dir = RIGHT;
}
public void eat() {
score = random.nextInt(8)+1;
count = random.nextInt(30)+1;
}
public boolean yeah() {
boolean answer = false;
if(sum == score && num == count)
answer = true;
return answer;
}
public void yes() {
if(sum == 0 || sum == 9 || num == 0 || num == 31)
throw new RuntimeException("Game over,In the dust!");
}
//判断该位置是否有对象
public boolean contaninss(int i,int j) {
return nodes.contains(new Node(i,j));
}
}