Created
January 7, 2016 06:46
-
-
Save Okamotodo/9e718cdffd80ce6dd23e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package jp.gr.java_conf.miv; | |
import java.util.ArrayList; | |
import javax.microedition.khronos.opengles.GL10; | |
import jp.gr.java_conf.miv.KeyListenScene; | |
import jp.gr.java_conf.miv.MainScene; | |
import jp.gr.java_conf.miv.ResourceUtil; | |
import jp.gr.java_conf.miv.data.三位スコアデータ; | |
import jp.gr.java_conf.miv.data.二位スコアデータ; | |
import org.andengine.engine.handler.timer.ITimerCallback; | |
import org.andengine.engine.handler.timer.TimerHandler; | |
import org.andengine.entity.IEntity; | |
import org.andengine.entity.modifier.AlphaModifier; | |
import org.andengine.entity.modifier.DelayModifier; | |
import org.andengine.entity.modifier.MoveModifier; | |
import org.andengine.entity.modifier.ScaleModifier; | |
import org.andengine.entity.modifier.SequenceEntityModifier; | |
import org.andengine.entity.primitive.Rectangle; | |
import org.andengine.entity.scene.IOnSceneTouchListener; | |
import org.andengine.entity.scene.Scene; | |
import org.andengine.entity.sprite.AnimatedSprite; | |
import org.andengine.entity.sprite.ButtonSprite; | |
import org.andengine.entity.sprite.Sprite; | |
import org.andengine.entity.text.Text; | |
import org.andengine.entity.text.TextOptions; | |
import org.andengine.input.touch.TouchEvent; | |
import org.andengine.opengl.font.Font; | |
import org.andengine.opengl.texture.Texture; | |
import org.andengine.opengl.texture.TextureOptions; | |
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas; | |
import org.andengine.util.HorizontalAlign; | |
import org.andengine.util.color.Color; | |
import org.andengine.util.modifier.ease.EaseBackInOut; | |
import org.andengine.util.modifier.ease.EaseQuadOut; | |
import android.graphics.Typeface; | |
import android.view.KeyEvent; | |
public class MainScene extends KeyListenScene | |
implements IOnSceneTouchListener, ButtonSprite.OnClickListener { | |
// =========================================================== | |
// コンストラクター | |
// =========================================================== | |
public MainScene(MultiSceneActivity baseActivity) { | |
super(baseActivity); | |
init(); | |
} | |
// =========================================================== | |
// Game No.--- 待機 | |
// =========================================================== | |
private Text テキスト1; | |
private Text スコアテキスト; | |
private Sprite 待機画面; | |
private Sprite カーテン; | |
private AnimatedSprite タイム; | |
private float 倍速変数 = 1f; | |
private int ハイスコア変数; | |
private int 現在のスコア = 0; | |
private int 現在のゲーム = 0; | |
private int 体力値 = 4; | |
private ArrayList<AnimatedSprite> 体力値アレイ | |
= new ArrayList<AnimatedSprite>(); | |
private AnimatedSprite 体力; | |
private boolean ゲーム中かどうか; | |
private boolean ポーズ中かどうか; | |
private boolean ゲーム成功; | |
private ArrayList<Sprite> 収納用アレイ | |
= new ArrayList<Sprite>(); | |
private IEntity グリッド; | |
// 初期化 | |
public void init() { | |
// 待機画面を表示 | |
待機画面 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("taiki.png"); | |
attachChild(待機画面); | |
待機画面.setZIndex(101); | |
sortChildren(); | |
// カーテンを表示 | |
カーテン = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ka-tenn.png"); | |
カーテン.setX(160); | |
attachChild(カーテン); | |
カーテン.setZIndex(101); | |
sortChildren(); | |
// 体力を表示 | |
for (int i = 0; i < 体力値; i++) { | |
体力 = getBaseActivity().getResourceUtil() | |
.getAnimatedSprite("tairyoku_center.png", 1, 3); | |
if (i == 0) { | |
体力.setPosition(432, 576); | |
} else if (i == 1) { | |
体力.setPosition(688, 576); | |
} else if (i == 2) { | |
体力.setPosition(176, 576); | |
} else if (i == 3) { | |
体力.setPosition(944, 576); | |
} | |
体力.setCurrentTileIndex(0); | |
待機画面.attachChild(体力); | |
体力.setZIndex(102); | |
sortChildren(); | |
体力値アレイ.add(体力); | |
} | |
// タイムを表示 | |
タイム = getBaseActivity().getResourceUtil() | |
.getAnimatedSprite("taimu.png", 1, 6); | |
タイム.setPosition(0, 640); | |
attachChild(タイム); | |
タイム.setZIndex(4); | |
sortChildren(); | |
// グリッドを表示(※デバッグ時のみ) | |
グリッド = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("guriddo.png"); | |
attachChild(グリッド); | |
グリッド.setZIndex(103); | |
sortChildren(); | |
// 端末に搭載されたフォントを利用する | |
Texture texture = new BitmapTextureAtlas(getBaseActivity() | |
.getTextureManager(), 512, 512, | |
TextureOptions.BILINEAR_PREMULTIPLYALPHA); | |
Font font = new Font(getBaseActivity().getFontManager(), texture, | |
Typeface.DEFAULT_BOLD, 90, true, Color.WHITE); | |
getBaseActivity().getTextureManager().loadTexture(texture); | |
getBaseActivity().getFontManager().loadFont(font); | |
テキスト1 = new Text(0, 0, font, "スコア", | |
42, new TextOptions(HorizontalAlign.LEFT), | |
getBaseActivity().getVertexBufferObjectManager()); | |
テキスト1.setAlpha(0); | |
テキスト1.setColor(0, 0, 0); | |
テキスト1.setPosition(getBaseActivity().getEngine().getCamera() | |
.getWidth() / 2.0f - テキスト1.getWidth() / 2.0f, 128); | |
attachChild(テキスト1); | |
テキスト1.setZIndex(101); | |
sortChildren(); | |
スコアテキスト = new Text(0, 0, font, "" | |
+ 現在のスコア, 42, new TextOptions(HorizontalAlign.LEFT), | |
getBaseActivity().getVertexBufferObjectManager()); | |
スコアテキスト.setAlpha(0); | |
スコアテキスト.setColor(0, 0, 0); | |
スコアテキスト.setPosition(getBaseActivity().getEngine().getCamera() | |
.getWidth() / 2.0f - スコアテキスト.getWidth() / 2.0f, 224); | |
attachChild(スコアテキスト); | |
スコアテキスト.setZIndex(101); | |
sortChildren(); | |
// 待機画面(通常1) | |
registerUpdateHandler(new TimerHandler((2.5f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
gameWaitingNormal1(); | |
} | |
})); | |
} | |
// 待機画面(通常1) | |
public void gameWaitingNormal1() { | |
// 3回ごとにスピードアップ | |
if ((現在のスコア % 3) == 0 && 現在のスコア != 0) { | |
// スピードアップ! | |
倍速変数 += 0.1f; | |
// SPEED UP!ロゴを表示 | |
final Sprite スピードアップ = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("supi-doappu.png"); | |
スピードアップ.setPosition(1280, 192); | |
attachChild(スピードアップ); | |
スピードアップ.setZIndex(101); | |
sortChildren(); | |
// ロゴをスライドイン | |
スピードアップ.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier((3f / 倍速変数)), new MoveModifier((1.5f / 倍速変数), | |
スピードアップ.getX(), スピードアップ.getX() - 992, | |
スピードアップ.getY(), スピードアップ.getY(), | |
EaseBackInOut.getInstance()))); | |
// ロゴをスライドアウト | |
registerUpdateHandler(new TimerHandler((7f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
// ロゴをスライドイン | |
スピードアップ.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier((0f / 倍速変数)), new MoveModifier((1.5f / 倍速変数), | |
スピードアップ.getX(), スピードアップ.getX() - 992, | |
スピードアップ.getY(), スピードアップ.getY(), | |
EaseBackInOut.getInstance()))); | |
// 待機画面(通常2) | |
gameWaitingNormal2(); | |
} | |
})); | |
} else { | |
// 待機画面(通常2) | |
gameWaitingNormal2(); | |
} | |
} | |
// 待機画面(通常2) | |
public void gameWaitingNormal2() { | |
// 変数の定義 | |
現在のゲーム = 0; | |
ゲーム成功 = true; | |
// テキストを表示 | |
registerUpdateHandler(new TimerHandler((1f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
if (体力値 > 0) { | |
テキスト1.setAlpha(1); | |
スコアテキスト.setAlpha(1); | |
} | |
} | |
})); | |
// 体力値が0ならゲームオーバー | |
registerUpdateHandler(new TimerHandler((3f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
if (体力値 > 0) { | |
現在のスコア++; | |
スコアテキスト.setText("" + 現在のスコア); | |
} else { | |
// ゲムオ背景 | |
Rectangle ゲムオ背景 = new Rectangle(0, 0, getBaseActivity().getEngine() | |
.getCamera().getWidth(), getBaseActivity().getEngine() | |
.getCamera().getHeight(), getBaseActivity() | |
.getVertexBufferObjectManager()); | |
ゲムオ背景.setBlendFunction( | |
GL10.GL_ONE_MINUS_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); | |
ゲムオ背景.registerEntityModifier(new AlphaModifier(0.5f, 0, 0.5f)); | |
ゲムオ背景.setColor(0, 0, 0); | |
attachChild(ゲムオ背景); | |
ゲムオ背景.setZIndex(102); | |
sortChildren(); | |
// 透明な背景 | |
Rectangle 透明な背景 = new Rectangle(0, 0, getBaseActivity().getEngine() | |
.getCamera().getWidth(), getBaseActivity().getEngine() | |
.getCamera().getHeight(), getBaseActivity() | |
.getVertexBufferObjectManager()); | |
透明な背景.setColor(Color.TRANSPARENT); | |
attachChild(透明な背景); | |
透明な背景.setZIndex(102); | |
sortChildren(); | |
// 透明な背景を上側へスライドアウト | |
透明な背景.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(3), new MoveModifier(1, | |
透明な背景.getX(), 透明な背景.getX(), | |
透明な背景.getY(), 透明な背景.getY() - 256, | |
EaseQuadOut.getInstance()))); | |
// ゲームオーバーロゴ1 | |
Sprite アイコンゲムオ1 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-1.png"); | |
アイコンゲムオ1.setPosition(192, -256); | |
透明な背景.attachChild(アイコンゲムオ1); | |
アイコンゲムオ1.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(1.25f, | |
アイコンゲムオ1.getX(), アイコンゲムオ1.getX(), | |
アイコンゲムオ1.getY() - 2400, アイコンゲムオ1.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// ゲームオーバーロゴ2 | |
Sprite アイコンゲムオ2 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-2.png"); | |
アイコンゲムオ2.setPosition(288, -256); | |
透明な背景.attachChild(アイコンゲムオ2); | |
アイコンゲムオ2.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(1.50f, | |
アイコンゲムオ2.getX(), アイコンゲムオ2.getX(), | |
アイコンゲムオ2.getY() - 2400, アイコンゲムオ2.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// ゲームオーバーロゴ3 | |
Sprite アイコンゲムオ3 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-3.png"); | |
アイコンゲムオ3.setPosition(384, -256); | |
透明な背景.attachChild(アイコンゲムオ3); | |
アイコンゲムオ3.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(1.75f, | |
アイコンゲムオ3.getX(), アイコンゲムオ3.getX(), | |
アイコンゲムオ3.getY() - 2400, アイコンゲムオ3.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// ゲームオーバーロゴ4 | |
Sprite アイコンゲムオ4 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-4.png"); | |
アイコンゲムオ4.setPosition(480, -256); | |
透明な背景.attachChild(アイコンゲムオ4); | |
アイコンゲムオ4.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(2.00f, | |
アイコンゲムオ4.getX(), アイコンゲムオ4.getX(), | |
アイコンゲムオ4.getY() - 2400, アイコンゲムオ4.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// ゲームオーバーロゴ5 | |
Sprite アイコンゲムオ5 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-5.png"); | |
アイコンゲムオ5.setPosition(672, -256); | |
透明な背景.attachChild(アイコンゲムオ5); | |
アイコンゲムオ5.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(2.25f, | |
アイコンゲムオ5.getX(), アイコンゲムオ5.getX(), | |
アイコンゲムオ5.getY() - 2400, アイコンゲムオ5.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// ゲームオーバーロゴ6 | |
Sprite アイコンゲムオ6 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-6.png"); | |
アイコンゲムオ6.setPosition(768, -256); | |
透明な背景.attachChild(アイコンゲムオ6); | |
アイコンゲムオ6.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(2.50f, | |
アイコンゲムオ6.getX(), アイコンゲムオ6.getX(), | |
アイコンゲムオ6.getY() - 2400, アイコンゲムオ6.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// ゲームオーバーロゴ7 | |
Sprite アイコンゲムオ7 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-7.png"); | |
アイコンゲムオ7.setPosition(864, -256); | |
透明な背景.attachChild(アイコンゲムオ7); | |
アイコンゲムオ7.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(2.75f, | |
アイコンゲムオ7.getX(), アイコンゲムオ7.getX(), | |
アイコンゲムオ7.getY() - 2400, アイコンゲムオ7.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// ゲームオーバーロゴ8 | |
Sprite アイコンゲムオ8 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("ge-muo-ba-8.png"); | |
アイコンゲムオ8.setPosition(960, -256); | |
透明な背景.attachChild(アイコンゲムオ8); | |
アイコンゲムオ8.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(3.00f, | |
アイコンゲムオ8.getX(), アイコンゲムオ8.getX(), | |
アイコンゲムオ8.getY() - 2400, アイコンゲムオ8.getY() + 576, | |
EaseBackInOut.getInstance()))); | |
// スコアの保存 | |
registerUpdateHandler(new TimerHandler(4, new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
scoreSave(); | |
} | |
})); | |
} | |
} | |
})); | |
// ゲームの開始処理 | |
registerUpdateHandler(new TimerHandler((6 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
// テキストを非表示 | |
テキスト1.setAlpha(0); | |
スコアテキスト.setAlpha(0); | |
if (体力値 > 0) { | |
待機画面.registerEntityModifier(new ScaleModifier((1 / 倍速変数), 1, 10)); | |
カーテン.registerEntityModifier(new ScaleModifier((1 / 倍速変数), 1, 5)); | |
// カーテンを上側へスライドアウト | |
カーテン.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier((1 / 倍速変数)), new MoveModifier((1 / 倍速変数), | |
カーテン.getX(), カーテン.getX(), | |
カーテン.getY(), カーテン.getY() - 2240, | |
EaseQuadOut.getInstance()))); | |
タイム.setCurrentTileIndex(0); | |
// タイムカウント開始! | |
registerUpdateHandler(new TimerHandler((2 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
タイム.setCurrentTileIndex(1); | |
registerUpdateHandler(new TimerHandler((1 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
タイム.setCurrentTileIndex(2); | |
registerUpdateHandler(new TimerHandler((1 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
タイム.setCurrentTileIndex(3); | |
registerUpdateHandler(new TimerHandler((1 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
タイム.setCurrentTileIndex(4); | |
registerUpdateHandler(new TimerHandler((1 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
タイム.setCurrentTileIndex(5); | |
} | |
})); | |
} | |
})); | |
} | |
})); | |
} | |
})); | |
} | |
})); | |
// Sceneのタッチリスナーを登録 | |
setOnSceneTouchListener(MainScene.this); | |
// ここで選択したゲームがスタート! | |
gameNo001Init(); | |
} | |
} | |
})); | |
} | |
// 待機画面(成功) | |
public void gameWaitingSuccess() { | |
// 成功時専用処理 | |
registerUpdateHandler(new TimerHandler((1 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
for (int i = 0; i < 体力値; i++) { | |
体力値アレイ.get(i).animate(new long[] { 360, 180, }, 1, 2, true); | |
// 動きをストップ! | |
registerUpdateHandler(new TimerHandler((1.8f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
for (int i = 0; i < 体力値; i++) { | |
体力値アレイ.get(i).stopAnimation(); | |
体力値アレイ.get(i).setCurrentTileIndex(0); | |
} | |
} | |
})); | |
} | |
} | |
})); | |
// Sceneのタッチリスナーを解除 | |
setOnSceneTouchListener(null); | |
// タイムアップ処理 | |
待機画面.registerEntityModifier(new ScaleModifier((1 / 倍速変数), 10, 1)); | |
カーテン.registerEntityModifier(new ScaleModifier((1 / 倍速変数), 5, 1)); | |
// カーテンを下側へスライドイン | |
カーテン.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier((1 / 倍速変数), | |
カーテン.getX(), カーテン.getX(), | |
カーテン.getY(), カーテン.getY() + 2240, | |
EaseQuadOut.getInstance()))); | |
// ふたたび待機画面(通常1)へ | |
gameWaitingNormal1(); | |
} | |
// 待機画面(失敗) | |
public void gameWaitingFailure() { | |
// 失敗時専用処理 | |
体力値--; | |
体力値アレイ.get(体力値).detachSelf(); | |
// Sceneのタッチリスナーを解除 | |
setOnSceneTouchListener(null); | |
// タイムアップ処理 | |
待機画面.registerEntityModifier(new ScaleModifier((1 / 倍速変数), 10, 1)); | |
カーテン.registerEntityModifier(new ScaleModifier((1 / 倍速変数), 5, 1)); | |
// カーテンを下側へスライドイン | |
カーテン.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier((1 / 倍速変数), | |
カーテン.getX(), カーテン.getX(), | |
カーテン.getY(), カーテン.getY() + 2240, | |
EaseQuadOut.getInstance()))); | |
// ふたたび待機画面(通常1)へ | |
gameWaitingNormal1(); | |
} | |
// しれいメッセージの表示 | |
public void statementView() { | |
// 端末に搭載されたフォントを利用する | |
Texture texture = new BitmapTextureAtlas(getBaseActivity() | |
.getTextureManager(), 512, 512, | |
TextureOptions.BILINEAR_PREMULTIPLYALPHA); | |
Font font = new Font(getBaseActivity().getFontManager(), texture, | |
Typeface.DEFAULT_BOLD, 90, true, Color.WHITE); | |
getBaseActivity().getTextureManager().loadTexture(texture); | |
getBaseActivity().getFontManager().loadFont(font); | |
// =========================================================== | |
// Game No.001 ボクサー | |
// =========================================================== | |
if (現在のゲーム == 1) { | |
final Text しれいメッセージ = new Text(0, 0, font, "うちかえせ!", | |
42, new TextOptions(HorizontalAlign.LEFT), | |
getBaseActivity().getVertexBufferObjectManager()); | |
しれいメッセージ.setAlpha(0); | |
しれいメッセージ.setColor(1, 1, 1); | |
しれいメッセージ.setScale(5); | |
しれいメッセージ.setPosition(getBaseActivity().getEngine().getCamera() | |
.getWidth() / 2.0f - しれいメッセージ.getWidth() / 2.0f, 352); | |
attachChild(しれいメッセージ); | |
しれいメッセージ.setZIndex(101); | |
sortChildren(); | |
// しれいメッセージの縮小 | |
しれいメッセージ.registerEntityModifier(new ScaleModifier((0.5f / 倍速変数), 5, 1)); | |
// しれいメッセージの削除 | |
registerUpdateHandler(new TimerHandler((1.5f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
しれいメッセージ.detachSelf(); | |
} | |
})); | |
} | |
} | |
// スピードアップの処理 | |
public void speedUp() { | |
} | |
// スコアの保存 | |
public void scoreSave() { | |
// 記録を更新時は保存 | |
if (現在のスコア > SPUtil.getInstance(getBaseActivity()).getHighScore()) { | |
ハイスコア変数 = 1; | |
// 二位の記録を三位に… | |
三位スコアデータ.getInstance(getBaseActivity()).set三位スコアデータ( | |
二位スコアデータ.getInstance(getBaseActivity()).get二位スコアデータ()); | |
// 一位の記録を二位に… | |
二位スコアデータ.getInstance(getBaseActivity()).set二位スコアデータ( | |
SPUtil.getInstance(getBaseActivity()).getHighScore()); | |
// ここで一位の記録を保存 | |
SPUtil.getInstance(getBaseActivity()).setHighScore(現在のスコア); | |
} else if (現在のスコア > 二位スコアデータ.getInstance(getBaseActivity()).get二位スコアデータ()) { | |
ハイスコア変数 = 2; | |
// 二位の記録を三位に… | |
三位スコアデータ.getInstance(getBaseActivity()).set三位スコアデータ( | |
二位スコアデータ.getInstance(getBaseActivity()).get二位スコアデータ()); | |
// ここで二位の記録を保存 | |
二位スコアデータ.getInstance(getBaseActivity()).set二位スコアデータ(現在のスコア); | |
} else if (現在のスコア > 三位スコアデータ.getInstance(getBaseActivity()).get三位スコアデータ()) { | |
ハイスコア変数 = 3; | |
// ここで三位の記録を保存 | |
三位スコアデータ.getInstance(getBaseActivity()).set三位スコアデータ(現在のスコア); | |
} | |
// 端末に搭載されたフォントを利用する | |
Texture texture = new BitmapTextureAtlas(getBaseActivity() | |
.getTextureManager(), 512, 512, | |
TextureOptions.BILINEAR_PREMULTIPLYALPHA); | |
Font font = new Font(getBaseActivity().getFontManager(), texture, | |
Typeface.DEFAULT_BOLD, 90, true, Color.WHITE); | |
getBaseActivity().getTextureManager().loadTexture(texture); | |
getBaseActivity().getFontManager().loadFont(font); | |
// 今回のスコアを表示 | |
Text 今回のスコアテキスト1 = new Text(0, 0, font, "スコア" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
今回のスコアテキスト1.setPosition(800, 256); | |
今回のスコアテキスト1.setColor(1, 1, 0); | |
今回のスコアテキスト1.setScale(1); | |
attachChild(今回のスコアテキスト1); | |
Text 今回のスコアテキスト2 = new Text(0, 0, font, "点" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
今回のスコアテキスト2.setPosition(960, 352); | |
今回のスコアテキスト2.setColor(1, 1, 0); | |
今回のスコアテキスト2.setScale(1); | |
attachChild(今回のスコアテキスト2); | |
Text 今回のスコアテキスト3 = new Text(0, 0, font, | |
"" + 現在のスコア | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
今回のスコアテキスト3.setPosition(800, 352); | |
今回のスコアテキスト3.setColor(1, 1, 0); | |
今回のスコアテキスト3.setScale(1); | |
attachChild(今回のスコアテキスト3); | |
// ランク一位のスコアを表示 | |
Text 一位スコアテキスト1 = new Text(0, 0, font, "1st" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
一位スコアテキスト1.setY(256); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 1) { | |
一位スコアテキスト1.setColor(1, 1, 0); | |
} else { | |
一位スコアテキスト1.setColor(1, 1, 1); | |
} | |
一位スコアテキスト1.setScale(1); | |
attachChild(一位スコアテキスト1); | |
一位スコアテキスト1.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(1.5f, | |
一位スコアテキスト1.getX() - 1200, 一位スコアテキスト1.getX() + 128, | |
一位スコアテキスト1.getY(), 一位スコアテキスト1.getY(), | |
EaseBackInOut.getInstance()))); | |
Text 一位スコアテキスト2 = new Text(0, 0, font, "点" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
一位スコアテキスト2.setX(384); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 1) { | |
一位スコアテキスト2.setColor(1, 1, 0); | |
} else { | |
一位スコアテキスト2.setColor(1, 1, 1); | |
} | |
一位スコアテキスト2.setScale(1); | |
一位スコアテキスト1.attachChild(一位スコアテキスト2); | |
// スコアが登録されていないときはハイフン(-)を表示 | |
if (SPUtil.getInstance(getBaseActivity()).getHighScore() == 0) { | |
Text 一位スコアテキスト3 = new Text(0, 0, font, | |
"" + "- - -" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
一位スコアテキスト3.setX(224); | |
一位スコアテキスト3.setColor(1, 1, 1); | |
一位スコアテキスト3.setScale(1); | |
一位スコアテキスト1.attachChild(一位スコアテキスト3); | |
} else { | |
Text 一位スコアテキスト3 = new Text(0, 0, font, | |
"" + SPUtil.getInstance(getBaseActivity()).getHighScore() | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
一位スコアテキスト3.setX(224); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 1) { | |
一位スコアテキスト3.setColor(1, 1, 0); | |
} else { | |
一位スコアテキスト3.setColor(1, 1, 1); | |
} | |
一位スコアテキスト3.setScale(1); | |
一位スコアテキスト1.attachChild(一位スコアテキスト3); | |
} | |
// ランク二位のスコアを表示 | |
Text 二位スコアテキスト1 = new Text(0, 0, font, "2nd" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
二位スコアテキスト1.setY(352); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 2) { | |
二位スコアテキスト1.setColor(1, 1, 0); | |
} else { | |
二位スコアテキスト1.setColor(1, 1, 1); | |
} | |
二位スコアテキスト1.setScale(1); | |
attachChild(二位スコアテキスト1); | |
二位スコアテキスト1.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(1.75f, | |
二位スコアテキスト1.getX() - 1200, 二位スコアテキスト1.getX() + 128, | |
二位スコアテキスト1.getY(), 二位スコアテキスト1.getY(), | |
EaseBackInOut.getInstance()))); | |
Text 二位スコアテキスト2 = new Text(0, 0, font, "点" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
二位スコアテキスト2.setX(384); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 2) { | |
二位スコアテキスト2.setColor(1, 1, 0); | |
} else { | |
二位スコアテキスト2.setColor(1, 1, 1); | |
} | |
二位スコアテキスト2.setScale(1); | |
二位スコアテキスト1.attachChild(二位スコアテキスト2); | |
// スコアが登録されていないときはハイフン(-)を表示 | |
if (二位スコアデータ.getInstance(getBaseActivity()).get二位スコアデータ() == 0) { | |
Text 二位スコアテキスト3 = new Text(0, 0, font, | |
"" + "- - -" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
二位スコアテキスト3.setX(224); | |
二位スコアテキスト3.setColor(1, 1, 1); | |
二位スコアテキスト3.setScale(1); | |
二位スコアテキスト1.attachChild(二位スコアテキスト3); | |
} else { | |
Text 二位スコアテキスト3 = new Text(0, 0, font, | |
"" + 二位スコアデータ.getInstance(getBaseActivity()).get二位スコアデータ() | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
二位スコアテキスト3.setX(224); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 2) { | |
二位スコアテキスト3.setColor(1, 1, 0); | |
} else { | |
二位スコアテキスト3.setColor(1, 1, 1); | |
} | |
二位スコアテキスト3.setScale(1); | |
二位スコアテキスト1.attachChild(二位スコアテキスト3); | |
} | |
// ランク三位のスコアを表示 | |
Text 三位スコアテキスト1 = new Text(0, 0, font, "3rd" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
三位スコアテキスト1.setY(448); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 3) { | |
三位スコアテキスト1.setColor(1, 1, 0); | |
} else { | |
三位スコアテキスト1.setColor(1, 1, 1); | |
} | |
三位スコアテキスト1.setScale(1); | |
attachChild(三位スコアテキスト1); | |
三位スコアテキスト1.registerEntityModifier(new SequenceEntityModifier( | |
new DelayModifier(0), new MoveModifier(2, | |
三位スコアテキスト1.getX() - 1200, 三位スコアテキスト1.getX() + 128, | |
三位スコアテキスト1.getY(), 三位スコアテキスト1.getY(), | |
EaseBackInOut.getInstance()))); | |
Text 三位スコアテキスト2 = new Text(0, 0, font, "点" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
三位スコアテキスト2.setX(384); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 3) { | |
三位スコアテキスト2.setColor(1, 1, 0); | |
} else { | |
三位スコアテキスト2.setColor(1, 1, 1); | |
} | |
三位スコアテキスト2.setScale(1); | |
三位スコアテキスト1.attachChild(三位スコアテキスト2); | |
// スコアが登録されていないときはハイフン(-)を表示 | |
if (三位スコアデータ.getInstance(getBaseActivity()).get三位スコアデータ() == 0) { | |
Text 三位スコアテキスト3 = new Text(0, 0, font, | |
"" + "- - -" | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
三位スコアテキスト3.setX(224); | |
三位スコアテキスト3.setColor(1, 1, 1); | |
三位スコアテキスト3.setScale(1); | |
三位スコアテキスト1.attachChild(三位スコアテキスト3); | |
} else { | |
Text 三位スコアテキスト3 = new Text(0, 0, font, | |
"" + 三位スコアデータ.getInstance(getBaseActivity()).get三位スコアデータ() | |
, 42, new TextOptions(HorizontalAlign.CENTER), | |
getBaseActivity().getVertexBufferObjectManager()); | |
三位スコアテキスト3.setX(224); | |
// 更新時はフォントカラーも変更 | |
if (ハイスコア変数 == 3) { | |
三位スコアテキスト3.setColor(1, 1, 0); | |
} else { | |
三位スコアテキスト3.setColor(1, 1, 1); | |
} | |
三位スコアテキスト3.setScale(1); | |
三位スコアテキスト1.attachChild(三位スコアテキスト3); | |
} | |
// もう一度ボタンの定義と処理をインスタンスで! | |
ButtonSprite もう一度ボタン = ResourceUtil.getInstance(getBaseActivity()) | |
.getButtonSprite("mouitido1.png", | |
"mouitido2.png"); | |
placeToCenterX(もう一度ボタン, 608); | |
registerTouchArea(もう一度ボタン); | |
attachChild(もう一度ボタン); | |
もう一度ボタン.setOnClickListener(new ButtonSprite.OnClickListener() { | |
public void onClick(ButtonSprite pButtonSprite, | |
float pTouchAreaLocalX, float pTouchAreaLocalY) { | |
} | |
}); | |
} | |
// =========================================================== | |
// Game No.001 ボクサー | |
// =========================================================== | |
private Sprite ボクサー画面; | |
private AnimatedSprite 人; | |
private Sprite 腕; | |
private Sprite ボール; | |
private boolean パンチ中かどうか; | |
private int ボールタグ = 1; | |
// 初期化&終了化 | |
public void gameNo001Init() { | |
// 変数の定義と、しれいメッセージの表示 | |
registerUpdateHandler(new TimerHandler((0.5f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
現在のゲーム = 1; | |
ゲーム中かどうか = true; | |
ポーズ中かどうか = false; | |
statementView(); | |
} | |
})); | |
// ハンドラーの呼び出し | |
registerUpdateHandler(new TimerHandler((1 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
registerUpdateHandler(gameNo001HandlerA); | |
registerUpdateHandler(gameNo001HandlerB); | |
} | |
})); | |
// スプライトの表示 | |
ボクサー画面 = ResourceUtil.getInstance(getBaseActivity()) | |
.getSprite("bokusa-.png"); | |
attachChild(ボクサー画面); | |
ボクサー画面.setZIndex(1); | |
sortChildren(); | |
人 = ResourceUtil.getInstance(getBaseActivity()) | |
.getAnimatedSprite("hito.png", 1, 3); | |
人.animate(new long[] { 120, 120, }, 0, 1, true); | |
attachChild(人); | |
人.setZIndex(2); | |
sortChildren(); | |
// 終了化 | |
registerUpdateHandler(new TimerHandler((6 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
gameNo001Finalize(); | |
} | |
})); | |
} | |
public void gameNo001Finalize() { | |
// 変数の定義 | |
現在のゲーム = 0; | |
ポーズ中かどうか = true; | |
// 変数の定義と、スプライトの削除 | |
registerUpdateHandler(new TimerHandler((1 / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
ゲーム中かどうか = false; | |
ボクサー画面.detachSelf(); | |
人.detachSelf(); | |
} | |
})); | |
// 待機画面(成功) | |
if (ゲーム成功 == true) { | |
gameWaitingSuccess(); | |
// 待機画面(失敗) | |
} else { | |
gameWaitingFailure(); | |
} | |
} | |
// ハンドラー | |
public TimerHandler gameNo001HandlerA | |
= new TimerHandler(1f / (60f * 倍速変数), true, new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
if (ポーズ中かどうか == false) { | |
// 移動と衝突処理 | |
for (int i = 0; i < getChildCount(); i++) { | |
if (getChildByIndex(i).getTag() == ボールタグ) { | |
// 移動処理 | |
getChildByIndex(i).setPosition( | |
getChildByIndex(i).getX() - 12, | |
getChildByIndex(i).getY()); | |
// 上昇処理 | |
if (getChildByIndex(i).getX() > 800) { | |
getChildByIndex(i).setY(( | |
getChildByIndex(i).getY() - 0.93f) * 0.93f); | |
// 落下処理 | |
} else { | |
getChildByIndex(i).setY(( | |
getChildByIndex(i).getY() + 1.065f) * 1.065f); | |
} | |
// 回転処理 | |
getChildByIndex(i).setRotation( | |
getChildByIndex(i).getRotation() - 3); | |
// すぐに削除するとインデックスがずれるため一旦配列に追加 | |
収納用アレイ.add((Sprite) getChildByIndex(i)); | |
// Sprite同士が衝突している時のみ高度な衝突判定へ | |
if (((Sprite) getChildByIndex(i)).collidesWith(人)) { | |
if (getChildByIndex(i).getTag() == ボールタグ) { | |
ゲーム成功 = false; | |
人.detachSelf(); | |
} | |
} | |
} | |
} | |
} | |
if (ゲーム中かどうか == false) { | |
// 配列の中身を削除 | |
for (Sprite sp : 収納用アレイ) { | |
sp.detachSelf(); | |
} | |
// ハンドラーをストップ | |
gameNo001HandlerA.reset(); | |
unregisterUpdateHandler(gameNo001HandlerA); | |
gameNo001HandlerB.reset(); | |
unregisterUpdateHandler(gameNo001HandlerB); | |
} | |
} | |
}); | |
public TimerHandler gameNo001HandlerB | |
= new TimerHandler((1.5f / 倍速変数), true, new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
if (ゲーム中かどうか == true) { | |
int r = (int) (Math.random() * 1); | |
switch (r) { | |
case 0: | |
// ボール | |
ボール = getBaseActivity().getResourceUtil() | |
.getSprite("bo-ru.png"); | |
ボール.setTag(ボールタグ); | |
ボール.setPosition(getBaseActivity() | |
.getEngine().getCamera().getWidth() | |
+ ボール.getWidth(), 480); | |
attachChild(ボール); | |
ボール.setZIndex(2); | |
sortChildren(); | |
break; | |
} | |
} | |
} | |
}); | |
// タッチとボタンイベント | |
public void gameNo001TouchEvent() { | |
// パンチの連射を防ぐ | |
パンチ中かどうか = true; | |
// 人のアニメを変更 | |
人.stopAnimation(); | |
人.setCurrentTileIndex(2); | |
// 腕を追加 | |
腕 = getBaseActivity().getResourceUtil() | |
.getSprite("ude.png"); | |
腕.setPosition(160, 224); | |
人.attachChild(腕); | |
// 削除するSpriteを一旦格納する配列 | |
ArrayList<Sprite> spToRemoveArray = new ArrayList<Sprite>(); | |
for (int i = 0; i < getChildCount(); i++) { | |
if (getChildByIndex(i).getTag() == ボールタグ) { | |
// 衝突判定 | |
if (((Sprite) getChildByIndex(i)).collidesWith(腕)) { | |
spToRemoveArray.add((Sprite) getChildByIndex(i)); | |
} | |
} | |
} | |
// 削除 | |
for (Sprite sp : spToRemoveArray) { | |
sp.detachSelf(); | |
} | |
// タッチイベントの終了化 | |
registerUpdateHandler(new TimerHandler((0.5f / 倍速変数), new ITimerCallback() { | |
public void onTimePassed(TimerHandler pTimerHandler) { | |
パンチ中かどうか = false; | |
人.animate(new long[] { 120, 120, }, 0, 1, true); | |
腕.detachSelf(); | |
} | |
})); | |
} | |
public void gameNo001ButtonEvent() { | |
// TODO Auto-generated method stub | |
} | |
// =========================================================== | |
// ポーズ系 | |
// =========================================================== | |
// ポーズの処理 | |
public void pauseView() { | |
// TODO Auto-generated method stub | |
} | |
// ゲームを中断 | |
public void gamePause() { | |
// TODO Auto-generated method stub | |
} | |
// ゲームを再開 | |
public void gameResume() { | |
} | |
// =========================================================== | |
// 本体系 | |
// =========================================================== | |
// 画面のタッチイベント | |
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { | |
// gameNo001専用のタッチイベント | |
if (現在のゲーム == 1 && ゲーム中かどうか == true) { | |
if (pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN) { | |
if (パンチ中かどうか == false) { | |
gameNo001TouchEvent(); | |
} | |
return true; | |
} | |
return true; | |
} | |
return true; | |
} | |
// 端末のキーイベント | |
@Override | |
public boolean dispatchKeyEvent(KeyEvent e) { | |
return false; | |
} | |
// =========================================================== | |
// 不要なメソッド | |
// =========================================================== | |
@Override | |
public void prepareSoundAndMusic() { | |
// TODO Auto-generated method stub | |
} | |
// =========================================================== | |
// 各ボタンの内容をここで処理 | |
// =========================================================== | |
public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX, | |
float pTouchAreaLocalY) { | |
// TODO Auto-generated method stub | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment