random - 随机下一个活动按钮
问题描述
我对编码真的很陌生。因此,如果我解释不好或犯了愚蠢的错误,请告诉我,这样我才能变得更好。
无论如何。我正在创建一个游戏,我的目的是让一个按钮打开一个随机活动。像这样:activity1 -> activity5 -> activity4 ->activity 18 等等。无需打开已玩过的相同活动。但现在我的问题是我有 20 个活动,但有时在我的应用显示“游戏结束”之前它只出现 12 个。我怎样才能确保它总是会加载最大活动?谢谢。
我的代码是这样工作的:
Mainactivity.class
int r = new Random().nextInt(activitylist.size());
Class activity = activitylist.remove(r);
switch (r) {
case 1:
activity = defransman.class;
activitylist.remove(defransman.class);
break;
case 2:
activity = crazycaps.class;
activitylist.remove(crazycaps.class);
break;
case 3:
activity = max.class;
activitylist.remove(max.class);
break;
case 4:
activity = michael.class;
activitylist.remove(michael.class);
break;
case 5:
activity = youngest.class;
activitylist.remove(youngest.class);
break;
case 6:
activity = driverlincense.class;
activitylist.remove(driverlincense.class);
break;
}
Intent startgame = new Intent(getBaseContext(), activity);
startgame.putExtra("ACTIVITY_LIST", activitylist);
startActivity(startgame);
}
});
}
}
活动2.类:
公共类 bestclothes 扩展 AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bestclothes);
Button nextpage = findViewById(R.id.BTBesteKleren);
nextpage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<Class> aktivitet = new ArrayList<>();
Bundle extras = getIntent().getExtras();
aktivitet = (ArrayList<Class>) extras.get("ACTIVITY_LIST");
if (aktivitet.size() ==0) {
Toast.makeText(bestclothes.this, "Game over", Toast.LENGTH_SHORT).show();
} else {
int r = new Random().nextInt(aktivitet.size());
Class activity = aktivitet.remove(r);
switch (r) {
case 1:
activity = aktivitet.get(0);
aktivitet.remove(0);
break;
case 2:
activity = aktivitet.get(1);
aktivitet.remove(1);
break;
case 3:
activity = aktivitet.get(2);
aktivitet.remove(2);
break;
case 4:
activity = aktivitet.get(3);
aktivitet.remove(3);
break;
case 5:
activity = aktivitet.get(4);
aktivitet.remove(4);
break;
case 6:
activity = aktivitet.get(5);
aktivitet.remove(5);
break;
}
Intent intent = new Intent(getBaseContext(), activity);
intent.putExtra("ACTIVITY_LIST", aktivitet);
startActivity(intent);
等等。我
解决方案
停止从列表中删除活动,就像您在每个切换案例中所做的那样。
取而代之的是,将每个打开的活动的位置保存在某个 arraylist 中,然后检查 arraylist 是否包含用户已经使用打开的任何位置arrayList.contains(position)
。
如果 arraylist 包含以前访问过的活动位置,它将返回 true。如果 arraylist 包含该位置,则在同一范围内再次生成一个随机数。
将此逻辑放在所有切换案例中,您只会获得以前未打开的活动。:)
推荐阅读
- apache - 如果抑制文件结尾,是否需要重定向?
- pdf - 从pdf中删除包括边框的表格数据
- elasticsearch - 碎片作为一个展示
- java - 无法在模拟器中运行工作 apk:InflateException:二进制 XML 文件第 12 行:二进制 XML 文件第 2 行:膨胀类错误
- python - 如何在启动前添加启动参数以存储变量
- facebook - 抓取公开的 Facebook 帖子
- android - 访问 OnKeyListener 内部类中的数组
- spring-boot - 在 Spring Boot 中-您可以在不进行任何解析/干预的情况下进行接收整个消息正文的请求映射吗?
- jsf - 如何手动将 HTTP 请求转发到默认 Faces Servlet
- javascript -