Skip to content

Instantly share code, notes, and snippets.

@Okamotodo
Created January 7, 2016 06:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Okamotodo/9e718cdffd80ce6dd23e to your computer and use it in GitHub Desktop.
Save Okamotodo/9e718cdffd80ce6dd23e to your computer and use it in GitHub Desktop.
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