Foro -Documentación -Código fuente -Contacto -Empleo

Buscar

Traducir

Amazon

ZMATRIX PDF Imprimir E-mail
Usar puntuación: / 0
MaloBueno 
Código fuente - Juegos
Escrito por Administrator   
Miércoles, 24 de Agosto de 2005 16:00
Efecto matrix en abap **----
**---- Jose Antonio Moreno
**---- Efecto Matrix
**----
REPORT zmatrix NO STANDARD PAGE HEADING.
DATA:
 BEGIN OF ti_matrix OCCURS 32,
   linea(140),
 END OF ti_matrix,

 BEGIN OF ti_colcolor OCCURS 10,
   col TYPE I,
 END OF ti_colcolor,

 BEGIN OF ti_colblancos OCCURS 10,
   col TYPE I,
 END OF ti_colblancos
.

DATA:
 ccar       TYPE C,
 ncar       TYPE P,
 ccars(140) TYPE C,
 linea      TYPE P,
 numfils    TYPE P,
 numcols    TYPE P,
 i          TYPE P.

CONSTANTS:
 FILS    TYPE P  VALUE 20,                                 ""25,
 COLS    TYPE P  VALUE 80,                                 ""100,
 BLANCOS TYPE P  VALUE 40,                                 ""60,
 COLOR   TYPE P  VALUE 10.                                 ""15.

INITIALIZATION.
 PERFORM gencolcolor.
 Perform CrearMatrix.

START-OF-SELECTION.
 WRITE: ncar.
 SET USER-COMMAND 'NEWRND'.

END-OF-SELECTION.

AT USER-COMMAND.
 IF SY-UCOMM = 'NEWRND'.
   SY-LSIND = SY-LSIND - 1.
   PERFORM mostrarmatrix.
   PERFORM movermatrix.

*    PERFORM gennum USING ncar.
*    SKIP 2.
*    WRITE: ncar, linea.

   CALL FUNCTION 'RFC_PING_AND_WAIT' STARTING NEW TASK '001'
       PERFORMING REFRESH ON END OF TASK
    EXPORTING
       seconds      = 0
       busy_waiting = SPACE
    EXCEPTIONS
       RESOURCE_FAILURE      = 1
       communication_failure = 2
       system_failure        = 3
       OTHERS                = 4.
 ENDIF.
*&----------------------------
-----------------------------------------*
*&      Form  REFRESH
*----------------------------------------------------------------------*
FORM REFRESH USING TASKNAME.
 SET USER-COMMAND 'NEWRND'.
ENDFORM.                    " REFRESH
*&---------------------------------------------------------------------*
*&      Form  GenNum
*----------------------------------------------------------------------*
FORM GenNum CHANGING valor.
 DATA: rnd     TYPE i,
       numcols TYPE i.

 numcols = COLS - 1.

 CALL FUNCTION 'QF05_RANDOM_INTEGER'
      EXPORTING
           ran_int_max = numcols
           ran_int_min = 1
      IMPORTING
           ran_int     = rnd.

 valor = rnd.
ENDFORM. " GenNum
*&---------------------------------------------------------------------*
*&      Form  CrearMatrix
*----------------------------------------------------------------------*
FORM CrearMatrix.
 DATA: fil TYPE P,
       col TYPE P,
       ccars1(35).
 REFRESH ti_matrix.

 numfils = FILS - 1.
 numcols = COLS - 1.

 ccars  = '!"#$%&/()=?¡Qq@WwEeRrTtYyUuIiOoPp+*'.
 ccars1 = 'AaSadDfFgGhHjJkKLñÑ><ZzXxCcvVbBnNmM'.
 CONCATENATE ccars ccars1 INTO ccars.

 PERFORM genespaciosblancos.

 DO FILS TIMES.
   fil = SY-INDEX.
   DO numcols TIMES.
     col = SY-INDEX.
     PERFORM gennum USING ncar.
     ccar = ccars+ncar(1).
     PERFORM colblancas USING col
                     CHANGING ccar.
     MOVE ccar TO ti_matrix-Linea+col(1).
   ENDDO.
   APPEND ti_matrix.
 ENDDO.
