Как заставить мое приложение для Android генерировать случайное число? - PullRequest
5 голосов
/ 10 марта 2011

Я новичок в Java и создании приложений для Android. Как создать Java-программу, которая бросает несколько кубиков в зависимости от того, что ввел пользователь?

Java-программа, которую я создал, бросает только одну кость.

Как заставить Java случайным образом переходить с одного на шесть?

Как заставить Java создавать случайные числа в зависимости от того, сколько раз пользователь хочет?

Наконец, как заставить Java рисовать изображение на основе числа, введенного пользователем?

Вот как выглядит мое приложение.

Действительный XHTML http://img852.imageshack.us/img852/4439/screenshotjavawarhammer.png.

Вот мой код

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()));
           }});

    }

}

Мой 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>

Ответы [ 2 ]

14 голосов
/ 10 марта 2011

Как насчет Random.nextInt()?

Использование:

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

С точки зрения обновления изображения, выберите 6 разных изображений, которые вы хотите отобразить (одинакового размера), и используйте switch для выбора между myImageView.setImageResource(R.drawable.dice_n).

1 голос
/ 10 марта 2011

Используйте Random объект с long семенами (System.currentTimeMillis() - хороший). Затем вызовите метод nextInt(int n) для вашего объекта и передайте размер кристалла. (Помните, что диапазон nextInt(int n) начинается с 0, поэтому вам нужно будет указать размер кристалла, а затем добавить 1 к полученному броску).

Причина появления long заключается в улучшении (псевдо) случайности распределения чисел.

Вы, вероятно, должны объявить размер кристалла как константу, если вы этого еще не сделали. Javadoc в случайном порядке здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...