"Itt a piros hol a piros" játék

"Itt a piros hol a piros" játék
2005-06-08T16:56:44+02:00
2005-06-13T10:12:50+02:00
2022-10-25T12:42:04+02:00
yuhui
Sziasztok!

Az lenne a problémám hogy egy fent említett programot szeretnék írni, de ott elakadtam, hogy láthatóvá tudjam tenni azt ahogyan a lapok keverednek! Kezdő vagyok még JAVA-ban és fogalmam sincs hogyan tudnám megoldani! Gondoltam rá hogy szálkezelés kellene bele, de az a része még teljesen sötét számomra.

Tehát azt szeretném megvalósítani, hogy a keverés gomb lenyomása után láthatóan keverje meg a lapokat, és addig ne is lehessen rákattintani a lapok közül egyre sem. Próbálkoztam azzal hogy sleepet tettem a gomb eseménykezelőjébe, de csak annyit értem el vele, hogy a program várt a megfelelő ideig, majd az eseménykezelő lefutása után a végső állapotot rajzoltatatta ki!

Kérlek segítsetek!
Válaszaitokat előre is köszönöm!

üdv. yuhui

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;

public class IpHp extends JFrame implements ActionListener {

private JDialog d;
private JMenuItem about;
JLabel label_amin_kep_van1 = new JLabel(new ImageIcon("000.jpg"));
JLabel label_amin_kep_van2 = new JLabel(new ImageIcon("000.jpg"));
JLabel label_amin_kep_van3 = new JLabel(new ImageIcon("000.jpg"));

public IpHp() {
setBounds( 10, 10, 800, 600 );
setLayout( null );
setTitle( "Itt a piros, hol a piros!" );
JMenuBar mb = new JMenuBar();
JMenu fileMenu = new JMenu ( "Fájl" );
JMenu sugoMenu = new JMenu ( "Súgó" );
JMenu nehezseg = new JMenu ( "Nehézség" );
about = new JMenuItem ( "A programról" );
JMenuItem kilepes = new JMenuItem( "Kilépés" );
kilepes.addActionListener( this );
about.addActionListener ( this );
sugoMenu.add ( about );
fileMenu.add( kilepes );
fileMenu.setMnemonic(KeyEvent.VK_F);
sugoMenu.setMnemonic(KeyEvent.VK_S);
nehezseg.setMnemonic(KeyEvent.VK_N);
kilepes.setMnemonic(KeyEvent.VK_K);

ButtonGroup group = new ButtonGroup();

JRadioButtonMenuItem konnyu;
konnyu = new JRadioButtonMenuItem("Hogy is kell ezt jáccani???");
konnyu.setSelected(true);
konnyu.setMnemonic(KeyEvent.VK_H);
group.add(konnyu);
nehezseg.add(konnyu);

JRadioButtonMenuItem kozepes;
kozepes = new JRadioButtonMenuItem("Kapizsgálom!");
kozepes.setMnemonic(KeyEvent.VK_K);
group.add(kozepes);
nehezseg.add(kozepes);

JRadioButtonMenuItem nehez;
nehez = new JRadioButtonMenuItem("Ahhh, ez KÖNNYŰ!");
nehez.setMnemonic(KeyEvent.VK_A);
group.add(nehez);
nehezseg.add(nehez);
mb.add( fileMenu );
mb.add( nehezseg );
mb.add( sugoMenu );
setJMenuBar( mb );
JButton gomb = new JButton("Keverd meg!");
gomb.setBounds( 350, 475, 120, 20 );
gomb.addActionListener( new GombEsemenyKezelo() );
gomb.setMnemonic(KeyEvent.VK_F1);
add( gomb );

addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
} );

label_amin_kep_van1.setBounds(200,200,110,169);
add(label_amin_kep_van1);
label_amin_kep_van1.setVisible(true);
label_amin_kep_van2.setBounds(350,200,110,169);
add(label_amin_kep_van2);
label_amin_kep_van2.setVisible(true);
label_amin_kep_van3.setBounds(500,200,110,169);
add(label_amin_kep_van3);
label_amin_kep_van3.setVisible(true);
}

public void actionPerformed( ActionEvent e) {
if ( e.getSource() == about ) {
d = new JDialog(this);
d.setBounds( 300, 300, 250, 100 );
d.setTitle( "Info a programról" );
JTextArea keszitette = new JTextArea();
keszitette.setLineWrap( true );
keszitette.insert("Készítette:",0);
keszitette.insert("\nDátum: 2005. május 30.",25);
keszitette.insert("\nVerzió: 0.01a",25);
keszitette.insert("\nUtolsó módosítás: 2005. május 30.",25);
d.add( keszitette );
d.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
d.setVisible( false );
}
} );
d.setModal(true);
d.setVisible(true);
}
else
System.exit( 0 );
}

public static void main( String[] a ) {
IpHp p = new IpHp();
p.setVisible(true);
}

private class GombEsemenyKezelo implements ActionListener {
public void actionPerformed( ActionEvent e ) {
label_amin_kep_van3.setBounds(500,200,110,169);
int i=200;
while(i>=10){
try{
Thread.sleep(10);
// Thread.yield();
// repaint();
}
catch(Exception error){}
label_amin_kep_van3.setLocation(500,i);
i--;
}
}
}
}
Mutasd a teljes hozzászólást!
Erre a celra szal helyett inkabb a TimerTask hasznalatat javasolnam...

A masik problemara, hogy a lapokra ne lehessen raklikkelni, azt tanacsolom hogy vezessel be egy logikai segedvaltozot, amelyet a keveres elejen true ertekre allitassz, majd ha vegzett akkor a false ertekre. Az adott lap esemenykezelojeben pedig figyeled, hogy a keveres allapotat jelzo logikai valtozo milyen ertekkel bir. Tehat ha false akkor az adott tevekenyseg lefuthat, true erteke eseten pedig nem csinal semmit..

Remelem sikerult valamit segiteni.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd