📄 penguinsprite.java
字号:
import java.awt.*;
import java.util.Random;
//企鹅精灵类
public class PenguinSprite extends Sprite
{
public final static int STATE_TURN_LEFT = 0;
public final static int STATE_TURN_RIGHT = 1;
public final static int STATE_FIRE = 2;
public final static int STATE_VOID = 3;
public final static int STATE_GAME_WON = 4;
public final static int STATE_GAME_LOST = 5;
public final static int[][] LOST_SEQUENCE = {{1,0}, {2,8}, {3,9}, {4,10}, {5,11}, {6,12}, {7,13}, {5,14}};
public final static int[][] WON_SEQUENCE = {{1,0}, {2,7}, {3,6}, {4,15}, {5,16}, {6,17}, {7,18}, {4,19}};
private Image spritesImage;
private int currentPenguin, displayedPenguin;
private int count;
private Random rand;
private int finalState;
private int nextPosition;
public PenguinSprite(Image sprites, Random rand)
{
super(new Rectangle(360, 435, 57, 45));
this.spritesImage = sprites;
this.rand = rand;
currentPenguin = 0;
displayedPenguin = -1;
finalState = STATE_VOID;
nextPosition = 0;
}
public void updateState(int state)
{
if (finalState != STATE_VOID)
{
count++;
if (count % 6 == 0)
{
if (finalState == STATE_GAME_LOST)
{
currentPenguin = LOST_SEQUENCE[nextPosition][1];
nextPosition = LOST_SEQUENCE[nextPosition][0];
}
else if (finalState == STATE_GAME_WON)
{
currentPenguin = WON_SEQUENCE[nextPosition][1];
nextPosition = WON_SEQUENCE[nextPosition][0];
}
}
}
else
{
count++;
switch(state)
{
case STATE_TURN_LEFT :
count = 0;
currentPenguin = 3;
break;
case STATE_TURN_RIGHT :
count = 0;
currentPenguin = 2;
break;
case STATE_FIRE :
count = 0;
currentPenguin = 1;
break;
case STATE_VOID :
if (currentPenguin<4 || currentPenguin>7)
{
currentPenguin = 0;
}
break;
case STATE_GAME_WON :
case STATE_GAME_LOST :
count = 0;
finalState = state;
currentPenguin = 0;
return;
}
if (count>100)
{
currentPenguin = 7;
}
else if (count % 15 == 0 && count>25)
{
currentPenguin = (rand.nextInt() % 3)+4;
if (currentPenguin < 4)
{
currentPenguin = 0;
}
}
}
}
public void paint(Graphics g, GameApplet applet)
{
Rectangle r = this.getSpriteArea();
g.setClip(r);
g.drawImage(spritesImage, 360-(currentPenguin%4)*57, 435-(currentPenguin/4)*45, applet);
displayedPenguin = currentPenguin;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -