簡易4択クイズです。
少ない順にタップし、全てタップするとゲームクリアーです。
難易度
学習用のサンプルアプリです。
ゲームオーバーやリトライはありませんし、説明も簡略しています。
以下の知識が無いと理解不能です。
初心者のかたは「ご自身のPCで再現」を目指してください。
- 配列
- IF
- キャスト
- ジェネリクス
動画リスト
プロジェクト名
プロジェクト、カンパニードメイン、パッケージネームを同じにするとコピペエラーが減ります。
Application name ForeQuiz
Company Domain test.com
Package name com.test.forequiz

activity_main.xml(①画面作成編・完成)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="小さい順にタップ"
android:textSize="40sp" />
<Button
android:id="@+id/b0"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="onButton"
android:text="○"
android:textSize="30sp" />
<Button
android:id="@+id/b1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="onButton"
android:text="○"
android:textSize="30sp" />
<Button
android:id="@+id/b2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="onButton"
android:text="○"
android:textSize="30sp" />
<Button
android:id="@+id/b3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="onButton"
android:text="○"
android:textSize="30sp" />
</LinearLayout>
MainActivity.java( ② ランダム出題編 )
package com.test.forequiz; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import java.util.Arrays; import java.util.Collections; import java.util.List; public class MainActivity extends AppCompatActivity { String[] QUIZ = {"アリ","ネズミ","ゴリラ","クジラ"}; // 問題 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 出題(シャッフル)////////////////////////// List<String> list = Arrays.asList(QUIZ.clone()); Collections.shuffle(list); ((Button)findViewById(R.id.b0)).setText(list.get(0)); ((Button)findViewById(R.id.b1)).setText(list.get(1)); ((Button)findViewById(R.id.b2)).setText(list.get(2)); ((Button)findViewById(R.id.b3)).setText(list.get(3)); } }
MainActivity.java( ③ 正解判定編 )
package com.test.forequiz; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.util.Arrays; import java.util.Collections; import java.util.List; public class MainActivity extends AppCompatActivity { String[] QUIZ = {"アリ","ネズミ","ゴリラ","クジラ"}; // 問題 int tap = 0; // 現在の正解数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 出題(シャッフル)////////////////////////// List<String> list = Arrays.asList(QUIZ.clone()); Collections.shuffle(list); ((Button)findViewById(R.id.b0)).setText(list.get(0)); ((Button)findViewById(R.id.b1)).setText(list.get(1)); ((Button)findViewById(R.id.b2)).setText(list.get(2)); ((Button)findViewById(R.id.b3)).setText(list.get(3)); } // ボタンチェック ///////////////////////// public void onButton( View v){ // タップされたボタンの文字を取得 String text = ((Button)v).getText().toString(); // 正解処理 ( 問題と比較 ) if( text.equals(QUIZ[tap])){ v.setEnabled(false); // ボタンをクリック不可 tap++; // 正解数UP ((TextView)findViewById(R.id.tv)).setText( tap+"問正解!!"); // 正解表示 } } }
MainActivity.java( ④ ゲームオーバー )
package com.test.forequiz;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity {
String[] QUIZ = {"アリ","ネズミ","ゴリラ","クジラ"}; // 問題
int tap = 0; // 現在の正解数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 出題(シャッフル)//////////////////////////
List<String> list = Arrays.asList(QUIZ.clone());
Collections.shuffle(list);
((Button)findViewById(R.id.b0)).setText(list.get(0));
((Button)findViewById(R.id.b1)).setText(list.get(1));
((Button)findViewById(R.id.b2)).setText(list.get(2));
((Button)findViewById(R.id.b3)).setText(list.get(3));
}
// ボタンチェック /////////////////////////
public void onButton( View v){
// タップされたボタンの文字を取得
String text = ((Button)v).getText().toString();
// 正解処理 ( 問題と比較 )
if( text.equals(QUIZ[tap])){
v.setEnabled(false); // ボタンをクリック不可
tap++; // 正解数UP
((TextView)findViewById(R.id.tv)).setText( tap+"問正解!!"); // 正解表示
}
// 不正解処理
else {
((TextView)findViewById(R.id.tv)).setText("ゲームオーバー");
((Button)findViewById(R.id.b0)).setEnabled(false);
((Button)findViewById(R.id.b1)).setEnabled(false);
((Button)findViewById(R.id.b2)).setEnabled(false);
((Button)findViewById(R.id.b3)).setEnabled(false);
}
}
}
MainActivity.java( ⑤ 完成編 )
package com.test.forequiz;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity {
String[] QUIZ = {"アリ","ネズミ","ゴリラ","クジラ"}; // 問題
int tap = 0; // 現在の正解数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 出題(シャッフル)//////////////////////////
List<String> list = Arrays.asList(QUIZ.clone());
Collections.shuffle(list);
((Button)findViewById(R.id.b0)).setText(list.get(0));
((Button)findViewById(R.id.b1)).setText(list.get(1));
((Button)findViewById(R.id.b2)).setText(list.get(2));
((Button)findViewById(R.id.b3)).setText(list.get(3));
}
// ボタンチェック /////////////////////////
public void onButton( View v){
// タップされたボタンの文字を取得
String text = ((Button)v).getText().toString();
// 正解処理 ( 問題と比較 )
if( text.equals(QUIZ[tap])){
v.setEnabled(false); // ボタンをクリック不可
tap++; // 正解数UP
((TextView)findViewById(R.id.tv)).setText( tap+"問正解!!"); // 正解表示
// 全問正解の処理
if(tap >= 4){
((TextView)findViewById(R.id.tv)).setText("ゲームクリア");
}
}
// 不正解処理
else {
((TextView)findViewById(R.id.tv)).setText("ゲームオーバー");
((Button)findViewById(R.id.b0)).setEnabled(false);
((Button)findViewById(R.id.b1)).setEnabled(false);
((Button)findViewById(R.id.b2)).setEnabled(false);
((Button)findViewById(R.id.b3)).setEnabled(false);
}
}
}
