タイトルが正しいかどうかはわかりませんが、私が尋ねていることは申し訳ありませんが、私がやっていることはGUIを使ってメモリマッチゲームを作成することです。私は配列を持っていますが、配列の要素をランダムに印刷するボタンがありますが、同じ要素を複数回印刷することができます。それが使用されるとその要素を選択から削除する方法はありますか? これを行う方法がない場合は、各要素を1回だけ使用する方法について考えてください。 DEF BAC ABC FED 3 Aを有する第一の例:使用時にランダムから配列を削除する
package MemoryMatching;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MemoryGUI extends JFrame implements MemoryMatch, ActionListener{
JPanel mainPanel, boardPanel;
JButton [][] gridButtons = new JButton[3][4];
char cardArray[] = new char[12];
int numInPlay;
public MemoryGUI(){
cardArray[0] = 'A';
cardArray[1] = 'A';
cardArray[2] = 'B';
cardArray[3] = 'B';
cardArray[4] = 'C';
cardArray[5] = 'C';
cardArray[6] = 'D';
cardArray[7] = 'D';
cardArray[8] = 'E';
cardArray[9] = 'E';
cardArray[10] = 'F';
cardArray[11] = 'F';
mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
boardPanel = new JPanel();
boardPanel.setLayout(new GridLayout(4,3));
setBoard();
mainPanel.add(boardPanel, BorderLayout.CENTER);
add(mainPanel);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton btnClicked = (JButton) e.getSource();
btnClicked.setEnabled(false);
char randomChar = cardArray[(int)new Random().nextInt(cardArray.length)];
btnClicked.setText(""+ randomChar);
faceUp();
}
@Override
public void setBoard() {
for(int x = 0; x < cardArray.length; x++) {
}
for(int row=0; row<gridButtons.length; row++){
for(int col=0; col<gridButtons[row].length;col++){
gridButtons[row][col] = new JButton();
gridButtons[row][col].addActionListener(this);
gridButtons[row][col].setText("No peeking");
boardPanel.add(gridButtons[row][col]);
faceDown();
}
}
}
@Override
public void isWinner() {
// TODO Auto-generated method stub
}
@Override
public void isMatch() {
}
@Override
public void faceUp() {
for(int x = 0; x < cardArray.length; x++) {
for(int y = 0; y < cardArray[x]; y++) {
}
}
}
@Override
public void faceDown() {
}
}
私は、現在取得していますが ABA AFB FDD EFC ではなく、のようなものがある: これは私の現在のコードです第2の例におけるように、2つではなく1つのCである。 可能であれば、コードを完全には与えないで、正しい方向に向かって押してください。
私はテキストを正しく表示することができませんでしたが、Arrayの代わりにListを使用すると、私は希望の結果にもっと近く感じることができます。 – HoneybunHero