Ich schrieb ein einfaches Kartenspiel Pairs. Grundsätzlich wählt der Spieler 2 Karten 1 auf einmal und sieht, ob sie übereinstimmen. Wenn sie übereinstimmen, bleiben die 2 gewählten Karten offen, wenn sie nicht übereinstimmen, werden die 2 gewählten Karten wieder in die verdeckte Position zurückgesetzt. Jetzt möchte ich das Spiel automatisch gespielt werden, wenn es ein bekanntes Paar gibt, spiele das Paar; Wenn es eine bekannte Karte gibt, die mit der ersten zufällig ausgewählten Karte übereinstimmt, klappen Sie diese Karte um. Sonst Flip zufällig. Ich erhalte den Fehler variable might not have been initialized
Java-Fehlervariable wurde möglicherweise nicht initialisiert
PlayCard.java:133: error: variable Num1 might not have been initialized
g.flip(Num1);
^
PlayCard.java:143: error: variable Num1 might not have been initialized
if (g.cardArray[i].value == g.cardArray[Num1-1].value){
^
PlayCard.java:152: error: variable Num1 might not have been initialized
}while (Num2 == Num1 || g.cardArray[Num2-1].flipped == true);
^
PlayCard.java:155: error: variable Num2 might not have been initialized
g.flip(Num2);
^
PlayCard.java:164: error: variable Num1 might not have been initialized
g.cardArray[Num1-1].flipped = false;
^
PlayCard.java:166: error: variable Num2 might not have been initialized
g.cardArray[Num2-1].flipped = false;
^
6 errors
Hier ist mein Code für diese spezielle Methode ...
public static int playGood(MatchCardGame g){
int gameSize = g.n;
long seed = System.currentTimeMillis();
Random rand = new Random(seed);
int Num1, Num2;
while (!g.gameOver()){
// during even number of flipCounts
if (g.getFlips()%2 == 0){
// if there's a known pair, flip the pair
for (Card card : g.cardArray){
if (card.valueKnown == true){
for (int i = 0; i < gameSize; i++){
if (g.cardArray[i] == g.cardArray[i+1]){
Num1 = i;
Num2 = i + 1;
}else{
for (int j = i+2; j < gameSize-2; j++){
if (g.cardArray[i] == g.cardArray[j]){
Num1 = i;
Num2 = j;
}
}
}
}
}else{
// if no pair, flip a random valid card
do{
Num1 = rand.nextInt(gameSize)+1;
}while (g.cardArray[Num1-1].flipped == true);
}
}
g.flip(Num1);
}
// during odd number of flipCounts
if (g.getFlips()%2 != 0){
// if there's a known value matches the first card, flip that card
for (Card card : g.cardArray){
if (card.valueKnown == true){
for (int i = 0; i < gameSize; i++){
if (g.cardArray[i].value == g.cardArray[Num1-1].value){
Num2 = i;
}
}
}else{
// if no known value matches card1, flip a random card
do {
Num2 = rand.nextInt(gameSize)+1;
}while (Num2 == Num1 || g.cardArray[Num2-1].flipped == true);
}
}
g.flip(Num2);
}
// compare two cards, if match, cards remain flipped
g.wasMatch();
if (g.wasMatch() == true){}else{
// if mismatch, cards revert back to unflipped, and store the value as known
g.flipMismatch();
g.cardArray[Num1-1].flipped = false;
g.cardArray[Num1-1].valueKnown = true;
g.cardArray[Num2-1].flipped = false;
g.cardArray[Num2-1].valueKnown = true;
}
}
return g.getFlips();
}
'int Num1 = 0 verwendet wird; int Num2 = 0; 'Versuchen Sie mit diesem – Gatusko
lokalen Variablen in Java (zB: 'int Num1;') sollte vor der Verwendung initialisiert werden. Sie haben keinen Standardwert/Müllwert wie andere Programmiersprachen möglicherweise –
initialisieren Sie Ihre 'num1' und' num2' auf '0', bevor Sie sie in Ihrer' while (! g.gameOver()) 'Schleife verwenden. Versuchen Sie Folgendes: 'int Num1 = 0, Num2 = 0'; – Chip