Java 如何让这个骰子代码在AndEngine中显示新的滚动模具?
所以我试图在我的游戏中创造一个场景,比如马里奥派对,掷骰子,打字。但是有一个随机移动的问号骰子,触摸后,应该随机选择一个数字1-6,并显示相应的纹理。但它似乎既没有记录触摸,也没有显示新模具 但到目前为止,只有随机问号骰子运动似乎有效,不会显示任何骰子命中率,实现这一点的最佳方法是什么?如中所示,最佳编码实践。因为这看起来有点不对劲Java 如何让这个骰子代码在AndEngine中显示新的滚动模具?,java,android,random,andengine,dice,Java,Android,Random,Andengine,Dice,所以我试图在我的游戏中创造一个场景,比如马里奥派对,掷骰子,打字。但是有一个随机移动的问号骰子,触摸后,应该随机选择一个数字1-6,并显示相应的纹理。但它似乎既没有记录触摸,也没有显示新模具 但到目前为止,只有随机问号骰子运动似乎有效,不会显示任何骰子命中率,实现这一点的最佳方法是什么?如中所示,最佳编码实践。因为这看起来有点不对劲 public class Dice extends Sprite implements IEntity { private final PhysicsHandler
public class Dice extends Sprite implements IEntity {
private final PhysicsHandler mPhysicsHandler;
Random randomGenerator = new Random();
private float RandomX;
private float RandomY;
private int CAMERA_WIDTH = 960;
private int CAMERA_HEIGHT = 540;
public static Sprite newDiceSprite;
public int mDiceHit;
public Dice(final float pX, final float pY,
final ITextureRegion pTextureRegion,
final VertexBufferObjectManager pVertexBufferObjectManager) {
super(pX, pY, pTextureRegion, pVertexBufferObjectManager);
this.mPhysicsHandler = new PhysicsHandler(this);
this.registerUpdateHandler(this.mPhysicsHandler);
RandomX = randomGenerator.nextInt(3);
RandomY = randomGenerator.nextInt(3);
RandomX = RandomX * 100;
RandomY = RandomY * 100;
this.mPhysicsHandler.setVelocity(RandomX, RandomY);
}
@Override
protected void onManagedUpdate(final float pSecondsElapsed) {
if (this.mX < 0) {
this.mPhysicsHandler.setVelocityX(RandomX);
} else if (this.mX + this.getWidth() > CAMERA_WIDTH) {
this.mPhysicsHandler.setVelocityX(-RandomX);
}
if (this.mY < 0) {
this.mPhysicsHandler.setVelocityY(RandomY);
} else if (this.mY + this.getHeight() > CAMERA_HEIGHT) {
this.mPhysicsHandler.setVelocityY(-RandomY);
}
super.onManagedUpdate(pSecondsElapsed);
}
@Override
public boolean onAreaTouched(final TouchEvent pAreaTouchEvent,
final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
switch (pAreaTouchEvent.getAction()) {
case TouchEvent.ACTION_DOWN:
// do action when button pressed down.
rollDice();
break;
case TouchEvent.ACTION_UP:
// do action when button pressed up.
break;
}
return super.onAreaTouched(pAreaTouchEvent, pTouchAreaLocalX,
pTouchAreaLocalY);
}
public void rollDice() {
Random rand = new Random();
mDiceHit = (rand.nextInt(5) + 1);
if (mDiceHit == 1) {
}
else if (mDiceHit == 2) {
}
else if (mDiceHit == 3) {
}
else if (mDiceHit == 4) {
}
else if (mDiceHit == 5) {
}
else if (mDiceHit == 6) {
//newDiceSprite = new Sprite(0,0, ResourceManager.dieSideSixTextureRegion, ResourceManager.getInstance().engine.getVertexBufferObjectManager());
//newDiceSprite.setPosition(400, 200);
//ManagedGameScene.attachChild(newDiceSprite);
GameLevel.newDice6();
}
}
我想,一个简单的开关就可以了
public boolean Roll() {
ResourceManager.diceShake.play();
Random rand = new Random();
switch (rand.nextInt(6) + 1) {
case 1:
// dice_picture.setImageResource(R.drawable.one);
dice1Sprite = new Dice(20, 20,
ResourceManager.dieSideOneTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice1Sprite);
break;
case 2:
// dice_picture.setImageResource(R.drawable.two);
dice2Sprite = new Dice(40, 40,
ResourceManager.dieSideTwoTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice2Sprite);
break;
case 3:
// dice_picture.setImageResource(R.drawable.three);
dice3Sprite = new Dice(60, 60,
ResourceManager.dieSideThreeTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice3Sprite);
break;
case 4:
// dice_picture.setImageResource(R.drawable.four);
dice4Sprite = new Dice(80, 80,
ResourceManager.dieSideFourTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice4Sprite);
break;
case 5:
// dice_picture.setImageResource(R.drawable.five);
dice5Sprite = new Dice(100, 100,
ResourceManager.dieSideFiveTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice5Sprite);
break;
case 6:
// dice_picture.setImageResource(R.drawable.six);
dice6Sprite = new Dice(120, 120,
ResourceManager.dieSideSixTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
SceneManager.getInstance().mCurrentScene.attachChild(dice6Sprite);
break;
default:
}
rolling = false; // user can press again
this.sortChildren();
return true;
}
public boolean Roll() {
ResourceManager.diceShake.play();
Random rand = new Random();
switch (rand.nextInt(6) + 1) {
case 1:
// dice_picture.setImageResource(R.drawable.one);
dice1Sprite = new Dice(20, 20,
ResourceManager.dieSideOneTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice1Sprite);
break;
case 2:
// dice_picture.setImageResource(R.drawable.two);
dice2Sprite = new Dice(40, 40,
ResourceManager.dieSideTwoTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice2Sprite);
break;
case 3:
// dice_picture.setImageResource(R.drawable.three);
dice3Sprite = new Dice(60, 60,
ResourceManager.dieSideThreeTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice3Sprite);
break;
case 4:
// dice_picture.setImageResource(R.drawable.four);
dice4Sprite = new Dice(80, 80,
ResourceManager.dieSideFourTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice4Sprite);
break;
case 5:
// dice_picture.setImageResource(R.drawable.five);
dice5Sprite = new Dice(100, 100,
ResourceManager.dieSideFiveTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
this.attachChild(dice5Sprite);
break;
case 6:
// dice_picture.setImageResource(R.drawable.six);
dice6Sprite = new Dice(120, 120,
ResourceManager.dieSideSixTextureRegion,
ResourceManager.getInstance().engine
.getVertexBufferObjectManager());
SceneManager.getInstance().mCurrentScene.attachChild(dice6Sprite);
break;
default:
}
rolling = false; // user can press again
this.sortChildren();
return true;
}