¿Es posible realizar un intercambio en esta forma con un booleano en lugar de una lista?
Aquí está mi código (en Java en Eclipse) muestra 3 cartas aleatorias de un archivo. Estoy tratando de hacer que funcione un botón de mezcla y que mezcle aleatoriamente 3 cartas nuevas. Usé “Collections.shuffle(cards);” y le pasé mi matriz booleana pero dice que no puedo porque quiere una lista < >. ¿Es posible hacer que la mezcla funcione con mi booleana o tendría que usar una lista?
Aquí está mi código:
“`java
import java.util.Collections;
import java.util.List;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class DisplayCards extends Application {
<pre><code>HBox imageViews;
@Override
public void start(Stage primaryStage) throws Exception {
GridPane pane = new GridPane();
pane.setAlignment(Pos.CENTER);
boolean[] cards = new boolean[52];
int count = 0;
while(count < 3) {
int card = (int)(Math.random() * 52);
if(!cards[card]) {
cards[card] = true;
pane.add(new ImageView(new Image("card/" + (card) + ".png")), count, 0);
count++;
}
}
imageViews = new HBox();
imageViews.setAlignment(Pos.CENTER);
shuffle();
Button btnShuffle = new Button("Shuffle");
btnShuffle.setOnAction(new EventHandler<actionevent>() {
public void handle(ActionEvent event) {
shuffle();
}
});
BorderPane Bpane = new BorderPane();
Bpane.setCenter(imageViews);
Bpane.setBottom(btnShuffle);
Scene scene = new Scene(pane, 250, 150);
primaryStage.setTitle("Display 4 Cards");
primaryStage.setScene(scene);
primaryStage.show();
}
private void shuffle() {
Collections.shuffle(cards);
}
public static void main(String[] args) {
launch(args);
}
</code></pre>
}
“`
davy.ai
Solución
El método
Collections.shuffle()
requiere un parámetroList<>
para funcionar. Para utilizar este método, puedes convertir tu matriz de tipoboolean
en unaList<integer>
y pasarla al método.Aquí tienes cómo puedes modificar tu código para mezclar las cartas:
cards
a unaList<integer>
:Aquí tienes el código modificado:
Con estos cambios, el botón de mezcla debería funcionar como se espera.