建议在Android中重复Simon Says游戏的循环
我想创建一个Simon Says游戏来提高我的编程技能,这比我想象的要难。最初我决定最多有50个级别,所以我在1-4之间生成50个随机数并将它们存储在一个数组中,我在控制台中测试了这一点:建议在Android中重复Simon Says游戏的循环,android,Android,我想创建一个Simon Says游戏来提高我的编程技能,这比我想象的要难。最初我决定最多有50个级别,所以我在1-4之间生成50个随机数并将它们存储在一个数组中,我在控制台中测试了这一点: for(int i = 0; i <50; i++){ random = randomGenerator.nextInt(4)+1; array[i] = random; System.out.println(Integer.toString(i)
for(int i = 0; i <50; i++){
random = randomGenerator.nextInt(4)+1;
array[i] = random;
System.out.println(Integer.toString(i)+" " + Integer.toString(array[i]));
}
我来Stackoverflow是因为我通常解决编程问题的方法通常很长,而且效率很低。我需要你有经验的程序员就如何解决这个问题提供建议,当你给我一个解决方案,或者解决方案的一部分时,我想知道你是如何到达那里的,这样我就可以学到比现在更好的方法
我在考虑为50个级别中的每一个创建一个方法,并在代码中运行每一个级别,并在for循环中调用它50次,这不是一个好的解决方案,但到目前为止,我能想到的唯一方法是这样做。非常感谢您的建议。像这样的状态机会导致代码曲解,我相信这就是您所看到的 考虑删除循环,而是使用用户/系统输入事件触发“播放”代码:按钮按下和活动的生命周期回调。您将能够删除所有标志检查代码
另外,考虑使用单独的类——对象取向来实现每个“指令”和“正确输入”。这将允许您的代码具有更高的可伸缩性,同时限制代码膨胀,避免添加新的交互。您可以看到您的示例中switch语句是否占用了很多行。想象一下,只需在“响应”集合上迭代,直到找到与用户所做操作匹配的结果
您将注意到缺少提供的代码示例。作为一种学习经验,我的建议的实施是一个很好的实验,示例可能会限制所教的课程。谢谢你的回答,我读了它,花了很多时间试图找出一种方法来做到这一点,但我有点迷路了。问题是,虽然你的回答很有道理,但我能在脑海中明白为什么这样做是最好的方式,我只是缺乏迄今为止这样做的经验。非常感谢。我用一个小图表编辑了我的答案,艾米给了我更多的解释谢谢你,你提供了我所要求的,关于如何设计和开发我的应用程序的建议!我将以此为基础!
public void play(){
for(int i =ii; i<50; i++){
if(b1bool==false){
if(array[i] == 1){
//Set button to Blue
b1.setBackgroundColor(0xFF0000FF);
}
else if(array[i] == 2){
//SEt button to Yellow
b2.setBackgroundColor(0xFFFFFF00);
}
else if(array[i] == 3){
//SEt button to Red
b3.setBackgroundColor(0xFFFF0000);
}
else if(array[i] == 4){
//SEt button to Green
b4.setBackgroundColor(0xFF00FF00);
}
b1bool = true;
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
b1.setBackgroundColor(0xffffffff);
b2.setBackgroundColor(0xffffffff);
b3.setBackgroundColor(0xffffffff);
b4.setBackgroundColor(0xffffffff);
b1bool=false;
ii++;
play();
break;
case R.id.button2:
if(b2bool == true)
{
}
break;
case R.id.button3:
if(b3bool == true)
{
}
break;
case R.id.button4:
if(b4bool == true)
{
}
break;
}
}