📄 bnb_player.java
字号:
speed++;
}
tl.setCell(cols, rows, 0);
break;
case 6:
if (MAX_WATER > water)
{
water++;
}
tl.setCell(cols, rows, 0);
break;
case 7:
if (MAX_SPEED > speed)
{
speed++;
}
if (MAX_WATER > water)
{
water++;
}
if (MAX_POPO > popo)
{
popo++;
BnB_Popo.popo++;
}
tl.setCell(cols, rows, 0);
break;
case 8://飞碟
if (!isHaveVehicle)
{
try
{
vehicleimage = Image.createImage("/res/ufo.png");
}
catch (Exception e)
{
e.printStackTrace();
}
if (Tools.getRandom(5) == 0)
{
vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 5);
}
else
{
vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 2);
}
switch (key)
{
case -3://左
case 52:
vehicle.setFrame(4);
setFrame(8);
break;
case -4://右
case 54:
vehicle.setFrame(6);
setFrame(12);
break;
case -1://上
case 50:
vehicle.setFrame(0);
setFrame(0);
break;
case -2://下
case 56:
vehicle.setFrame(2);
setFrame(4);
break;
}
vehicle.setPosition(Tools.toCoordinate(cols), Tools
.toCoordinate(rows));
setPosition(vehicle.getX(), vehicle.getY() - getHeight()
+ 6);
isHaveVehicle = true;
isProtect = true;
}
tl.setCell(cols, rows, 0);
break;
case 9://乌龟
if (!this.isHaveVehicle)
{
if (Tools.getRandom(5) == 0)
{
try
{
vehicleimage = Image
.createImage("/res/pirateturtle.png");
}
catch (Exception e)
{
e.printStackTrace();
}
vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 4);
}
else
{
try
{
vehicleimage = Image.createImage("/res/turtle.png");
}
catch (Exception e)
{
e.printStackTrace();
}
vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 1);
}
switch (key)
{
case -3://左
case 52:
vehicle.setFrame(4);
setFrame(8);
break;
case -4://右
case 54:
vehicle.setFrame(6);
setFrame(12);
break;
case -1://上
case 50:
vehicle.setFrame(0);
setFrame(0);
break;
case -2://下
case 56:
vehicle.setFrame(2);
setFrame(4);
break;
}
vehicle.setPosition(Tools.toCoordinate(cols), Tools
.toCoordinate(rows));
setPosition(vehicle.getX(), vehicle.getY() - getHeight()
+ 6);
isHaveVehicle = true;
isProtect = true;
}
tl.setCell(cols, rows, 0);
break;
case 10://猫头鹰
if (!isHaveVehicle)
{
try
{
vehicleimage = Image.createImage("/res/Owl.png");
}
catch (Exception e)
{
e.printStackTrace();
}
vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 3);
switch (key)
{
case -3://左
case 52:
vehicle.setFrame(4);
setFrame(8);
break;
case -4://右
case 54:
vehicle.setFrame(6);
setFrame(12);
break;
case -1://上
case 50:
vehicle.setFrame(0);
setFrame(0);
break;
case -2://下
case 56:
vehicle.setFrame(2);
setFrame(4);
break;
}
vehicle.setPosition(Tools.toCoordinate(cols), Tools
.toCoordinate(rows));
setPosition(vehicle.getX(), vehicle.getY() - getHeight()
+ 6);
isHaveVehicle = true;
isProtect = true;
}
tl.setCell(cols, rows, 0);
break;
}
}
/**
* @方法说明:初始化按键;
*/
private final void initKey()
{
isL = false;
isR = false;
isU = false;
isD = false;
}
/***
* @方法说明:初始化动作桢 和 动作切换;
*/
private final void runFrame(int startFrame, int endFrame)
{
if (this.getFrame() < startFrame || this.getFrame() >= endFrame)
{
this.setFrame(startFrame);
}
if (isNextFrame(300))
{
this.nextFrame();
}
}
/***
* @方法说明:改变玩家状态和动画图片
*/
private final void setImage(int play_stage)
{
switch (play_stage)
{
case 1: //入场动画
if (isPlayer)
{
this.setImage(Tools.playerstart, 16, 20);
}
else
{
this.setImage(Tools.npcstart, 16, 20);
}
isStart = true;
isKeyPress = false;
isDie = false;
break;
case 2: //游戏动画
if (isPlayer)
{
this.setImage(Tools.player, 16, 20);
}
else
{
this.setImage(Tools.npc, 16, 20);
}
isStart = false;
isKeyPress = true;
isDie = false;
break;
case 3: //死亡动画
if (isPlayer)
{
this.setImage(Tools.die, 16, 16);
}
else
{
this.setImage(Tools.die, 16, 16);
}
isStart = false;
isKeyPress = false;
isDie = true;
break;
}
}
/***
*
* @方法说明: 死亡动画需要调整,动画桢和 按键处理
*/
public final void paintPlayer(Graphics pg)
{
if (isStart)
{
// 入场动画
if (this.getFrameSequenceLength() - 1 == this.getFrame())
{
setImage(2);
this.setFrame(4);
return;
}
if (isNextFrame(200))
{
this.nextFrame();
}
}
if (isDie)
{
// 死亡动画的切换
if (this.getFrameSequenceLength() - 1 == this.getFrame())
{
while (true)
{
if (isNextFrame(1000))
{
if (life >= 0)
{
setImage(1);
initPlayer(this.isPlayer);
this.setFrame(0);
}
else
{
isDie = false;
}
return;
}
}
}
if (getFrame() < 3)
{
if (isNextFrame(1000))
{
this.nextFrame();
}
}
else
{
if (isNextFrame(300))
{
this.nextFrame();
}
}
}
if (isHaveVehicle)
{
vehicle.paint(pg);
}
paint(pg);
}
/**
* @方法说明:人物与人物重叠 ,人物与障碍重叠时 后画靠近下边界的精灵;
*/
public final boolean firstPaint(Sprite s)
{
return (getY() + getHeight()) > (s.getY() + s.getHeight()) ? true
: false;
}
private final boolean isNextFrame(int nextFrameTime)
{
intervalTime = System.currentTimeMillis() - lastTime;
if (intervalTime >= nextFrameTime)
{
lastTime = System.currentTimeMillis();
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -