2017-02-11 7 views
0

Ich habe mit diesem Code vor, aber das ist eine andere Frage.Android-App mit zufälliger Nummer die gleiche

Wenn die Schaltfläche "raten" gedrückt wird, wird eine Zufallszahl generiert. Das einzige Problem mit dem Code besteht darin, dass er jedes Mal eine neue Nummer generiert, unabhängig davon, ob der Benutzer die richtige Nummer errät oder nicht. Idealerweise möchte ich dem Nutzer ein 3-Raten-Limit geben, bei dem die App die generierte Zufallszahl gleich behalten und nach 3 Fehlversuchen zurücksetzen muss. Ich bin zum Stillstand gekommen, da ich seit langem kein Java mehr gemacht habe und es mich etwas verwirrt, was die Integration in diese App betrifft.

Vielen Dank im Voraus

package lab.mad.cct.c3375331task1; 

import android.content.DialogInterface; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v7.app.AlertDialog; 
import  android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.util.Random; 

public class Task1Activity extends  AppCompatActivity { 

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

     final TextView textResponse = (TextView)    findViewById(R.id.txtResponse); 
     final TextView guessText = (TextView) findViewById(R.id.txtAnswer); 
     final EditText userGuess = (EditText) findViewById(R.id.etNumber); 

     Button pressMe = (Button) findViewById(R.id.btnGuess); 



    // When the button is clicked, it shows the text assigned to the txtResponse TextView box 
     pressMe.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String randText = ""; 
       Random randGen = new Random(); 
       int ranNum = randGen.nextInt(5); 
       int userNumber =  Integer.parseInt(userGuess.getText().to String()); 
       int attempts = 0; 


       if (userNumber >19) { 
       guessText.setText("Please guess between 0 and 20"); 
       } else if (userNumber == ranNum) { 
        guessText.setText("You got it!"); 
       } else if (userNumber < ranNum) { 
        guessText.setText("Your answer is too low. Guess  again!"); 
        guessText.setBackgroundColor(Color.RED); 
       } else if (userNumber > ranNum) { 
        guessText.setText("Your answer is too high. Guess again!"); 
       } 

       randText = Integer.toString(ranNum); 
       textResponse.setText(""); 

       userGuess.setText(""); 

      } 
     }); 

    } 



} 
+0

Wählen Sie keinen 'new Random()' innerhalb der Schleife. Es setzt die Sequenz jedes Mal auf denselben Punkt zurück. –

Antwort

0

int userNumber = Integer.parseInt(userGuess.getText().to String()); von onClick(View v) entfernen, weil jedes Mal guessme Taste gedrückt wird, wird die neue Nummer generieren.

+0

Wörtlich nur das entfernen und es wird die gleiche Nummer behalten? –

+0

Wenn ich diese Zeile herausnehme, macht es meine if-else-Anweisungen nicht mehr gültig –

0

erklären einige Variablen in der Klasse

public static final int ATTEMPTS = 3; 
public int attempt = 0; 
public int currentRandomNumber = new Random().nextInt(5); 

innerhalb onClick();

if(attempt >= ATTEMPTS){ 
    attempt = 0; 
    currentRandomNumber = new Random().nextInt(5); 
} else { 
    attempt++; 
} 

// the rest of your code.. 

auch, Sie verwenden rand..nextInt (5), sondern durch die Blicke des Codes sollten Sie ..nextInt werden (20)

+0

Oh lol ich habe es zu Testzwecken auf 5 geändert. Es wird 20 sein, wenn ich glücklich bin, dass es funktioniert. Danke für den Rest des Codes. Ich werde es einen Wirbel geben und Sie wissen lassen –

Verwandte Themen