Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    23

    Tetris java

    Salve a tutti.
    Sono nuovo e non sò se sto scrivendo nella sezione corretta...

    Sto cercando di scrivere una piccola applicazione java che simula il tetris, ma mi sono imbattuto in un curioso problema:

    i colori dei blocchi (rappresentati tramite Jlabel) non vengono visualizzati se non alla fine dell'animazione, qualcuno sa dirmi perchè?

    Questo è il sorgente (è solo una bozza provvisoria)

    codice:
    public class provaForme extends javax.swing.JFrame {
    
        
        static final int DIM_BUTTON = 20;
        //public Dati d;
        public int N = 11,  M = 21;
        int riga, col;
        boolean blocchi[][];
        boolean visitati[][];
       
        Label[][] labelSfondo = new Label[N][M];
        javax.swing.JTextField jTextField1;
        javax.swing.JButton jButton1;
        javax.swing.JLabel[][] label = new javax.swing.JLabel[N][M];
     
    
        /** Creates new form provaForme */
        public provaForme() {
            initComponents();
    
            this.setTitle("TETRIS");
        
            this.setSize(DIM_BUTTON * N + 7, DIM_BUTTON * M + 94);
            this.setBounds(640 - (this.getWidth() / 2), 400 - (this.getHeight() / 2), DIM_BUTTON * N + 7, DIM_BUTTON * M + 94);
            posizionaBottoni();
        //gioca();
        }
    
        public void posizionaBottoni() {
    
            blocchi = new boolean[N][M];
            visitati = new boolean[N][M];
            //bottoni = new javax.swing.JToggleButton[N][M];
            int riga;
            int col;
            int numeroBottone = 0;
    
            jTextField1 = new javax.swing.JTextField();
            jButton1= new javax.swing.JButton("Start");
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().setLayout(null);
            getContentPane().add(jTextField1);
            getContentPane().add(jButton1);
            jTextField1.setBounds(0, (DIM_BUTTON * M), 80, 40);
            jTextField1.setEditable(false);
            jButton1.setBounds(100, (DIM_BUTTON*M),80,40 );
    
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    forma1();
                }
            });
    
            //
            for (riga = 0; riga < N; riga++) {
                for (col = 0; col < M; col++) {
    
                    label[riga][col] = new javax.swing.JLabel();
                    labelSfondo[riga][col] = new Label();
    
                    label[riga][col].setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, new java.awt.Color(255, 255, 255), new java.awt.Color(0, 0, 51)));
                    label[riga][col].setOpaque(true);
                    label[riga][col].setVisible(false);
                    
                    label[riga][col].setBounds(riga * DIM_BUTTON, col * DIM_BUTTON, DIM_BUTTON, DIM_BUTTON);
                    labelSfondo[riga][col].setBounds(riga * DIM_BUTTON, col * DIM_BUTTON, DIM_BUTTON, DIM_BUTTON);
                    labelSfondo[riga][col].setBackground(Color.BLACK);
                    labelSfondo[riga][col].setVisible(true);
                   
                    getContentPane().add(label[riga][col]);
                    getContentPane().add(labelSfondo[riga][col]);
    
    
                //label[riga][col].setMargin(new java.awt.Insets(0, 0, 0, 0));
    
                //numeroBottone++;
                }
            }
    
        //forma1();
        }
    
        //blocco quadrato blu
        public void forma1() {
    
            labelSfondo[5][0].setVisible(false);
            labelSfondo[6][0].setVisible(false);
            labelSfondo[5][1].setVisible(false);
            labelSfondo[6][1].setVisible(false);
    
    
            label[5][0].setBackground(Color.BLUE);
            label[6][0].setBackground(Color.BLUE);
            label[5][1].setBackground(Color.BLUE);
            label[6][1].setBackground(Color.BLUE);
    
            label[5][0].setVisible(true);
            label[6][0].setVisible(true);
            label[5][1].setVisible(true);
            label[6][1].setVisible(true);
    
            label[5][0].setIcon(new javax.swing.ImageIcon(getClass().getResource("bomba2.PNG"))); // NOI18N
    
            //ritardo animazione
            try {
                Thread.sleep(100);
    
            } catch (Exception e) {
            }
    
    
    
    
            //ciclo che fa scorrere il blocco
            for (riga = 0; riga < M - 2; riga++) {
    
                labelSfondo[5][riga].setVisible(true);
                labelSfondo[6][riga].setVisible(true);
                labelSfondo[5][riga+2].setVisible(false);
                labelSfondo[6][riga+2].setVisible(false);
    
                label[5][riga].setVisible(false);
                label[6][riga].setVisible(false);
    
                label[5][riga+2].setVisible(true);
                label[6][riga+2].setVisible(true);
    
                label[5][riga+2].setBackground(Color.BLUE);
                //label[10][riga+2].setIcon(new javax.swing.ImageIcon(getClass().getResource("bomba2.PNG"))); // NOI18N
            label[6][riga+2].setBackground(Color.BLUE);
    
    
                try {
                    Thread.sleep(100);
    
                } catch (Exception e) {
                }
    
                blocchi[5][riga + 2] = true;
                blocchi[6][riga + 2] = true;
                blocchi[5][riga] = true;
                blocchi[6][riga] = true;
    
            }
        }
    
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().setLayout(null);
    
            pack();
        }// </editor-fold>                        
    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
    
                public void run() {
                    new provaForme().setVisible(true);
                }
            });
        }
    
        // Variables declaration - do not modify                     
        // End of variables declaration                   
    }
    come editor uso netbeans 6.5 e la versine del java la jdk1.6.0_13 su un pc con windows XP sp3

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    java al suo subforum bello in evidenza.. difficile non vederlo

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,479

    Moderazione

    Ho corretto il titolo e spostato la discussione.

    Invito alla lettura del Regolamento di quest'area del forum per ulteriori norme da prendere in considerazione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.