我正在做儿童游戏,可以说它是IQ儿童测试,我在10个活动中有问题然后当用户启动问题时它会随机调用它将调用1个10当用户按下NEXT问题它将调用1剩余的9个活动。如果再按Next,它将调用剩下的8个活动中的1个。
我该怎么做?
最诚挚的问候,
答案 0 :(得分:0)
创建一个Hashtable / map,其中键为1到10的数字,值为活动名称。
用户下次按下时 - 生成1到10之间的随机数。
使用随机生成的数字作为键,找到活动名称。如果未找到随机数作为密钥 - 再次生成随机数并重复步骤3.
- 醇>
使用活动名称调用开始活动。
每次在开始活动中使用键/活动时 - 从哈希表中删除它。
这可能是解决方案之一,但我相信人们会提出更好的解决方案。
答案 1 :(得分:0)
创建一个数组,只需将值设置为
array [0] = 1 //表示数组[0]是问题1
array [1] = 2
array [9] = 10
对阵列进行重新考虑(认为它像重新洗牌)
选择2个不同的索引
int index_a = Random.nextInt(10);
int index_b = Random.nextInt(10);
创建一个按钮,单击该按钮将替换同一活动中的问题。
注意:不要为每个问题创建活动!
答案 2 :(得分:0)
你真的需要10项活动吗?恕我直言 - > NO 强>
你只需保留一个活动,并根据你可能有的 针对不同测验的不同屏幕设计,然后您可以创建 基于随机选择特定数字的各种布局。
现在问题变成了,我如何得到这个随机数。
How to generate random within a range
假设您有10个不同的测验可能最终会增加,因此您可以使用好的Data Structure
或Collection
。对于您的用例,我会推荐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>