【问题标题】:Different numbers on buttons按钮上的不同数字
【发布时间】:2020-02-29 11:46:03
【问题描述】:

我是一名 Android 初学者,我创建了自己的游戏,该游戏使用随机生成的数字相加。玩家的任务是通过选择 3 个给定的数字相加来猜测结果,其中是真实的结果。一切正常,但我希望每一轮的正确结果都在另一个按钮上,这样玩家就不会意识到正确的结果在按钮 1 上,而按钮 2 和 3 是错误的。有问题的代码:

private void startTimerThread() {
    final Handler handler = new Handler();
    los();
    proba.setText("dodawanie");
    c = Dodawanie(a, b);
    Random liczba = new Random();
    h = liczba.nextInt(5);
    Toast.makeText(getApplicationContext(), String.valueOf(c), Toast.LENGTH_LONG).show();
    Runnable runnable = new Runnable() {
        public void run() {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            handler.post(new Runnable() {
                public void run() {
                    W1.setText(String.valueOf(c));
                    Wyb1.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            p++;
                            l.setText(String.valueOf(p));
                            startTimerThread();

                        }
                    });
                    W2.setText(String.valueOf(l1));
                    Wyb2.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
                        }
                    });
                    W3.setText(String.valueOf(l2));
                    Wyb3.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
                        }
                    });
                }
            });

        }
    };
    new Thread(runnable).start();
}

enter image description here

如果这有帮助,那么整个活动代码如下。请,,,

public class GameSingleActivity extends AppCompatActivity {

    TextView proba,Dz,W1,W2,W3,l;
    private int a,b,c,l1,l2,p=0,h;
    ImageButton Wyb1,Wyb2,Wyb3;
    ProgressBar mProgressBar;
    boolean running = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game_single);

        proba = findViewById(R.id.textView12);
        Dz = findViewById(R.id.Dzialanie);
        W1 = findViewById(R.id.Wpozycja1);
        W2 = findViewById(R.id.Wpozycja2);
        W3 = findViewById(R.id.Wpozycja3);
        l = findViewById(R.id.Level);
        Wyb1 = findViewById(R.id.imageButton11);
        Wyb2 = findViewById(R.id.imageButton12);
        Wyb3 = findViewById(R.id.imageButton13);
        mProgressBar=findViewById(R.id.progressBar);
        l.setText("0");



        if (getIntent().getExtras()!=null) {
            int buttonPressed = getIntent().getExtras().getInt(MenuGameActivity.INTENT_KEY);

            if (buttonPressed == MenuGameActivity.FIRST_OPTION) {
                // first button is clicked
                proba.setText("dodawanie");
                startTimerThread();

            } else if (buttonPressed == MenuGameActivity.SECOND_OPTION) {
                //second button is clicked
                proba.setText("odejmowanie");
            } else if (buttonPressed == MenuGameActivity.THIRD_OPTION) {
                //second button is clicked
                proba.setText("odejmowanie");
            }else if (buttonPressed == MenuGameActivity.FOURTH_OPTION) {
                //second button is clicked
                proba.setText("odejmowanie");
            }else if (buttonPressed == MenuGameActivity.FIFTH_OPTION) {
                //second button is clicked
                proba.setText("odejmowanie");
            }else if (buttonPressed == MenuGameActivity.SIXTH_OPTION) {
                //second button is clicked
                proba.setText("odejmowanie");
            }

        }
    }



        ///////////////////////////////////////////

        private void startTimerThread() {
            final Handler handler = new Handler();
            los();
            proba.setText("dodawanie");
            c = Dodawanie(a, b);
            Random liczba = new Random();
            h = liczba.nextInt(5);
            Toast.makeText(getApplicationContext(), String.valueOf(c), Toast.LENGTH_LONG).show();
            Runnable runnable = new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    handler.post(new Runnable() {
                        public void run() {
                            W1.setText(String.valueOf(c));
                            Wyb1.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    p++;
                                    l.setText(String.valueOf(p));
                                    startTimerThread();

                                }
                            });
                            W2.setText(String.valueOf(l1));
                            Wyb2.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
                                }
                            });
                            W3.setText(String.valueOf(l2));
                            Wyb3.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
                                }
                            });
                        }
                    });

                }
            };
            new Thread(runnable).start();
        }


    public int Dodawanie(int a,int b)
    {
        String A = String.valueOf(a);
        String B = String.valueOf(b);
        Dz.setText(A+" + "+B);
        return a + b;
    }
    public void los()
    {
        Random liczba = new Random();
        a = liczba.nextInt(101);
        b = liczba.nextInt(101);
        l1= liczba.nextInt(101)+30;
        l2= liczba.nextInt(101)+30;

    }



}

【问题讨论】:

  • 如果您可以更深入地了解您正在做什么以及您的代码出了什么问题,那么任何人都可以更轻松地帮助您。
  • 我有 3 个按钮,其中包含三个添加一些随机数的结果,现在我已经设置,以便在我设置的第一个按钮上,它始终具有添加按钮 2 和 3 的真实结果是假的。我想改进我的代码,以便正确的结果出现在按钮 2 或 3 上。这样正确的答案并不总是出现在按钮 1 上,而且每轮都出现在其他按钮上

标签: java android random


【解决方案1】:

我认为最简单、最快捷的方法是在您每次提出新问题时对您的 W1/Wyb1 成员进行洗牌。

目前您在OnCreate 的开头设置了一次。只需编写另一个函数,它将在 run() 的第一行之前以 Random 的方式重新分配这些字段,或者更准确地说 - 在 W1.setText(String.valueOf(c)); 之前

下面是一个伪代码(我在编辑框中编写),应该证明(或不)这种方法是否适合您的需要。

void Shuffle() {
    switch(new Random().nextInt(3)) {
    case 0:
        W1 = findViewById(R.id.Wpozycja1);
        W2 = findViewById(R.id.Wpozycja2);
        W3 = findViewById(R.id.Wpozycja3);

        Wyb1 = findViewById(R.id.imageButton11);
        Wyb2 = findViewById(R.id.imageButton12);
        Wyb3 = findViewById(R.id.imageButton13);
        break;
    case 1:
        W2 = findViewById(R.id.Wpozycja1);
        W1 = findViewById(R.id.Wpozycja2);
        W3 = findViewById(R.id.Wpozycja3);

        Wyb2 = findViewById(R.id.imageButton11);
        Wyb1 = findViewById(R.id.imageButton12);
        Wyb3 = findViewById(R.id.imageButton13);
        break;
    case 2:
        W3 = findViewById(R.id.Wpozycja1);
        W2 = findViewById(R.id.Wpozycja2);
        W1 = findViewById(R.id.Wpozycja3);

        Wyb3 = findViewById(R.id.imageButton11);
        Wyb2 = findViewById(R.id.imageButton12);
        Wyb1 = findViewById(R.id.imageButton13);
        break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多