2011-03-09 6 views
5

Soy nuevo en Java y en las aplicaciones de Android. ¿Cómo se hace un programa Java que rueda una cantidad de dados en función de lo que ingresó el usuario?¿Cómo hago que mi aplicación para Android genere un número aleatorio?

El programa Java que creé solo tira un dado.

¿Cómo logras que Java se desplace al azar de una a seis?

¿Cómo consigues que Java haga números al azar según el número de veces que el usuario quiere?

Por último, ¿cómo hace que Java dibuje una imagen basada en el número que el usuario ingresó?

Aquí cómo se ve mi aplicación.

Valid XHTML http://img852.imageshack.us/img852/4439/screenshotjavawarhammer.png.

Aquí está mi código

package com.warhammerdicerrolleralpha; 

import java.util.Random; 


import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class myMain extends Activity 
{ 
    /** Called when the activity is first created. 
    * @return */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 



    final Random myRandom = new Random(6); 



    Button buttonGenerate = (Button)findViewById(R.id.button1); 
    final TextView textGenerateNumber = (TextView)findViewById(R.id.text4); 




    buttonGenerate.setOnClickListener(new OnClickListener() 
    { 

      @Override 
      public void onClick(View v) 
      { 
      // TODO Auto-generated method stub 
      textGenerateNumber.setText(String.valueOf(myRandom.nextInt())); 
      }}); 

    } 

} 

Mi archivo xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:padding="5dip" android:background="@drawable/warhammerdicerollalpha" 
    android:layout_height="fill_parent"> 


    <TextView android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:text="@string/hello" /> 
    <EditText android:layout_height="wrap_content" 
     android:layout_width="match_parent" android:id="@+id/enternumberofdice"></EditText> 
    <Button android:text="Button" android:id="@+id/button1" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
    <TextView android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:id="@+id/generatenumber" /> 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="LOL" android:id="@+id/text4"></TextView> 

</LinearLayout> 
+4

Si fuera viernes, volvería a etiquetar esta pregunta 'space-marine'. –

+0

¿Qué quiere decir con "lanzar un dado"? No veo ningún dado aquí. – gigadot

+0

Estoy tratando de obtener mi todo para rodar un número entre uno y seis. ¿¿Cómo haces eso?? – lonesarah

Respuesta

14

¿Qué tal Random.nextInt()?

Uso:

final Random rand = new Random(); 
int diceRoll = rand.nextInt(6) + 1; // uniformly distributed int from 1 to 6 

En cuanto a la actualización de una imagen, tiene las 6 imágenes diferentes que desea mostrar (todas del mismo tamaño) y utilizar un switch para seleccionar entre diferentes myImageView.setImageResource(R.drawable.dice_n).

+0

Obtengo No puedo hacer referencia a una variable no final myRandom dentro de una clase interna definida en un método diferente – lonesarah

+0

nextInt (5) genera números aleatorios de 0 (incluido) a 5 (excluido). Entonces deberás usar nextInt (6) +1 – Maaalte

+0

Gracias Maaalte, lo he arreglado ahora. – fredley

0

con un objeto Random con una semilla long (System.currentTimeMillis() es una buena). Luego llame al método nextInt(int n) desde su objeto y pase el tamaño del dado. (Recuerde que el rango de nextInt(int n) comienza en 0, por lo que querrá pasar el tamaño del troquel y luego agregar 1 al rollo resultante).

El motivo de la semilla long es mejorar la (pseudo) aleatoriedad de la distribución de números.

Probablemente deberías declarar el tamaño del dado como una constante, si no lo has hecho aún. Javadoc en Random here.

Cuestiones relacionadas