ページ 11

IraIraBarをゲームタイトル→ゲームシーンに移動のようにさせたい。

Posted: 2012年11月20日(火) 20:09
by ひなし
初めまして、お世話になっております。
今回はAndroidプログラミングの館のほうで説明してくださっている
IraIraBarのサンプルでタイトル→ゲームシーンへ移行を作るにはどうすればいいのか
ということを質問させていただきたいです。
自分でもいくつか方法を試してみたのですが、すべて 「予期せぬエラー~」となり
強制終了してしまうため駄目でした。
ご教授のほどよろしくお願いいたします。

Re: IraIraBarをゲームタイトル→ゲームシーンに移動のようにさせたい。

Posted: 2012年11月20日(火) 20:15
by nil
教授->教示の間違いでは?

丸投げは禁止です。
質問者さんの現在書いているコードをご提示ください。

Re: IraIraBarをゲームタイトル→ゲームシーンに移動のようにさせたい。

Posted: 2012年11月20日(火) 20:35
by ひなし
涼雅さん

レスを付けてくださりありがとうございます。
教授は教示の間違いでした、申し訳ありません。

現在書いているコードについては、質問のほうでも書かせていただいた通り
「予期せぬ~」となり強制終了してしまうたびに
そこを消しては元に戻してを繰り返しているので
サンプルコードのままとなっております。

サンプルコードのままを上げるというのもどうなのかと思い
ソースコードは上げませんでした。 申し訳ありませんでした。

Re: IraIraBarをゲームタイトル→ゲームシーンに移動のようにさせたい。

Posted: 2012年11月20日(火) 23:55
by Dixq (管理人)
あのサンプルはエラー処理が大して入れてありません。
別件でもいくつか質問が来ているので、ある程度エラー処理を入れたコードに直しておこうと思います。少々お待ちください。

描画で落ちる場合は

GameSurfaceView#

コード:

	private void onDraw(SurfaceHolder holder) {
		Canvas c = holder.lockCanvas();
		if(c==null){
			return;
		}
		_gameMgr.onDraw(c);
		holder.unlockCanvasAndPost(c);
	}
を試してみてください。

Re: IraIraBarをゲームタイトル→ゲームシーンに移動のようにさせたい。

Posted: 2012年11月21日(水) 09:55
by ひなし
おはようございます。
失礼いたします。

タッチをしたらゲームシーンへ移行するというのを試しているのですが
タッチイベントの関数を入れると例の「予期せぬ~」となり
なかなかうまくいきません。
どうしたらいいでしょうか。 いじっている箇所のコードは以下となります。

#GameManager

コード:

/**
	 * GameManagerのコンストラクタ
	 *
	 */
	GameManager() {


		switch(status){
		
		case TITLE:
			
			break;


		case PLAY:

			// 画面4隅に四角形を配置
			// コンフィグを特に設定せずnullを渡せばデフォルト設定になる
			barrierList.add(new BarrierSquare(0, 0, 480, 20, null)); // 上側
			barrierList.add(new BarrierSquare(0, 0, 20, 854, null)); // 左側
			barrierList.add(new BarrierSquare(460, 0, 20, 854, null)); // 右側
			barrierList.add(new BarrierSquare(0, 834, 480, 20, null)); // 下側

			
			for (Barrier bar : barrierList) {

				// タスクリストに障害物を追加
				taskList.add(bar);
			}

			// 参考URL:http://www.javadrive.jp/start/linkedlist/
			// 更新させなければいけないもののオブジェクトを作成する
			player = new Player();
			taskList.add(player);
			taskList.add(new FpsController());

			break;
		}

	}
[code]
#GameManager
[code = Java]

/**
	 * タスクの更新処理
	 *
	 * @return
	 */
	public boolean onUpdate() {

		switch (status) {

		case TITLE:

			switch (event.getAction()) {

			case MotionEvent.ACTION_DOWN:

				status = GameStatus.PLAY;

				break;
			}

			break;

		case PLAY:



			// ゲームオーバーかゲームクリア状態だったら抜ける(止まる)
			if (status == GameStatus.GAME_OVER || status == GameStatus.GAME_CLEAR) {
				return true;
			}

			if (status == GameStatus.TITLE) {

				status = GameStatus.TITLE;
			}

			// もし障害物に衝突したらonUpdateを抜ける
			if (Collision()) {
				return true;
			}

			for (int i = 0; i < taskList.size(); i++) {
				// 更新失敗なら
				if (taskList.get(i).onUpdate() == false) {
					// そのタスクを消す
					taskList.remove(i);
					i--;
				}
			}

			break;

		}
		return true;
	}