NAVERまとめに攻略ページを作った

 パズルゲーム「カラフルフロア」の攻略ページを「NAVERまとめ」に作ってみました。タイトルも『思考型パズルゲーム「カラフルフロア」完全攻略』と大きく出ています。
 順調に作成は進み公開もしたのですが・・そもそもからして「NAVERまとめ」をこのように使ってよいのかしらん。間違った使い方であったらこの場で謝っておきます。スマン。
 
 現在は、ルール説明とあわせてroom1の解説までです。順次追記予定、気が向いたら(この辺りが「まとめ記事」ではないように思える・・)。

パズルゲーム「カラフルフロア」を公開しました

 ここ最近「パロディことわざ」を呟かずにせっせと問題面を作っていたパズルゲーム「カラフルフロア」が完成しました。
device-2014-12-21-133804
 問題は50面位は作りたい・・と思っていたのですが、40面を作ったところで「まっいいかぁ」と。
 そのかわり、軌跡によって嵌ることがあったプレーヤーを追いかける敵キャラクターのプログラムを見直して復活させました。
 
 このように遊ぶパズルです。
device-2014-12-21-133857 device-2014-12-21-133925
 
 こんな面も作ったので(出来は悪い)
device-2014-12-21-134222
 クリスマス前に公開することとしました。
 
 ic_launcher-web Google play のページ

パロディことわざのツイートが200編になっていました

 最近、いいネタが思いつかない「パロディことわざ」のツイートが200編を超えていました。
 先ほどツイートしてから数え始めたら201編となっていました。
 ツイートせずに数えればキリが良かったのに・・。

 自分で気に入っているのは
 
 物は考えよう(ものはかんがえよう)
 桃缶が栄養
  糖分多いだろ

 このような緩い作品ですかね。
 アプリ「パロディことわざ」もよろしくお願いします。

AndEngineでアニメーション中のタッチイベントを制御する

 パズルゲーム「カラフルフロア」の問題面を作りながらバグ取りをしていて、コードの中身も段々と思い出してきました。
 最後まで悩んでいたのが、タッチイベント制御周りのエラーだった・・。
 
 フォァファファファ~(回想時のSE)
 
 このゲーム、プレーヤーと同じ色のパネルには移動できるというルールなので、画面をタッチして「行ける」と判定された場合は、プレーヤーをひょこひょこアニメーションさせてタッチしたパネルまで移動させています。
 始めは、まあ誰もがされるであろうタッチ時のフラグ boolean isTouchOK を作って制御していたのですが、タッチダウン:いけるかどうか判定→タッチアップ:行ければアニメーション開始・移動という処理中に頻繁にエラーが出るのです。

 調べてみると、タッチアップ後のロック処理 isTouchOK = false を先回りして次のタッチダウン処理に入ってしまう場合があることが判明。
 アニメーションの開始時に条件を付けてみたり(←今思えば、アニメーション開始後の制御が問題なのだから関係なかったね・・)したのですが、娘の超絶タッチ連打にはなす術もなくエラーとなりフリーズしてしまいます。娘はエラーを出そうとすさまじいタップをするのです。
 
 試行錯誤の末、たどり着いたのが次のコードです。

	float x, y;
	int mx, my, pastX, pastY;

	public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent){
		// 生座標値を取得
		x = pSceneTouchEvent.getX();
		y = pSceneTouchEvent.getY();

		// パネルの位置に変換
		mx = (int)Math.floor(((x - OFFSET_X) / (TILE_WIDTH / 2) + (y - (OFFSET_Y + 12)) / (TILE_HEIGHT / 2)) / -2);
		my = (int)Math.floor(((y - (OFFSET_Y + 12)) / (TILE_HEIGHT / 2) - (x - OFFSET_X) / (TILE_WIDTH / 2)) / -2);

		// ロックされていなければ処理開始
		// 生座標値の取得などが前にあるのは、実際のコードでは他にもいろいろ処理しているため
		if(isTouchOK){
			// タッチダウン時
			if (pSceneTouchEvent.isActionDown()){
				// pastX と pastY は前回タッチダウン時の mx と my
				// 前回とタッチ位置が異なり、アニメーションが動いていないで、範囲内であれば処理開始 X、Y はパネルの縦横最大数
				if(!(pastX == mx && pastY == my && player.isAnimationRunning()) && mx >= 0 && mx < X && my >= 0 && my < Y){
					// タッチダウン時の処理
					touchDown(mx, my);
					// 今回位置を格納
					pastX = mx;
					pastY = my;
				}
			}
			// タッチアップ時
			else if (pSceneTouchEvent.isActionUp()){
				// ロックして
				isTouchOK = false;
				// タッチダウン時と同じパネル位置で(実際には isActionMove 時の処理もあるので再度)範囲内なら処理開始
				if(pastX == mx && pastY == my && mx >= 0 && mx < X && my <= 0 && my < Y){
					// タッチアップ時の処理
					touchUp(mx, my);
					// アニメーション終了後にロックを解除して、前回値にダミーを入れる
					// isTouchOK = true;
					// pastX = -1;
					// pastY = -1;
				}
				else isTouchOK = true;
			}
		}
		return false;
	}

 これでエラーが激減しました。
 
 フォァファファファ~(回想時のSE)
 
 1年前に悩んでいたことが1年前のことのように思い出されます。

 ひとまず落ち着いているので更に直すつもりはないのですが、他の方々は、タッチイベントをキューに入れたりして任意のタイミングで取り出して処理しているようですね。よくわからんけど。

 しかし、でも、まだ、やはり、時たまフリーズするのです・・原因不明。