📄 bnb_player.java
字号:
pcols1 = Tools.toRange(px1);
prows1 = Tools.toRange(py1);
if (prows1 < 2 || prows1 > 9)
{
prows1 = 2;
}
if (tl.getCell(pcols1, prows1) > 10)
{
vehicle.move(2, 1);
}
px2 = vehicle.getX() + vehicle.getWidth() - 2;
py2 = vehicle.getY() + 2;
pcols2 = Tools.toRange(px2);
prows2 = Tools.toRange(py2);
if (prows2 < 2 || prows2 > 9)
{
prows2 = 9;
}
if (tl.getCell(pcols2, prows2) > 10)
{
vehicle.move(-2, 1);
}
break;
case -2://下
case 56:
tx = vehicle.getX() + (vehicle.getWidth() >>> 1);
ty = vehicle.getY() + vehicle.getHeight();
rows = Tools.toRange(ty);
cols = Tools.toRange(tx);
if (rows > 9 || rows < 2)
{
rows = 9;
}
if (tl.getCell(cols, rows) > 10)
{
vehicle.setPosition(getX(), (rows << 4)
- vehicle.getHeight());
}
//坐标修正处理;////////////////////////////////////
px1 = vehicle.getX() + 2;
py1 = vehicle.getY() + vehicle.getHeight() - 2;
pcols1 = Tools.toRange(px1);
prows1 = Tools.toRange(py1);
if (prows1 < 2 || prows1 > 9)
{
prows1 = 2;
}
if (tl.getCell(pcols1, prows1) > 10)
{
vehicle.move(2, -1);
}
px2 = vehicle.getX() + vehicle.getWidth() - 2;
py2 = vehicle.getY() + vehicle.getHeight() - 2;
pcols2 = Tools.toRange(px2);
prows2 = Tools.toRange(py2);
if (prows2 < 2 || prows2 > 9)
{
prows2 = 9;
}
if (tl.getCell(pcols2, prows2) > 10)
{
vehicle.move(-2, -1);
}
break;
}
setPosition(vehicle.getX(), vehicle.getY() - 14);
}
}
else
{
switch (key)
{
case -3://左
case 52:
tx = getX();
ty = getY() + (getHeight() >>> 1) - 2;
rows = Tools.toRange(ty);
cols = Tools.toRange(tx);
if (cols < 0 || cols > 7)
{
cols = 0;
}
if (tl.getCell(cols, rows) > 10)
{
setPosition((cols << 4) + 16, getY());
}
//坐标修正处理;///////////////////////////////////////
px1 = getX() + 2;
py1 = getY() + 6;
pcols1 = Tools.toRange(px1);
prows1 = Tools.toRange(py1);
if (pcols1 < 0 || pcols1 > 7)
{
pcols1 = 0;
}
if (tl.getCell(pcols1, prows1) > 10)
{
move(1, 2);
}
px2 = getX() + 2;
py2 = getY() + getHeight() - 2;
pcols2 = Tools.toRange(px2);
prows2 = Tools.toRange(py2);
if (pcols2 < 0 || pcols2 > 7)
{
pcols2 = 0;
}
if (tl.getCell(pcols2, prows2) > 10)
{
move(1, -2);
}
break;
case -4://右
case 54:
tx = getX() + getWidth();
ty = getY() + (getHeight() >>> 1) - 2;
rows = Tools.toRange(ty);
cols = Tools.toRange(tx);
if (cols > 7 || cols < 0)
{
cols = 7;
}
if (tl.getCell(cols, rows) > 10)
{
setPosition((cols << 4) - 16, getY());
}
//坐标修正处理;///////////////////////////////////////////
px1 = getX() + getWidth() - 2;
py1 = getY() + 6;
pcols1 = Tools.toRange(px1);
prows1 = Tools.toRange(py1);
if (pcols1 < 0 || pcols1 > 7)
{
pcols1 = 0;
}
if (tl.getCell(pcols1, prows1) > 10)
{
move(-1, 2);
}
px2 = getX() + getWidth() - 2;
py2 = getY() + getHeight() - 2;
pcols2 = Tools.toRange(px2);
prows2 = Tools.toRange(py2);
if (pcols2 < 0 || pcols2 > 7)
{
pcols2 = 0;
}
if (tl.getCell(pcols2, prows2) > 10)
{
move(-1, -2);
}
break;
case -1://上
case 50:
tx = this.getX() + (this.getWidth() >>> 1);
ty = getY() + 2;
rows = Tools.toRange(ty);
cols = Tools.toRange(tx);
if (rows > 9 || rows < 2)
{
rows = 2;
}
if (tl.getCell(cols, rows) > 10)
{
setPosition(getX(), (rows << 4) + 12);
}
//坐标修正处理;//////////////////////////////////////////
px1 = getX() + 2;
py1 = getY() + 6;
pcols1 = Tools.toRange(px1);
prows1 = Tools.toRange(py1);
if (prows1 < 2 || prows1 > 9)
{
prows1 = 2;
}
if (tl.getCell(pcols1, prows1) > 10)
{
move(2, 1);
}
px2 = getX() + getWidth() - 2;
py2 = getY() + 6;
pcols2 = Tools.toRange(px2);
prows2 = Tools.toRange(py2);
if (prows2 < 2 || prows2 > 9)
{
prows2 = 9;
}
if (tl.getCell(pcols2, prows2) > 10)
{
move(-2, 1);
}
break;
case -2://下
case 56:
tx = getX() + (getWidth() >>> 1);
ty = getY() + getHeight();
rows = Tools.toRange(ty);
cols = Tools.toRange(tx);
if (rows > 9 || rows < 2)
{
rows = 9;
}
if (tl.getCell(cols, rows) > 10)
{
setPosition(getX(), (rows << 4) - getHeight());
}
//坐标修正处理;////////////////////////////////////
px1 = getX() + 2;
py1 = getY() + getHeight() - 2;
pcols1 = Tools.toRange(px1);
prows1 = Tools.toRange(py1);
if (prows1 < 2 || prows1 > 9)
{
prows1 = 2;
}
if (tl.getCell(pcols1, prows1) > 10)
{
move(2, -1);
}
px2 = getX() + getWidth() - 2;
py2 = getY() + getHeight() - 2;
pcols2 = Tools.toRange(px2);
prows2 = Tools.toRange(py2);
if (prows2 < 2 || prows2 > 9)
{
prows2 = 9;
}
if (tl.getCell(pcols2, prows2) > 10)
{
move(-2, -1);
}
break;
}
}
this.addAttribute(tl, key);
}
}
/***
* 玩家和精灵碰撞检测,并修正玩家对象的坐标;
* @param sprite 碰撞检测对象;
* key 按键值;
*/
private final void reviseXY(Sprite sprite, int key)
{
switch (key)
{
case -3://左
case 52:
if (isHaveVehicle)
{
vehicle.setPosition(sprite.getWidth() + sprite.getX(),
vehicle.getY());
setPosition(vehicle.getX(), vehicle.getY() - 14);
}
else
this.setPosition(sprite.getWidth() + sprite.getX(), this
.getY());
break;
case -4://右
case 54:
if (isHaveVehicle)
{
vehicle.setPosition(sprite.getX() - getWidth(), vehicle
.getY());
setPosition(vehicle.getX(), vehicle.getY() - 14);
}
else
this.setPosition(sprite.getX() - this.getWidth(), this
.getY());
break;
case -1://上
case 50:
if (isHaveVehicle)
{
vehicle.setPosition(vehicle.getX(), sprite.getY()
+ sprite.getHeight());
setPosition(vehicle.getX(), vehicle.getY() - 14);
}
else
this.setPosition(this.getX(), sprite.getY()
+ sprite.getHeight() - 4);
break;
case -2://下
case 56:
if (isHaveVehicle)
{
vehicle.setPosition(vehicle.getX(), sprite.getY()
- vehicle.getHeight());
setPosition(vehicle.getX(), vehicle.getY() - 14);
}
else
this.setPosition(this.getX(), sprite.getY()
- this.getHeight());
break;
}
}
/***
* 玩家和道具精灵碰撞 增加属性 或 换上坐骑
*/
private final void addAttribute(TiledLayer tl, int key)
{
int cols;
int rows;
if (this.isHaveVehicle)
{
cols = Tools.toRange(vehicle.getRefPixelX());
rows = Tools.toRange(vehicle.getRefPixelY());
}
else
{
cols = Tools.toRange(getRefPixelX());
rows = Tools.toRange(getRefPixelY());
}
switch (tl.getCell(cols, rows))
{
case 1:
if (this.isPlayer)
{
score += 50;
}
tl.setCell(cols, rows, 0);
break;
case 2:
if (this.isPlayer)
{
score += 100;
}
tl.setCell(cols, rows, 0);
break;
case 3:
if (this.isPlayer)
{
score += 200;
}
tl.setCell(cols, rows, 0);
break;
case 4:
if (MAX_POPO > popo)
{
popo++;
BnB_Popo.popo++;
}
tl.setCell(cols, rows, 0);
break;
case 5:
if (MAX_SPEED > speed)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -