如何随机活动?

时间:2013-05-17 06:05:24

标签: android

我正在做儿童游戏,可以说它是IQ儿童测试,我在10个活动中有问题然后当用户启动问题时它会随机调用它将调用1个10当用户按下NEXT问题它将调用1剩余的9个活动。如果再按Next,它将调用剩下的8个活动中的1个。

我该怎么做?

最诚挚的问候,

4 个答案:

答案 0 :(得分:0)

  
      
  1. 创建一个Hashtable / map,其中键为1到10的数字,值为活动名称。

  2.   
  3. 用户下次按下时 - 生成1到10之间的随机数。

  4.   
  5. 使用随机生成的数字作为键,找到活动名称。如果未找到随机数作为密钥 - 再次生成随机数并重复步骤3.

  6.   
  7. 使用活动名称调用开始活动。

  8.   

每次在开始活动中使用键/活动时 - 从哈希表中删除它。

这可能是解决方案之一,但我相信人们会提出更好的解决方案。

答案 1 :(得分:0)

  1. 创建一个数组,只需将值设置为

    array [0] = 1 //表示数组[0]是问题1

    array [1] = 2

    array [9] = 10

  2. 对阵列进行重新考虑(认为它像重新洗牌)

    选择2个不同的索引

    int index_a = Random.nextInt(10);

    int index_b = Random.nextInt(10);

  3. 使用array_index [b]
  4. 交换数组[index_a]内的值
  5. 重复2次和3次。
  6. 你得到一个随机的数组序列。
  7. 根据数组创建活动显示问题。
  8. 创建一个按钮,单击该按钮将替换同一活动中的问题。

    注意:不要为每个问题创建活动!

答案 2 :(得分:0)

你真的需要10项活动吗?恕我直言 - > NO

  

你只需保留一个活动,并根据你可能有的   针对不同测验的不同屏幕设计,然后您可以创建   基于随机选择特定数字的各种布局。

现在问题变成了,我如何得到这个随机数。

How to generate random within a range

假设您有10个不同的测验可能最终会增加,因此您可以使用好的Data StructureCollection。对于您的用例,我会推荐Arraylist HashMaps

Arraylist计数会告诉我们有多少测试,Hashmap将包含问号编号为key,而value将包含其他数据。它可能不够优化,但它只适合你。

答案 3 :(得分:0)

我为三个活动创建了一个演示,您可以自定义50个活动。

activity_main.xml中

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="main" />

<Button
    android:id="@+id/btn_next"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:text="Next" />

<Button
    android:id="@+id/btn_random"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginLeft="29dp"
    android:layout_marginTop="70dp"
    android:text="Random" />

one.xml

     

 <TextView
     android:id="@+id/btn_random"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="74dp"
     android:layout_marginTop="26dp"
     android:text="One" />

two.xml

<TextView

     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="74dp"
     android:layout_marginTop="26dp"
     android:text="Two" />
 <Button
     android:id="@+id/btn_random"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_alignParentRight="true"
     android:text="Next" />

three.xml

   

     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="74dp"
     android:layout_marginTop="26dp"
     android:text="Three" />

 <Button 
     android:id="@+id/btn_random"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Next" />

MainActivity.java

public class MainActivity extends Activity implements OnClickListener {
    public static List<Integer> numberList =new ArrayList<Integer>();
    private Button btn_Random,btn_Next;
    public static int countNext=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);
        btn_Next =(Button) findViewById(R.id.btn_next);
        btn_Random.setOnClickListener(this);


        btn_Next.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:

            findRandom();

            break;
        case R.id.btn_next:
            countNext=0;

            System.out.println("first value of array:"+numberList.get(countNext));
            if(numberList.get(countNext)==1){
                countNext++;
                startActivity(new Intent(MainActivity.this,OneActivity.class));
            }else if (numberList.get(countNext) == 2) {
                countNext++;
                startActivity(new Intent(MainActivity.this,TwoActivity.class));
            }else if (numberList.get(countNext) ==3) {
                countNext++;
                startActivity(new Intent(MainActivity.this,ThreeActivity.class));           
            }




            break;
        default:
            break;
        }

    }

    private void findRandom() {
        numberList.clear();
        for(int i=0;i<3;i++){
            numberList.add(i+1);
        }

        long seed = System.nanoTime();
        Collections.shuffle(numberList, new Random(seed));
        Collections.shuffle(numberList, new Random(seed));


        for (int no : numberList) {
            System.out.println("random number:"+no);
        }

    }

}

OneActivity.java

package com.project.ques;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class OneActivity extends Activity implements OnClickListener{
    public static List<Integer> numberList =new ArrayList<Integer>();
    private Button btn_Random;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);

        btn_Random.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:

            System.out.println("first value of array:"+MainActivity.numberList.get(MainActivity.countNext));
            if(MainActivity.numberList.get(MainActivity.countNext)==1){
                MainActivity.countNext++;
                startActivity(new Intent(OneActivity.this,OneActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) == 2) {
                MainActivity.countNext++;
                startActivity(new Intent(OneActivity.this,TwoActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) ==3) {
                MainActivity.countNext++;
                startActivity(new Intent(OneActivity.this,ThreeActivity.class));            
            }



            break;

        default:
            break;
        }

    }



}

TwoActivity.java

package com.project.ques;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TwoActivity extends Activity implements OnClickListener{

    private Button btn_Random;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.two);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);

        btn_Random.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:


            System.out.println("first value of array:"+MainActivity.numberList.get(MainActivity.countNext));
            if(MainActivity.numberList.get(MainActivity.countNext)==1){
                MainActivity.countNext++;
                startActivity(new Intent(TwoActivity.this,OneActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) == 2) {
                MainActivity.countNext++;
                startActivity(new Intent(TwoActivity.this,TwoActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) ==3) {
                MainActivity.countNext++;
                startActivity(new Intent(TwoActivity.this,ThreeActivity.class));            
            }



            break;

        default:
            break;
        }

    }



}

ThreeActivity.java

package com.project.ques;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ThreeActivity extends Activity implements OnClickListener{

    private Button btn_Random;
    public static int countNext=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.three);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);

        btn_Random.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:


            System.out.println("first value of array:"+MainActivity.numberList.get(countNext));
            if(MainActivity.numberList.get(countNext)==1){
                MainActivity.countNext++;
                startActivity(new Intent(ThreeActivity.this,OneActivity.class));
            }else if (MainActivity.numberList.get(countNext) == 2) {
                MainActivity.countNext++;
                startActivity(new Intent(ThreeActivity.this,TwoActivity.class));
            }else if (MainActivity.numberList.get(countNext) ==3) {
                MainActivity.countNext++;
                startActivity(new Intent(ThreeActivity.this,ThreeActivity.class));          
            }

            countNext++;
            break;

        default:
            break;
        }

    }



}

的AndroidManifest.xml

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.project.ques.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="OneActivity"></activity>
    <activity android:name="TwoActivity"></activity>
    <activity android:name="ThreeActivity"></activity>
</application>