📄 snake.java
字号:
package SnakeGame;
import java.util.*;
import java.awt.*;
import javax.swing.ImageIcon;
//import java.awt.imageobser
public class Snake extends LinkedList{
protected int snakeDirection = Global.RIGHT;
protected int snakeReDirection = Global.LEFT;
public Snake() { //构造函数 生成新的蛇时,给定坐标如下:
this.add(new Point(3,3));
this.add(new Point(4,3));
this.add(new Point(5,3));
this.add(new Point(6,3));
this.add(new Point(7,3));
this.add(new Point(8,3));
this.add(new Point(9,3));
this.add(new Point(10,3));
}
public void changeDirection(Point temp,int direction){ //改变方向控制部分
this.snakeDirection = direction; //注意:要同时改变与direction对应的
//snakeReDirection。
switch( direction)
{
case Global.UP: // 向上
this.snakeReDirection = Global.DOWN;
this.add(new Point(temp.x,temp.y - 1));
break;
case Global.RIGHT: // 向右
this.snakeReDirection = Global.LEFT;
this.add(new Point(temp.x+1,temp.y));
break;
case Global.DOWN: // 向下
this.snakeReDirection = Global.UP;
this.add(new Point(temp.x,temp.y+1));
break;
case Global.LEFT: // 向左
this.snakeReDirection = Global.RIGHT;
this.add(new Point(temp.x-1,temp.y));
break;
}
}
public boolean checkBeanIn(Point bean) //比较bean与蛇头是否重合。
{
Point temp = (Point)this.getLast();
if(temp.equals(bean))
{
return true;
}
return false;
}
public void removeTail() // 去掉尾部
{
this.remove(0);
}
public void drawSnake(Graphics g,int singleWidthX,int singleHeightY,int cooPos) //画贪食蛇
{
g.setColor(Global.COLOR_SNAKE);
Iterator iterator = this.iterator();
while (iterator.hasNext()){
Point tempPoint = (Point)iterator.next();
this.drawSnakePiece(g,tempPoint.x,tempPoint.y,singleWidthX,singleHeightY,cooPos);
}
Point temp=(Point)this.getLast();
//System.out.println(temp.x+":::"+temp.y);
this.drawSnakeHead(g,temp.x,temp.y,singleWidthX,singleHeightY);
}
public void drawSnakeHead(Graphics g,int temp1,int temp2,int singleWidthX,int singleHeightY)
{
//System.out.println("test-c");
// 画贪食蛇的头部,画两个黑圈。。眼睛
if(this.snakeDirection==Global.UP)
{
//System.out.println("test-b");
g.setColor(Global.COLOR_HEAD_MOUSE);
g.drawRoundRect(singleWidthX*temp1+1+(singleWidthX)/4,
singleHeightY*temp2+1+(singleHeightY)/8,
singleWidthX/7,singleWidthX/7,singleWidthX/14,
singleWidthX/14);
g.drawRoundRect(singleWidthX*(temp1+1)-1-(singleWidthX)/4,
singleHeightY*temp2+1+(singleHeightY)/8,
singleWidthX/7,singleWidthX/7,singleWidthX/14,
singleWidthX/14);
/*
g.drawLine(singleWidthX*temp1+1+(singleWidthX)/4+2,
singleHeightY*temp2+1+(singleHeightY)/8+2,
singleWidthX*(temp1+1)-1-(singleWidthX)/4-2,
singleHeightY*temp2+1+(singleHeightY)/8+2);*/
}else if(this.snakeDirection==Global.RIGHT)
{
g.setColor(Global.COLOR_HEAD_MOUSE);
g.drawRoundRect(singleWidthX * (temp1 + 1) - 1 - (singleHeightY) / 8-1,
singleHeightY * (temp2) + 1 + (singleWidthX) / 4-1,
singleWidthX / 7, singleWidthX / 7, singleWidthX / 14,
singleWidthX / 14);
g.drawRoundRect(singleWidthX*(temp1+1)-1-(singleHeightY)/8-1,
singleHeightY*(temp2+1)-1-(singleWidthX)/4-1,
singleWidthX/7,singleWidthX/7,singleWidthX/14,
singleWidthX/14);
}
else if(this.snakeDirection==Global.DOWN)
{
g.setColor(Global.COLOR_HEAD_MOUSE);
g.drawRoundRect(singleWidthX*temp1+1+(singleWidthX)/4-1,
singleHeightY*(temp2+1)-1-(singleHeightY)/8-1,
singleWidthX/7,singleWidthX/7,singleWidthX/14,
singleWidthX/14);
g.drawRoundRect(singleWidthX*(temp1+1)-1-(singleWidthX)/4-1,
singleHeightY*(temp2+1)-1-(singleHeightY)/8-1,
singleWidthX/7,singleWidthX/7,singleWidthX/14,
singleWidthX/14);
}
else if(this.snakeDirection==Global.LEFT)
{
g.setColor(Global.COLOR_HEAD_MOUSE);
g.drawRoundRect(singleWidthX*temp1+1+(singleHeightY)/8,
singleHeightY*(temp2)+1+(singleWidthX)/4,
singleWidthX/7,singleWidthX/7,singleWidthX/14,
singleWidthX/14);
g.drawRoundRect(singleWidthX*temp1+1+(singleHeightY)/8,
singleHeightY*(temp2+1)-1-(singleWidthX)/4,
singleWidthX/7,singleWidthX/7,singleWidthX/14,
singleWidthX/14);
}
}
public void drawSnakePiece(Graphics g,int temp1,int temp2,int singleWidthX,int singleHeightY,int cooPos)
{
g.fillRoundRect(singleWidthX* temp1 + 1,
singleHeightY * temp2 + 1,
singleWidthX - 2,
singleHeightY - 2,
cooPos,
cooPos);
}
public void clearEndSnakePiece( Graphics g, int temp1, int temp2,
int singleWidthX, int singleHeightY, int cooPos )
{
g.setColor( Global.COLOR_BACK );
g.fillRoundRect( singleWidthX * temp1 + 1,
singleHeightY * temp2 + 1,
singleWidthX - 2,
singleHeightY - 2,
cooPos,
cooPos );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -