【解決方法】いくつかのバグを修正するにはどうすればよいですか:


プレイヤーが勝つたびに勝者を追跡したいのですが、numofwins変数がインクリメントされ続けません。
また、ゲームのプレイ中にすべてのキャッシュ変数が減少することはありません

else
                {


                    cash = cash - 1;
                    num1 = RndNumber.Next(0, 7);
                    num2 = RndNumber.Next(0, 7);
                    num3 = RndNumber.Next(0, 7);

                    btnOne.Text = num1.ToString();
                    btnTwo.Text = num2.ToString();
                    btnThree.Text = num3.ToString();

                    if ((btnOne.Text == btnTwo.Text) && (btnTwo.Text == btnThree.Text))
                    {
                        cash++;
                        numofWins++;
                        textBox1.Text = numofWins.ToString();
                        MessageBox.Show("Congrats! you win");
                        return;
                    }
                }

私が試したこと:

デバッグを試みると、変数の変更が表示されますが、テキストボックスまたはラベルボックスで更新されません。

解決策 1

場所にもよるだろうけど nomofWins 宣言されます:
1) それがローカル変数である場合、つまりメソッド本体内で定義されている場合、メソッドはインクリメント直後に終了するため、変数は破棄され、次にメソッドが呼び出されたときに再作成されます。 範囲外になると値を保持できなくなります。
2) メソッドのパラメータである場合、デフォルトでは値によって渡されます。つまり、メソッド内で行われた変更は、渡された元の変数には反映されません。

これを修正する方法はありますが、コードが実行される環境など、多くの要因に依存します。たとえば、Web ベースの解決策は WinForms の解決策とは異なります。

したがって、それが宣言されている場所を見つけることから始めて、変数の有効期間が何であるかを調べます。 その後、値を維持するために修正することを検討できます。

コメント

タイトルとURLをコピーしました