Esercizio processing

di il
16 risposte

Esercizio processing

Salve a tutti
non riesco a risolvere questo esercizio di processing.

Il testo è:
il programma deve caricare e visualizzare un'immagine. Premendo il tasto t della tastiera la stessa immagine viene visualizzata con una breve linea rossa di dimensioni e posizione a piacere, se il tasto t viene premuto nuovamente viene visualizzata l'immagine senza la linea rossa. All'avvio del programma appare l'immagine senza la linea rossa

Il mio problema è che non riesco a ritornare all'immagine iniziale, cioè se clicco la prima volta riesco a passare all'immagine con la linea rossa, cliccando nuovamente t non riesco a tornare all'immagine normale.

Allego alcune immagini, nelle immagini non c'è void setup in cui ho caricato l'immagine definito la grandezza della finestra per la visualizzazione dell'immagine

Attendo risposte
Grazie
Allegati:
23950_8d25db2ab95a44a7411a6a9086293e64.png
23950_8d25db2ab95a44a7411a6a9086293e64.png

23950_eafa37ded939a437b3fdf572ff33e8b6.png
23950_eafa37ded939a437b3fdf572ff33e8b6.png

16 Risposte

  • Re: Esercizio processing

    Ciao...dato che è un esercizio...devi strutturare in classi (OOP), se si hai qualche obbligo/restrizione, o va bene un codice "procedurale"?
  • Re: Esercizio processing

    Va bene anche un codice procedurale
  • Re: Esercizio processing

    Bhe...3 "variabili"...il tuo oggetto immagine...un numerico...una boolean.
    imposti il setup()...size; background; carichi l'immagine; imposti a 0 la variabile numerica; imposti a false la boolean.
    il draw() lo vediamo dopo....
    imposti la funzione keyPressed()...verifichi se key è 't' e se la variabile boolean è false...se si aumenti di 1 la varibile numerica ed imposti true la boolean
    imposti la funzione keyReleased()...verifichi se key è 't' ed imposti a false la boolean...se vuoi porti a 0 la numerica.
    nel draw()...imposti il background; disegni la tua immagine; fai un bell'if dove verifiche se il modulo (%) sulla variabile numerica "ritorna" 1...se si disegni la linea.

    EDIT:...nella funzione keyReleased() NON azzerare la variabile numerica...a volte si scrive troppo...
  • Re: Esercizio processing

    Scusami, non capisco perché bisogna usare keyReleased()
  • Re: Esercizio processing

    Devi far si che keyPressed() agisca solo UNA volta tramite la variabile boolean...ti serve un qualche cosa che dica...ok ho premuto la 't'...adesso non è più premuta...adesso la ripremo di nuovo...ecco l'iterazione tra keyPressed() e keyReleased() dove quest'ultima resetta la variabile boolean.
  • Re: Esercizio processing

    Invece per quanto riguarda il void draw()?
  • Re: Esercizio processing

    Vedi l'ultima riga del mio post:
    nel draw()...imposti il background; disegni la tua immagine; fai un bell'if dove verifiche se il modulo (%) sulla variabile numerica "ritorna" 1...se si disegni la linea.
  • Re: Esercizio processing

    È possibile usare due variabili (magari dando loro un valore) da aggiungere agli if (if (key == t && ...)) in keyPressed e verificare tramite queste due variabili se è mostrata l'immagine che ha la linea o l'altra per passare dall'una all'altra quando premuto il tasto t?
  • Re: Esercizio processing

    Ciao...io farei una cosa del genere....dove 2.jpg è la tua immagine
    PImage myImg;
    byte redLine;
    boolean kp;
    
    void setup() {
      size(400, 400);
      background(255);
      myImg= loadImage("2.jpg");
      redLine=0;
      kp=false;
    }
    
    void draw() {
      background(255);
      image(myImg, 100, 100);
      if (redLine%2==1) {
        color c = color(255, 0, 0);
        stroke(c);
        strokeWeight(10);
        line(20, 40, 80, 40);
      }
    }
    
    void keyPressed() {
      if ((key == 't' || key == 'T') && kp==false) {
        redLine+=1;
        kp=true;
      }
    }
    
    void keyReleased() {
      if (key == 't' || key == 'T') {
        kp=false;
      }
    }
  • Re: Esercizio processing

    Ti ringrazio tanto.
    Saluti!
  • Re: Esercizio processing

    Scusa, una curiosità. è possibile sapere in un qualsiasi punto del progetto se boolean è true o false? se sì come è possibile?
    Grazie
  • Re: Esercizio processing

    Ciao...per come ho scritto il programma la boolean kp ha visibilità globale...quinti quando vuoi è sempre possibile saperne il valore.
  • Re: Esercizio processing

    Invece facendo una cosa di questo tipo non è possibile?
    il kp in questo codice è alternanza

    void keyPressed(){

    if((key == 't' || key == 'T') && alternanza == false){
    img3=colorarosso(img3);
    alternanza=true;
    }

    if((key == 't' || key == 'T') && alternanza == true){
    img3=colorarosso(img3);
    alternanza=false;
    }
    }
  • Re: Esercizio processing

    L'hai provato?
    secondo te al premere della 't' o 'T'...cosa dovrebbe accadere?
Devi accedere o registrarti per scrivere nel forum
16 risposte