ENDFORM.                    " CrearMatrix
*&---------------------------------------------------------------------*
*&      Form  mostrarmatrix
*----------------------------------------------------------------------*
FORM mostrarmatrix.
 DATA: fil    TYPE P,
       col    TYPE P,
       ncolor TYPE I VALUE 5,
       ccar.

 LOOP AT ti_matrix.
   FORMAT COLOR = ncolor.
   fil = SY-TABIX.
   DO numcols TIMES.
     col = SY-INDEX.
     POSITION col.
     READ TABLE ti_colcolor WITH KEY col = col BINARY SEARCH.
     IF SY-SUBRC EQ 0.
       ccar = ti_matrix-linea+col(1).
       IF ccar = SPACE.
         WRITE: ti_matrix-linea+col(1).
       ELSE.
         WRITE: ti_matrix-linea+col(1) INTENSIFIED OFF.
       ENDIF.
     ELSE.
       WRITE: ti_matrix-linea+col(1).
     ENDIF.
     SKIP TO LINE fil.
   ENDDO.
   IF SY-TABIX EQ numfils. EXIT. ENDIF.
*    write: / ti_matrix.
 ENDLOOP.
ENDFORM.                    " mostrarmatrix
*&---------------------------------------------------------------------*
*&      Form  movermatrix
*----------------------------------------------------------------------*
FORM movermatrix.
 DATA: ti_matrix0 LIKE ti_matrix OCCURS 10,
       wa_ultimo  LIKE ti_matrix,
       wa_aux     LIKE ti_matrix,
       wa_aux2    LIKE ti_matrix,
       max        TYPE P,
       lin        TYPE P.
 FIELD-SYMBOLS: <matrix> LIKE ti_matrix.
 max = numfils * 8.
 ADD 1 TO linea.
 lin  = linea * 8.
*  IF linea EQ numfils.
 IF lin GE max.
   PERFORM gencolcolor.
   Perform CrearMatrix.
   CLEAR linea.
 ENDIF.
**---- Mover el ultimo al 1ero
 READ TABLE ti_matrix INDEX FILS.
 MOVE-CORRESPONDING ti_matrix TO wa_ultimo.
**---- desplazar hacia abajo desde el 1er registro
 LOOP AT ti_matrix ASSIGNING <matrix>.
   IF SY-TABIX EQ 1.
     MOVE-CORRESPONDING <matrix>  TO wa_aux.
     MOVE-CORRESPONDING wa_ultimo TO <matrix>.
   ELSE.
     MOVE-CORRESPONDING <matrix>  TO wa_aux2.
     MOVE-CORRESPONDING wa_aux    TO <matrix>.
     MOVE-CORRESPONDING wa_aux2   TO wa_aux.
   ENDIF.
 ENDLOOP.
ENDFORM.                    " movermatrix
*&---------------------------------------------------------------------*
*&      Form  genespaciosblancos
*----------------------------------------------------------------------*
FORM genespaciosblancos.
 DATA: numcol TYPE P.
 REFRESH ti_colblancos.
**---- 12 numeros de columnas a resaltar
 DO BLANCOS TIMES.
   PERFORM gennum USING numcol.
   MOVE numcol TO ti_colblancos-col.
   APPEND ti_colblancos.
 ENDDO.
ENDFORM.                    " genespaciosblancos
*&---------------------------------------------------------------------*
*&      Form  colblancas
*----------------------------------------------------------------------*
FORM colblancas USING    P_COL
               CHANGING P_CCAR.
 READ TABLE ti_colblancos WITH KEY col = p_col.
 IF SY-SUBRC EQ 0.
   p_ccar = SPACE.
 ENDIF.
ENDFORM.                    " colblancas
*&---------------------------------------------------------------------*
*&      Form  gencolor
*----------------------------------------------------------------------*
FORM gencolcolor.
 DATA: numcol TYPE P.
 REFRESH ti_colcolor.
**---- 12 numeros de columnas a resaltar
 DO COLOR TIMES.
   PERFORM gennum USING numcol.
   MOVE numcol TO ti_colcolor-col.
   APPEND ti_colcolor.
 ENDDO.
ENDFORM.                    " gencolor
Comentarios
Buscar
¡Sólo los usuarios registrados pueden escribir comentarios!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Actualizado ( Lunes, 07 de Julio de 2008 09:16 )
 
home search