sábado, 25 de março de 2017

Javafx - array multidimensional de inteiros aleatório

Usando como interface uma janela gráfica criada
em javafx, mostro neste claro exemplo como
preencher um array multidimensional de inteiros
aleatoriamente.
A entrada de dados é feita por caixa de dialogos
do javaFX, e não é permitido a entrada de caracteres,
ou qualquer acento ou sinais do teclado,
passando absolutamente dígitos.
Os dígitos são capturados como String
mas logo em seguida são convertidos em inteiros.
para preenchimento do array multidimensional.
Na caixa de diálogo tem as orientações para o usuário,
indicando o lado esquerdo ou direito
da posição escolhida, e se for escolhido corretamente,
a próxima caixa de diálogo pede que entre
com um valor para a posição escolhida.

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






//PREENCHENDO ARRAY MULTIDIMENSIONAL ALEATORIAMENTE EM JAVAFX
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.Pane;
import java.awt.Toolkit;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.TextInputDialog;
import javafx.concurrent.Task;
public class PROJETO extends Application {
     static String str  = "";
     static String str_1;
     static String str_2;
     static String str_3;
     static int         i, j, n = 3, y = 1, p = 0;
     static int         vet [ ][ ]    = new int [ n ] [ n ];
     static Stage  stage;
     Scene              scene;
     static Pane        root     = new Pane ( );
     static Canvas canvas = new Canvas ( 660, 460 );
     static GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     //Chamando uma função depois de um certo tempo
     //Chamada Sleep ( 1800, k );
     public static Node Tempo_2 ( ) {
         Group y = new Group ( );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "MUITO OBRIGADO", 280, 420 );
         return y;
     }
     public static Node Tempo_1 ( ) {
         Group y = new Group ( );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Por: Samuel Lima", 280, 380 );
         return y;
     }
     public static int Sleep ( int x, int k ){
         Task < Integer > close = new Task < Integer > ( ) {
              @Override
              protected Integer call ( ) throws Exception {
                   Thread.sleep ( x );
                   return null;
              }
         };      
         close.setOnSucceeded ( c -> {
              if ( k == 1 )
                   Tempo_1 ( );
              if ( k == 2 )
                   Tempo_2 ( );
         } );
         new Thread ( close ).start ( );
         return 0;
     }


     // Esta função não permite a entrada de caracteres
     public static int Aleatorios ( char c ) {
         int i;
         for ( i = 0; i < ( c ); i++ ) {
              if ( c < '0' || c > '9' )
                   return 0;
         }
         return 1;
     }
     // //////////////////////////////////////////////////////////////////////////
     @Override
     public void start ( Stage stage ) throws InterruptedException {
         ctx.setLineWidth ( 22.0 );
         ctx.strokeRoundRect ( 10, 10, 640, 440, 10, 10 );
         root.getChildren ( ).add ( canvas );
         Scene scene = new Scene ( root );
         stage.setTitle ( "PREENCHENDO ARRAY ALEATORIAMENTE" );
         ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "PREENCHENDO ARRAY ALEATORIAMENTE", 190, 60 );
         ObservableList < Node > content = ( ( Pane ) scene.getRoot ( ) )
                   .getChildren ( );
         stage.setScene ( scene );
         stage.show ( );
         content.add ( Line ( ctx ) );
     }
     public static Node Line ( GraphicsContext ctx ) throws InterruptedException {
         Group k = new Group ( );
         int a = 0, b = 0;
         // /////////////////////////////////////////////////////////////
         // Este bloco limpa o array
         for ( i = 0; i < n; i++ ) {
              for ( j = 0; j < n; j++ ) {
                   vet [ i ] [ j ] = ' ';
              }
         }
         // /////////////////////////////////////////////////////////////
         for ( a = 0; a < 9; a++ ) {
              TextInputDialog dialogoNome = new TextInputDialog ( );
              dialogoNome.setX ( 400 );
              dialogoNome.setY ( 350 );
              dialogoNome.setTitle ( " Posição" );
              dialogoNome.setHeaderText ( "Lado esquerdo " );
              dialogoNome.setContentText ( "Número: " );
              dialogoNome.showAndWait ( ).ifPresent ( v -> str_2 = v );
              Alert alert = new Alert ( AlertType.INFORMATION );
              alert.setHeaderText ( null );
              // /////////////////////////////////////////////////////////////
              // temos abaixo uma conversão de String para char
              // dentro dos parâmetros da função Aleatorios
              if ( Aleatorios ( str_2.charAt ( 0 ) ) == 0
                        || ( str_2.charAt ( 0 ) ) > '2' ) {
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   a = a - 1;
                   continue;
              }
              // /////////////////////////////////////////////////////////////
              TextInputDialog dia_logoNome = new TextInputDialog ( );
              dia_logoNome.setX ( 730 );
              dia_logoNome.setY ( 350 );
              dia_logoNome.setTitle ( " Posição" );
              dia_logoNome.setHeaderText ( "Lado direito " );
              dia_logoNome.setContentText ( "Número: " );
              dia_logoNome.showAndWait ( ).ifPresent ( v -> str_1 = v );
              Alert ale_rt = new Alert ( AlertType.INFORMATION );
              ale_rt.setHeaderText ( null );
              // /////////////////////////////////////////////////////////////
              // temos abaixo uma conversão de String para char
              // dentro dos parâmetros da função Aleatorios
              if ( Aleatorios ( str_1.charAt ( 0 ) ) == 0
                        || ( str_1.charAt ( 0 ) ) > '2' ) {
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   a = a - 1;
                   continue;
              }
              // //Conversão de String para inteiro
              i = Integer.parseInt ( str_2 );
              j = Integer.parseInt ( str_1 );
              // /////////////////////////////////////////////////////////////
              if ( vet [ i ] [ j ] != ' ' ) {
                   //Este bloco verifica se uma posição já foi preenchida
                   Toolkit.getDefaultToolkit ( ).beep ( );
                   a = a - 1;
                   continue;
              }
              // /////////////////////////////////////////////////////////////
              if ( i == 0 && j == 0 ) {
                   y = 270;
                   p = 120;
                   str_3 = "Primeira posição";
              }
              if ( i == 0 && j == 1 ) {
                   y = 310;
                   p = 120;
                   str_3 = "Segunda posição";
              }
              if ( i == 0 && j == 2 ) {
                   y = 350;
                   p = 120;
                   str_3 = "Terceira posição";
              }
              if ( i == 1 && j == 0 ) {
                   y = 270;
                   p = 160;
                   str_3 = "Quarta posição";
              }
              if ( i == 1 && j == 1 ) {
                   y = 310;
                   p = 160;
                   str_3 = "Quinta posição";
              }
              if ( i == 1 && j == 2 ){
                   y = 350;
                   p = 160;
                   str_3 = "Sexta posição";
              }
              if ( i == 2 && j == 0 ){
                   y = 270;
                   p = 200;
                   str_3 = "Sétima posição";
              }
              if ( i == 2 && j == 1 ){
                   y = 310;
                   p = 200;
                   str_3 = "Oitava posição";
              }
              if ( i == 2 && j == 2 ){
                   y = 350;
                   p = 200;
                   str_3 = "Nona posição";
              }
              do {
                   TextInputDialog dia_log_oNome = new TextInputDialog ( );
                   //Thread.sleep(3000);
                   dia_log_oNome.setX ( 580 );
                   dia_log_oNome.setY ( 350 );
                   dia_log_oNome.setTitle ( "Valor" );
                   dia_log_oNome.setHeaderText ( str_3 );
                   dia_log_oNome.showAndWait ( ).ifPresent ( v -> str = v );
                   Alert ale_r_t = new Alert ( AlertType.INFORMATION );
                   ale_r_t.setHeaderText ( null );
                   // /////////////////////////////////////////////////////////////
                   // temos abaixo uma conversão de String para char
                   // dentro dos parâmetros da função Aleatorios
                   if ( Aleatorios ( str.charAt ( 0 ) ) == 0 ) {
                        Toolkit.getDefaultToolkit ( ).beep ( );
                        continue;
                   }
                   ////////////////////////////////////////////////////////////////
                   vet [ i ] [ j ] = Integer.parseInt ( str );
                   /*
                   //Classe J funções só em modo texto
                   J jht = new J ( );
                   // /////////////////////////////////////////////////////////////
                   for ( i = 0; i < n; i++ ) {
                        if ( i == 0 )
                            jht.gotoxy ( ( short ) 33, ( short ) 11 );
                        if ( i == 1 )
                            jht.gotoxy ( ( short ) 33, ( short ) 14 );
                        if ( i == 2 )
                            jht.gotoxy ( ( short ) 33, ( short ) 17 );
                        for ( j = 0; j < n; j++ ) {
                            // só imprime os números e não 32
                            if ( vet [ i ] [ j ] != ' ' ) {
                                 //Imprimindo em modo texto
                                 System.out.printf ( vet [ i ] [ j ] + "   " );
                            }
                        }
                   }
                   // /////////////////////////////////////////////////////////////
                    */
                   //Imprimindo na janela gráfica
                   ctx.setFill ( Color.BLACK );
                   ctx.fillText ( str, y, p );
                   break;
              } while ( true );
              if ( a == 9 )
                   break;
              continue;
         }
         b = 1;
         Sleep ( 1800, b );
         b = 2;
         Sleep ( 2800, b );
         return k;
     }
     // //////////////////////////////////////////////////////////////////////////
     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.