Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    3

    [JAVA] Inserire immagine in background e decremento oggetto

    Ciao a tutti,

    cercherò di essere chiaro così da potervi permettere di aiutarmi meglio

    compilato il codice sottostante, creo una applet che è piccolo giochino, ovvero col mouse devi cliccare sul quadratino nello schermo che si sposta dopo ogni "click",
    il codice funziona perfettamente tranne in un particolare ovvero, se riavvio l'app il numero dei "Clicksbagliati" non riparte da zero anzi aumenta di 2 ad ogni "click" anche se è corretto, ho ovviato a questo problema con il main e gioco.init così il gioco non si può riavviare ma ovviamente è la soluzione diciamo rapida, potreste aiutarmi e dirmi dove e perchè sbaglio?

    e se volessi implementare, come inserisco un'immagine al posto dello sfondo blue creato con set.background?
    e se volessi rendere il gioco più difficile ovvero che ad ogni click il rettangolo diventa più piccolo?
    qualsiasi aiuto è ben accetto, grazie a tutti in anticipo

    codice:
    import java.applet.Applet;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import javax.swing.JFrame;
    
    
    
    
    
    
    public class RightAngle extends Applet implements Runnable, MouseListener{
            
        public static void main(String[] args) {
                   JFrame frame = new JFrame("RightAngle");
                   RightAngle gioco = new RightAngle();
                   frame.add(gioco);
                   frame.setSize(400, 400);
                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   frame.setResizable(false);
                   frame.setVisible(true);
                   
                   gioco.init();
    }
           int x, y; //posizione della scatola
           
           int dimensione = 20; 
           
           int contaClick;          
           int contaClicksbagliati;  
           
           Thread aggiorna;          
           
           boolean running;        
    
    
           int contaSecondi;       
           
           public void init() {
                   setBackground(Color.BLUE);
                    
                   cambiaPosizione();  //imposta la posizione del rettangolo
                   addMouseListener(this); 
                   running = true;                
                   
                   contaClick = 0;
                   contaClicksbagliati = 0;
                   
                   aggiorna = new Thread(this);
                   aggiorna.start();        
           }
           void cambiaPosizione(){
                   x = (int) (Math.random()*(getWidth()-dimensione)); //imposta una posizone casuale
                   y = (int) (Math.random()*(getHeight()-dimensione)); //imposta una posizone casuale
           }
           
           
           public void run() {
                   contaSecondi = 20;
                   
                   while(contaSecondi > -1&&contaClicksbagliati<3){
                           try {
                                   Thread.sleep(1000);  
                                   contaSecondi--;   
                                   repaint();                
                                   
                           } catch (InterruptedException e){}
                           
                   }
                   running = false; //il gioco è terminato
                   repaint();               
           }
           
           public void paint(Graphics g) {
                  
                   g.setColor(Color.WHITE);
                   g.drawRect(0, 0, getWidth()-1, getHeight()-1);
                   
                   
                   if(running&&contaClicksbagliati<3){
                           g.setColor(Color.WHITE);
                           g.fillRect(x, y, dimensione, dimensione);
                           g.setColor(Color.BLACK);
                           g.drawRect(x, y, dimensione-1, dimensione-1);
                   }else  {
                           //altrimenti scrive game over
                           g.setColor(Color.RED);
                           g.setFont(new Font("[GAME OVER]", Font.BOLD, 20));
                           g.drawString("[GAME OVER]", (getWidth()/2)-65, getHeight()/2);
                   }
                    
                   
                   g.setFont(new Font("default", Font.BOLD, 16));
                   g.setColor(Color.WHITE);
                   g.drawString("Sec rimanenti: "+(contaSecondi+1), 10, 20); //il +1 evita che venga scritto -1 sullo schermo
                   g.drawString("Click giusti: ", 10, getHeight()-20);
                   g.drawString("Click errati: ", 120, getHeight()-20);
                   g.setColor(Color.GREEN);
                   g.drawString(""+contaClick,105,getHeight()-20);
                   g.setColor(Color.RED);
                   g.drawString(""+contaClicksbagliati,210,getHeight()-20);
                   
           }
                  
           
           
           public void mousePressed(MouseEvent e)
           
           {
                   
                   if(cliccato(e.getX(), e.getY()) && running){
                           contaClick++;
                           
                           cambiaPosizione();
                           repaint();
                   }
                   else{
                       
                           contaClicksbagliati++;
                           
                   }
           }
    
    
           
           boolean cliccato(int clickX, int clickY) {
                   if(clickX >= x && clickX < x + dimensione &&
                      clickY >= y && clickY < y + dimensione){
                           return true;        
                   }else{
                           return false;
                            
                   }
                   
           }
          
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    3
    preso dalla fretta non ho ragionato bene, e quantomeno sono riuscito ad inserire la possibilità che ad ogni click il rettangolo diminuisca le dimensioni, inserendo semplicemente

    codice:
    dimensione--;
    nel void CambiaPosizione e funziona

    ora mi manca poco per ottenere ciò che voglio
    Ultima modifica di geek21; 21-12-2015 a 19:03

  3. #3
    Scusami se te lo chiedo, hai detto che il tuo giochino è un applet no?
    Ma un applet NON ha un main....
    https://it.wikipedia.org/wiki/Java_applet
    Guarda sotto "Creazione e ciclo di vita di una applet"
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2015
    Messaggi
    3
    per questo ho chiesto aiuto, perchè evidentemente sbaglio qualcosa essendo alle prime armi, e magari per correggere i miei errori ne commetto altri

  5. #5
    Il problema è:
    Vuoi fare un applet?
    oppure vuoi costruire una applicazione stand-alone su un JFrame?
    Dall'applicazione non si capisce è un po un mischione.
    Inoltre Applet appartiene al pacchetto AWT mentre JFrame appartiene al pacchetto SWING, l'insieme di queste due librerie può creare delle inconsistenze.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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.