0

8 組のボタン (合計 16 個) があり、sqlite データベースからの用語がいくつか含まれています。ユーザーが 8 ペア (正しいか間違っているかは関係ありません) を接続してゲームを終了する必要があり、最後にポップアップが表示されます。コードに counter<7 を配置すると、8 ペアを接続し、いくつかのボタンをもう一度クリックする必要があります (17 クリック)。counter<6 と入力すると、7 ペアともう 1 回クリック (15 クリック) した後にポップアップが表示されます。そのロジックがわかりません。コードは次のとおりです。

final OnClickListener clickListener = new OnClickListener() {

        private Button buttonClicked;

        public void onClick(View v) {
            if (counter < 7) {
                Button button = (Button) v;
                button.getBackground()
                      .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333));

                if (buttonClicked == null) {
                    // first button is clicked
                    buttonClicked = button;

                    // only do stuff if buttons are in different layouts
                } else {
                    if (!button.getParent().equals(buttonClicked.getParent())) {
                        // second button is clicked

                        if (buttonClicked.getTag().equals(button.getTag())) {

                            // second button is clicked and same tag but different button

                            Toast.makeText(Spojnice.this, "Correct", Toast.LENGTH_SHORT).show();
                            button.getBackground()
                                  .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                            buttonClicked.getBackground().setColorFilter(
                                new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                            buttonClicked.setEnabled(false);
                            button.setEnabled(false);
                            buttonClicked = null;
                            score.setText("Poeni: " + brojPoenaSpojnice);
                            counter++;
                        } else {
                            counter++;
                            //reset LightingColorFilter first
                            button.setEnabled(false);
                            Toast.makeText(Spojnice.this, "Wrong", Toast.LENGTH_SHORT).show();
                            buttonClicked = null;

                        }

                    } else {
                        //same button clicked show message or un toggle?

                        buttonClicked = button;
                    }
                }
            } else {
                Intent i = new Intent(Spojnice.this, Popup_spojnice.class);
                startActivity(i);
                mHandler.postDelayed(mLaunchTask, 6500);
            }
        }

    };
4

1 に答える 1

1

最初にカウンターをチェックしてからインクリメントするため、7 ペアを接続した後、カウンターは 6 になります (それでも 7 未満)。次にカウンターをインクリメントすると7になり、最初の条件はfalseになりますが、次のラウンドでのみ再度チェックされます.

これを解決するには、カウンターをインクリメントする前ではなく、インクリメントしたif (counter < 7)に状態 ( )を確認する必要があります。

于 2013-04-14T04:45:45.330 に答える