2016-11-18 3 views
1

以下のコードは私の「安全な」プログラムの一部です。私は4つの "推測"をする必要があります(パスワードは4つの数字で構成されています)。それぞれの推測について、私はいくつかのifステートメントを使用しますが、各「推測」のための方法を作る方法があるかどうか疑問に思っていました。このように、if文のこれらの4つのセクションの代わりに、私はただ1つのメソッドしか持たないでしょう。Arduinoメソッドの作成

if (turn == 1) { 

    if ((buttonState != lastButtonState) && buttonState == 1) { 
     guess1 = newValue; 
     turn = 2; 
     Printer(); 
    } 
    lastButtonState = buttonState; 
    } 
    if (turn == 2) { 
    if ((buttonState != lastButtonState) && buttonState == 1) { 
     guess2 = newValue; 
     turn = 3; 
     Printer(); 
    } 
    lastButtonState = buttonState; 
    } 

    if (turn == 3) { 
    if ((buttonState != lastButtonState) && buttonState == 1) { 
     guess3 = newValue; 
     turn = 4; 
     Printer(); 
    } 
    lastButtonState = buttonState; 
    } 

    if (turn == 4) { 
    if ((buttonState != lastButtonState) && buttonState == 1) { 
     gok4 = nieuwewaarde; 
     beurt = 5; 
     Printer(); 
    } 
    lastButtonState = buttonState; 
    } 
+1

ArduinoはC++を使用しているので、Cタグを削除しました。あなたの問題については、はい、共通のコードを別の機能に分解することは可能です。私は実際にそれをお勧めします。それが機能するには、私はあなたに[良い初心者の本を見つける](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を提案し、関数について少し読んでください。引数*を参照渡しについても*。 –

答えて

0

理論的には、このようなものに縮小することが可能です。一連のguess1、guess2、...の代わりに配列を使用する必要があることに注意してください。

int guess[4]; 

if ((buttonState != lastButtonState) && buttonState == 1) { 
    guess[turn-1] = newValue; 
    if (turn == 4) 
    { 
     gok4 = nieuwewaarde; 
     beurt = 5; 
    } 
    else 
     turn = turn+1; 
    Printer(); 
} 
lastButtonState = buttonState; 

あなたは0から順番に数えしかし、あなたが達成したいものの広い視野で物事を書くための他の方法があるかもしれない場合は、+ 1/-1を調整することができます。

さらに、ArduinoコードはC++ではなくAVRです。 「ユーザー」コードは「処理」です。

関連する問題