簡易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); } } }