📄 snakepart.java~31~
字号:
package snake;
public class SnakePart {
private int x;
private int y;
private byte dir;
private int len;
public SnakePart(int xPos, int yPos, byte direction, int length) {
x = xPos;
y = yPos;
dir = direction;
len = length;
}
/**
* 段增加一个小方格
*/
public void increase(){
len++;
switch (dir) {
case Snake.DOWN:
y++;
break;
case Snake.LEFT:
x--;
break;
case Snake.RIGHT:
x++;
break;
case Snake.UP:
y--;
break;
}
}
/**
* 段减少一个小方格
*/
public void decrease(){
len--;
}
/**
* 测试点(x,y)是否在该段内,用于测试蛇头是否跟蛇身接触
* @param x int
* @param y int
* @return boolean
*/
public boolean isPtInPart(int x, int y){
switch (dir) {
case Snake.LEFT:
return ( (y == this.y) && ( (x >= this.x) && (x <= getEndX())));
case Snake.RIGHT:
return ( (y == this.y) && ( (x <= this.x) && (x >= getEndX())));
case Snake.UP:
return ( (x == this.x) && ( (y >= this.y) && (y <= getEndY())));
case Snake.DOWN:
return ( (x == this.x) && ( (y <= this.y) && (y >= getEndY())));
}
return false;
}
/**
* 返回段尾的Y坐标
* @return int
*/
public int getEndY() {
if(dir == Snake.DOWN)
return y-len+1;
else if(dir == Snake.UP)
return y+len-1;
else
return y;
}
/**
* 返回段尾的X坐标
* @return int
*/
public int getEndX() {
if(dir == Snake.LEFT)
return x+len-1;
else if(dir == Snake.RIGHT)
return x-len+1;
else
return x;
}
/**
* 返回段首的X坐标
* @return int
*/
public int getStartX(){
return x;
}
/**
* 返回段首的Y坐标
* @return int
*/
public int getStartY(){
return y;
}
/**
* 返回当前段的移动方向
* @return byte
*/
public byte getDirection(){
return dir;
}
/**
* 返回当前段的长度
* @return int
*/
public int getLength(){
return len;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -