¿Cómo construir un juego de reflejo simple en Android?

Un juego de reflejos es un juego simple y divertido que mide tu velocidad de respuesta. Es bastante simple de hacer y entender. Diseñaremos un juego de reflejos que calculará tu velocidad de respuesta. Las reglas son simples, solo presiona el botón de detener cuando veas el cambio en el color de fondo, y el tiempo que tardaste en hacerlo será tu velocidad. Una respuesta más rápida mostrará una mejor cita de elogio que una más lenta.

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio. Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Los códigos XML se utilizan para construir la estructura de la actividad, así como su parte de estilo. Contiene un TextView en el centro de la actividad para mostrar las instrucciones del juego. Luego contiene dos botones , iniciar y detener. A continuación se muestra el código para el archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rlVar1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <!--TextView to display game instruction-->
    <TextView
        android:id="@+id/tvVar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:padding="20dp"
        android:text="Click on Start first, and wait
                      until the background color changes.
                      As soon as it changes hit Stop"
        android:textSize="25dp" />
  
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tvVar1"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal"
        android:padding="20dp">
  
        <!--start button-->
        <Button
            android:id="@+id/btVar1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="Start" />
  
        <!--stop button-->
        <Button
            android:id="@+id/btVar2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="Stop" />
  
    </LinearLayout>
  
</RelativeLayout>

Paso 3: trabajar con el archivo MainActivity.java

Cuando un jugador hace clic en el botón Inicio, se llama a la función onClickListener() para ese botón. Dentro de esta función, generaremos un número entero aleatorio del 1 al 10. Este número serán los segundos después de los cuales cambiará el fondo de la pantalla. Para generar el número usaremos la función Random . Después de obtener el número entero, crearemos una clase de controlador y llamaremos a una función ejecutable después de un retraso posterior. La función principal del controlador es programar mensajes y ejecutar. Dentro de la interfaz ejecutable, configuraremos el fondo de la pantalla usando la función setBackgroundResource() . Usaremos System.currentTimeMillis()para obtener la hora actual en milisegundos. Primero, obtendremos la hora del sistema cuando cambie el fondo de la pantalla, y luego obtendremos la hora del sistema cuando se haga clic en el botón de detener. La diferencia entre estos tiempos dará el tiempo de reacción del jugador. MainActivity.java

Java

import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;
  
import androidx.appcompat.app.AppCompatActivity;
  
import java.util.Random;
  
public class MainActivity extends AppCompatActivity {
  
    public Button button1, button2;
    public RelativeLayout relativeLayout;
  
    // runnable function
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
  
            // set the background on the screen
            relativeLayout.setBackgroundResource(R.color.green);
  
            // get the system time in milli second
            // when the screen background is set
            final long time = System.currentTimeMillis();
  
            // function when stop button is clicked
            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // get the system time in milli second
                    // when the stop button is clicked
                    long time1 = System.currentTimeMillis();
  
                    // display reflex time in toast message
                    Toast.makeText(getApplicationContext(), "Your reflexes takes " + (time1 - time) + " time to work", Toast.LENGTH_LONG).show();
  
                    // remove the background again
                    relativeLayout.setBackgroundResource(0);
                }
            });
        }
    };
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        relativeLayout = findViewById(R.id.rlVar1);
        button1 = findViewById(R.id.btVar1);
        button2 = findViewById(R.id.btVar2);
  
        // function when the start button is clicked
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
  
                // generate a random number from 1-10
                Random random = new Random();
                int num = random.nextInt(10);
  
                // call the runnable function after
                // a post delay of num seconds
                Handler handler = new Handler();
                handler.postDelayed(runnable, num * 1000);
            }
        });
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por namanjha10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *