我正在用Java编写墨西哥彩票游戏(带有个性化卡片) ,我想将图像显示在一个数组中,以便它们是随机拍摄的,并且不会重复。我附上了到目前为止有效的代码,但使用Strings
了卡片的名称,我提前感谢您的帮助。
字母类
public class Carta {
private String cara;
public Carta( String caraCarta )
{
cara = caraCarta;
}
public String toString()
{
return cara;
}
}
CardPack 类,这是我加载 GUI 的地方,为了简单起见,我删除并省略了代码
private Carta paquete[];
private int cartaActual;
public PaqueteDeCartas2()
{
super( "Lotería Mágica" );
String caras[] = { "Strings que tienen nombres de cartas" };
paquete = new Carta[ 44 ];
cartaActual = -1;
for ( int cuenta = 0; cuenta < paquete.length; cuenta++ )
paquete[ cuenta ] = new Carta( caras[ cuenta % 44 ] );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
repartirBoton = new JButton( "Corre y se va con..." );
repartirBoton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent eventoAccion )
{
Carta repartida = repartirCarta();
if ( repartida != null ) {
pantallaCampo.setText( repartida.toString() );
estadoEtiqueta.setText( "Carta #: " + cartaActual );
}
else {
pantallaCampo.setText( "NO HAY MAS CARTAS QUE REPARTIR" );
estadoEtiqueta.setText( "Barajee las cartas para continuar" );
}
}
}
);
contenedor.add( repartirBoton );
barajarBoton = new JButton( "Barajar cartas" );
barajarBoton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent eventoAccion )
{
pantallaCampo.setText( "BARAJANDO ..." );
barajar();
pantallaCampo.setText( "SE BARAJO EL PAQUETE" );
}
}
);
contenedor.add( barajarBoton );
/* Cosas de GUI*/
}
private void barajar()
{
cartaActual = -1;
for ( int primera = 0; primera < paquete.length; primera++ ) {
int segunda = ( int ) ( Math.random() * 44 );
Carta temp = paquete[ primera ];
paquete[ primera ] = paquete[ segunda ];
paquete[ segunda ] = temp;
}
repartirBoton.setEnabled( true );
}
private Carta repartirCarta()
{
if ( ++cartaActual < paquete.length )
return paquete[ cartaActual ];
else
{
repartirBoton.setEnabled( false );
return null;
}
}
public static void main( String args[] )
{
PaqueteDeCartas2 aplicacion = new PaqueteDeCartas2();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
首先,您需要创建一个面板来绘制图像:
然后,您可以在代码中生成包含图像列表的数组,如果您愿意,可以使用 Map 来维护名称/图像关系:
因此,您可以为每个图像生成一个面板,并在前端使用该面板而不是 displayField
顺便说一句,要随机化列表,您只需要带有面板、参考或其他内容的列表,然后使用
Collections.shuffle(fileList, new Random(seed));