じゃんけんアプリ作成
-仕様と実装-
■じゃんけんアプリ仕様
●フロー
●UI情報
●仕様
■コード実装
// 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;
}
}
}