📄 mansprite.java
字号:
/**/ /* --------------------------------------------------
* ManSprite.java
*
* 这个精灵可以通过调用moveLeft(), moveRight()
* moveUp() and moveDown()方法在屏幕上移动
*------------------------------------------------- */
import javax.microedition.lcdui.game. * ;
import javax.microedition.lcdui. * ;
public class ManSprite extends Sprite {
private int x = 0 , y = 0 , // 当前的x,y坐标
previous_x, previous_y; // 是一个x,y坐标
private static final int MAN_WIDTH = 25 ; // 精灵宽度
private static final int MAN_HEIGHT = 25 ; // 精灵高度
public ManSprite(Image image) {
// 调用Sprite的构造函数
super (image);
}
public void moveLeft() {
// 如果绿色的小人精灵没有碰到左边缘
if (x > 0 ) {
saveXY();
// 如果离左边界小与3,则置0,
// 否则从当前位置减3
x = (x < 3 ? 0 : x - 3 );
setPosition(x, y);
}
}
public void moveRight( int w) {
// 如果绿色的小人精灵没有碰到右边缘
if ((x + MAN_WIDTH) < w) {
saveXY();
// 如果当前横坐标加上精灵宽度超出了右边界,
// 将当前位置设为最右边. 否则当前位置加3.
x = ((x + MAN_WIDTH > w) ? (w - MAN_WIDTH) : x + 3 );
setPosition(x, y);
}
}
public void moveUp() {
// 如果绿色的小人精灵没有碰到上边缘
if (y > 0 ) {
saveXY();
// 如果离上边界小于3,则置为0
// 否则从当前位置减.
y = (y < 3 ? 0 : y - 3 );
setPosition(x, y);
}
}
public void moveDown( int h) {
// 如果绿色的小人精灵没有碰到下边缘
if ((y + MAN_HEIGHT) < h) {
saveXY();
// 如果当前纵坐标加上精灵高度超出了下边界,
// 将当前位置设为最下边. 否则当前位置加3.
y = ((y + MAN_WIDTH > h) ? (h - MAN_WIDTH) : y + 3 );
setPosition(x, y);
}
}
/**/ /* --------------------------------------------------
* 保存x,y坐标用于碰撞检验
*------------------------------------------------- */
private void saveXY() {
// 将当前坐标缓存到上一坐标
previous_x = x;
previous_y = y;
}
/**/ /* --------------------------------------------------
* 如果检验到碰撞发生,
* 则返回上一坐标
*------------------------------------------------- */
public void restoreXY() {
x = previous_x;
y = previous_y;
setPosition(x, y);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -