じゃんけんアプリ作成
-仕様と実装-

■じゃんけんアプリ仕様

●フロー
mb_0049

●UI情報
mb_0048

●仕様
mb_0047

■コード実装

// ViewにOnClickListenerを継承
public class MainActivity extends AppCompatActivity
	implements View.OnClickListener 
{
	// グー、チョキ、パーの定数化
	public static final int GU = 0;
	public static final int TYOKI = 1;
	public static final int PA = 2;

	// 引き分けフラグ(Drawはややこしいので避けた)
	private boolean m_TieFlg;   

	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		m_TieFlg = false;

		//  クリックイベントの登録
		findViewById(R.id.imageButton).setOnClickListener(this);
		findViewById(R.id.imageButton2).setOnClickListener(this);
		findViewById(R.id.imageButton3).setOnClickListener(this);
		findViewById(R.id.button).setOnClickListener(this);
		Init();
	}

	// 初期化
	private void Init()
	{
		// 文字変更
		if (m_TieFlg == false)
		{
			((TextView) findViewById(R.id.textView)).setText("じゃんけん");
		} else {
			((TextView) findViewById(R.id.textView)).setText("あいこで");
	        }

		// 描画
		findViewById(R.id.imageButton).setVisibility(View.VISIBLE);
		findViewById(R.id.imageButton2).setVisibility(View.VISIBLE);
		findViewById(R.id.imageButton3).setVisibility(View.VISIBLE);

		// 非表示
		findViewById(R.id.textView2).setVisibility(View.INVISIBLE);
		findViewById(R.id.imageView).setVisibility(View.INVISIBLE);
		findViewById(R.id.button).setVisibility(View.INVISIBLE);
	}

	// 敵の手取得
	private int getEnemyHand()
	{
		Random r = new Random();
		return r.nextInt(3);
	}

	// 判定処理
	private void Judge(int user_hand, int enemy_hand)
	{
		boolean win_flg = false;

		ImageView img = (ImageView)findViewById(R.id.imageView);
		TextView text = (TextView)findViewById(R.id.textView);
		TextView text2 = (TextView)findViewById(R.id.textView2);
		TextView text = (TextView)findViewById(R.id.textView);

		// 敵の手表示
		img.setVisibility(View.VISIBLE);
		if (enemy_hand == GU)
		{
			img.setImageResource(R.drawable.j_gu);
		} else if (enemy_hand == TYOKI) {
			img.setImageResource(R.drawable.j_ch);
		} else if (enemy_hand == PA) {
			img.setImageResource(R.drawable.j_pa);
		}

		// 号令テキスト変更
		if (m_TieFlg == false)
		{
			text.setText("ぽい");
		} else {
			text.setText("しょ");
		}

		// 判定
		if (user_hand == enemy_hand)
		{
			// あいこ
			m_TieFlg = true;
			Init();
			return;
		} else {
			if (user_hand == GU)
			{
				if (enemy_hand == TYOKI)
				{
					win_flg = true;
				}
			} else if (user_hand == TYOKI) {
				if (enemy_hand == PA)
				{
					win_flg = true;
				}
			} else if(user_hand == PA) {
				if (enemy_hand == GU)
				{
					win_flg = true;
				}
			}
		}

		// 勝ち負けテキストともう一回ボタン表示
		text2.setVisibility(View.VISIBLE);
		findViewById(R.id.button).setVisibility(View.VISIBLE);

		// 勝敗テキスト変更
		if (win_flg == true)
		{
			text2.setText("勝ち");
	        } else {
			text2.setText("負け");
		}
	}

	public void onClick(View view)
	{
		switch (view.getId())
		{
		// グー
		case R.id.imageButton:
			findViewById(R.id.imageButton2).setVisibility(View.INVISIBLE);
			findViewById(R.id.imageButton3).setVisibility(View.INVISIBLE);
			Judge(GU, getEnemyHand());
			break;
		// チョキ
		case R.id.imageButton2:
			findViewById(R.id.imageButton).setVisibility(View.INVISIBLE);
			findViewById(R.id.imageButton3).setVisibility(View.INVISIBLE);
			Judge(TYOKI, getEnemyHand());
			break;
		// パー
		case R.id.imageButton3:
			findViewById(R.id.imageButton).setVisibility(View.INVISIBLE);
			findViewById(R.id.imageButton2).setVisibility(View.INVISIBLE);
			Judge(PA, getEnemyHand());
			break;
		// もう一回
		case R.id.button:
			m_TieFlg = false;
			Init();
			break;
		}
	}
}