Разные цифры на кнопках - PullRequest
       1

Разные цифры на кнопках

0 голосов
/ 29 февраля 2020

Я начинающий программист на 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();
}

введите описание изображения здесь

Если это поможет, тогда весь код активности приведен ниже. Пожалуйста ,,,

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;

    }



}

1 Ответ

0 голосов
/ 29 февраля 2020

Я думаю, что самый простой и быстрый способ - перетасовывать участников W1 / Wyb1 каждый раз, когда вы задаете новый вопрос.

В настоящее время вы настраиваете их один раз в начале OnCreate. Просто напишите другую функцию, которая переназначит эти поля Random способом непосредственно перед вашей первой строкой в ​​run(), или, если быть более точным, перед W1.setText(String.valueOf(c));

Ниже приведен псевдокод (I ' Я пишу это в поле редактирования), которое должно доказать (или нет), если этот подход будет соответствовать вашим потребностям.

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...