sábado, 17 de março de 2018

Javafx - embaralhando array de char


Cada vez que a tecla "ENTER" for pressionada,
temos uma nova sequência de caracteres
diferente da original imprimida,
e isto graças ao método emb_lhar ( char vet [ ] );
que embaralha um array pré-definido a cada chamada.
Um efeito interessante é conseguido segurando
a tecla enter pressionada, ou inserindo
um clock em substituição da tecla, automatizando
os embaralhamentos, criando infinitas
sequências diferentes da original.


Veja abaixo uma imagem do programa em execução:


 Veja abaixo o código do programa:


import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import java.util.Random;

public class PROJETO extends Application {
     public static int TAM = 11;
     static Canvas canvas = new Canvas ( 620, 350 );
     static GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     static Pane ro_ot = new Pane ( );
     static Scene sce_ne = new Scene ( ro_ot, 620, 350 );
     static Button btn_1 = new Button ( "ENTER" );
     // /////////////////////////////////////////////////////////////////////////
     public static void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 250, 275 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 280, 275 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 250, 290 );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static int emb_lhar ( char vet [ ] ) {
         int i, temp, y;
         Random random = new Random ( );
         for ( i = 0; i < TAM; i++ ) {
              y = random.nextInt ( TAM );
              temp = vet [ i ];
              vet [ i ] = vet [ y ];
              vet [ y ] = ( char ) temp;
         }
         return i;
     }
     // ////////////////////////////////////////////////////////////////////////
     public static Node But_ton_3 ( char vet [ ] ) {
         btn_1.setPrefWidth ( 100 );// Largura do botão
         btn_1.setLayoutX ( 267 );// Posição do botão coluna
         btn_1.setPrefHeight ( 20 );// altura do botão
         btn_1.setLayoutY ( 300 );// //Posição do botão linha      
         btn_1.setStyle ( "-fx-padding: 1;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 2;" + "-fx-border-insets: 1;"
                   + "-fx-border-radius: 1;" + "-fx-border-color: blue;"
                   + "-fx-font-style: italic;"
                   + "-fx-font-family: Consolas;"
                   ); 
         btn_1.setOnKeyPressed ( e -> {
              if ( e.getCode ( ) == KeyCode.ENTER ) {
                   int a, b;
                   String st = " ";
                   // Coluna, linha, comprimento, altura
                   ctx.clearRect ( 70, 130, 580, 180 );
                   ctx.setFill ( Color.BLUE );
                   ctx.fillText ( "Embaralhando abaixo o array de char", 190, 140 );
                   a = emb_lhar ( vet );
                   for ( b = 0; b < a; b++ ) {             
                        st += vet [ b ] + "    ";          
                   }
                   ctx.setFill ( Color.RED );
                   ctx.fillText ( st, 190, 170 );
                   Informe ( );
              }
         } );
         return btn_1;
     }
     // ////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
         stage.setTitle ( "JAVAFX - EMBARALHANDO ARRAY DE CHAR" );
         //Criando moldura e dando efeitos
        ro_ot.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                + "-fx-border-width: 15;" + "-fx-border-insets: 5;"
                + "-fx-border-radius: 5;" + "-fx-border-color: black;"
                + "-fx-background: lightgreen;");
         ctx.setFill ( Color.RED );
         ctx.fillText ( "EMBARALHANDO ARRAY DE CHAR", 190, 50 );
         String st = " ";
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Imprimindo abaixo o array de char", 190, 80 );
         ctx.setFill ( Color.BLACK );
         char vet [ ] = { 'P', 'R', 'O', 'G', 'R', 'A', 'M', 'A', 'N', 'D', 'O' };
         int i;
         for ( i = 0; i < TAM; i++ ) {
              st += vet [ i ] + "    ";
         }
         ctx.setFill ( Color.RED );
         ctx.fillText ( st, 190, 110 );
         But_ton_3 ( vet );
         ro_ot.getChildren ( ).addAll ( canvas, btn_1 );
         stage.setScene ( sce_ne );
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) {
         Application.launch ( args );
     }
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.