| ZNIGMINE |
|
|
|
| Código fuente - Juegos |
| Martes, 08 de Julio de 2003 21:44 |
|
Otro buscaminas
REPORT YNIGMINE NO STANDARD PAGE HEADING. ************************************************************************ * Installationsanweisungen : * * Crea el status 'LIST1' e incluye los siguientes botones: * * Apriete botón BOMB --> Bomba * Comprobar bomba FERT --> Marcar * * Crea el status PICK en tecla F2 * * Crea los siguientes textos.. * * Text-001 --> Localiza las bombas * Text-002 --> B U S C A M I N A S * ************************************************************************ ***************************** interne Tabellen ************************* DATA : BEGIN OF ITAB OCCURS 20, FELD01 TYPE C, FELD02 TYPE C, FELD03 TYPE C, FELD04 TYPE C, FELD05 TYPE C, FELD06 TYPE C, FELD07 TYPE C, FELD08 TYPE C, FELD09 TYPE C, FELD10 TYPE C, FELD11 TYPE C, FELD12 TYPE C, FELD13 TYPE C, FELD14 TYPE C, FELD15 TYPE C, FELD16 TYPE C, FELD17 TYPE C, FELD18 TYPE C, FELD19 TYPE C, FELD20 TYPE C, END OF ITAB. DATA : BRETT LIKE ITAB OCCURS 10 WITH HEADER LINE. DATA : ITAB2 LIKE ITAB OCCURS 10 WITH HEADER LINE. ***************************** Datenfelder ****************************** DATA : X_WERT LIKE DATATYPE-INTEGER2, Y_WERT LIKE DATATYPE-INTEGER2, H_TREFFER TYPE I, SPIEL_ANFANG LIKE SY-UZEIT, H_ANTWORT TYPE N, H_BOMBEN TYPE I, H_AUSGEW_BOMB TYPE I, HLP_FELD(15) TYPE C, FELD(2) TYPE C, CURFIELD(20) TYPE C, CURLINE(20) TYPE C, INDEX LIKE SY-INDEX, TABIX LIKE SY-TABIX, G_TABIX LIKE SY-TABIX, G_G_TABIX LIKE SY-TABIX, G_INDEX LIKE SY-INDEX. ****************************** Parameter ******************************* SELECTION-SCREEN BEGIN OF BLOCK INIT WITH FRAME. SELECTION-SCREEN COMMENT 27(50) TEXT-002. SELECTION-SCREEN : SKIP 2. SELECTION-SCREEN : BEGIN OF LINE. SELECTION-SCREEN COMMENT 26(20) TEXT-001. SELECTION-SCREEN : POSITION 48. PARAMETERS : ANZAHL(2) TYPE C DEFAULT '25'. SELECTION-SCREEN : END OF LINE. SELECTION-SCREEN END OF BLOCK INIT. **************************** Field-Symbols ***************************** FIELD-SYMBOLS : <f>, <g>. ************************** at selection screen ************************* AT SELECTION-SCREEN. IF ANZAHL LT '10' OR ANZAHL GT '50'. MESSAGE E398(00) WITH 'Selecciona entre 10 y 50!'. ENDIF. SPIEL_ANFANG = SY-UZEIT. ************************ start-of-selection **************************** START-OF-SELECTION. SET PF-STATUS 'LIST1'. PERFORM INIT. PERFORM BELEGUNG. PERFORM AUSGABE. END-OF-SELECTION. ************************* end-of-selection ***************************** *&---------------------------------------------------------------------* *& Form BELEGUNG *&---------------------------------------------------------------------* FORM BELEGUNG. H_AUSGEW_BOMB = ANZAHL. DO. IF SY-INDEX > ANZAHL. EXIT. ENDIF. CALL FUNCTION 'RANDOM_INITIALIZE' EXPORTING CHARSET = '0123456789' EXCEPTIONS OTHERS = 1. CALL FUNCTION 'RANDOM_I2' EXPORTING RND_MIN = 1 RND_MAX = 20 IMPORTING RND_VALUE = X_WERT EXCEPTIONS OTHERS = 1. call function 'RANDOM_INITIALIZE' EXPORTING CHARSET = '01234567890' exceptions others = 1. CALL FUNCTION 'RANDOM_I2' EXPORTING RND_MIN = 1 RND_MAX = 15 IMPORTING RND_VALUE = Y_WERT EXCEPTIONS OTHERS = 1. READ TABLE ITAB INDEX Y_WERT. FELD = X_WERT. UNPACK FELD TO FELD. CONCATENATE 'ITAB-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <f>. IF <f> IS INITIAL. <f> = 'B'. MODIFY ITAB INDEX Y_WERT. ELSE. ANZAHL = ANZAHL + 1. ENDIF. ENDDO. LOOP AT ITAB2. G_TABIX = SY-TABIX. DO 20 TIMES. READ TABLE ITAB INDEX G_TABIX. FELD = SY-INDEX. UNPACK FELD TO FELD. CONCATENATE 'ITAB-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <f>. CONCATENATE 'ITAB2-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. G_INDEX = SY-INDEX. IF <f> = 'B'. <g> = <f>. ELSE. PERFORM ZAHL_BESTIMMEN. IF <g> IS INITIAL. <g> = '0'. ENDIF. ENDIF. ENDDO. MODIFY ITAB2. ENDLOOP. ENDFORM. " BELEGUNG *&---------------------------------------------------------------------* *& Form AUSGABE *&---------------------------------------------------------------------* FORM AUSGABE. FORMAT COLOR OFF INVERSE OFF INTENSIFIED OFF. ULINE AT 0(81). LOOP AT BRETT. DO 20 TIMES. FELD = SY-INDEX. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <f>. IF <f> = '®'. ADD 1 TO H_TREFFER. ELSEIF <f> = 'B'. CONCATENATE 'ITAB2-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. READ TABLE ITAB2 INDEX SY-TABIX. IF <g> = 'B'. ADD 1 TO H_TREFFER. ENDIF. ENDIF. CASE <f>. WHEN '0' OR '1' OR '2' OR '3' OR '4' OR '5' OR '6' OR '7' OR '8' OR '9'. FORMAT INVERSE OFF INTENSIFIED. WHEN 'B'. FORMAT COLOR 6 INVERSE. ENDCASE. IF SY-INDEX = 1. WRITE:/ SY-VLINE. ELSE. WRITE: SY-VLINE. ENDIF. WRITE: <f> NO-ZERO. FORMAT COLOR OFF INVERSE OFF INTENSIFIED OFF. ENDDO. WRITE: SY-VLINE. ULINE AT 0(81). ENDLOOP. SKIP 1. WRITE: /10 SY-ULINE(64). WRITE: /10 SY-VLINE, 'Bombar marcadas:', H_BOMBEN, 'sobre', H_AUSGEW_BOMB, 'bombas', SY-VLINE. WRITE: /10 SY-ULINE(64). IF SY-UCOMM = 'FERT'. H_TREFFER = 99. ENDIF. IF H_TREFFER = H_AUSGEW_BOMB. SPIEL_ANFANG = SY-UZEIT - SPIEL_ANFANG. MESSAGE I398(00) WITH 'Viva, viva. Eres mi heroe.' 'Has acabado el juego en sóo' SPIEL_ANFANG 'intentos!'. PERFORM SPIEL_ENDE. ENDIF. CLEAR: H_TREFFER. ENDFORM. " AUSGABE *&---------------------------------------------------------------------* *& Form INIT *&---------------------------------------------------------------------* FORM INIT. DO 15 TIMES. CLEAR ITAB. APPEND ITAB. ENDDO. DO 15 TIMES. CLEAR ITAB2. APPEND ITAB2. ENDDO. DO 15 TIMES. BRETT = '®®®®®®®®®®®®®®®®®®®®'. APPEND BRETT. ENDDO. ENDFORM. " INIT ************************************************************************ AT LINE-SELECTION. GET CURSOR FIELD CURFIELD LINE CURLINE. TABIX = CURLINE / 2. CASE SY-UCOMM. WHEN 'PICK'. PERFORM FELD_PRUEF. ENDCASE. SY-LSIND = 0. PERFORM AUSGABE. AT USER-COMMAND. GET CURSOR FIELD CURFIELD LINE CURLINE. TABIX = CURLINE / 2. CASE SY-UCOMM. WHEN 'BOMB'. IF CURFIELD CS 'BRETT'. PERFORM MARK_BOMBE. ENDIF. WHEN 'FERT'. BRETT[] = ITAB2[]. ENDCASE. SY-LSIND = 0. PERFORM AUSGABE. *&---------------------------------------------------------------------* *& Form ZAHL_BESTIMMEN *&---------------------------------------------------------------------* FORM ZAHL_BESTIMMEN. * drüber TABIX = G_TABIX - 1. READ TABLE ITAB INDEX TABIX. IF SY-SUBRC IS INITIAL. PERFORM FELD_CHECK USING -1. PERFORM FELD_CHECK USING SPACE. PERFORM FELD_CHECK USING 1. ENDIF. * daneben READ TABLE ITAB INDEX G_TABIX. IF SY-SUBRC IS INITIAL. PERFORM FELD_CHECK USING -1. PERFORM FELD_CHECK USING 1. ENDIF. * drunter TABIX = G_TABIX + 1. READ TABLE ITAB INDEX TABIX. IF SY-SUBRC IS INITIAL. PERFORM FELD_CHECK USING -1. PERFORM FELD_CHECK USING SPACE. PERFORM FELD_CHECK USING 1. ENDIF. ENDFORM. " ZAHL_BESTIMMEN *&---------------------------------------------------------------------* *& Form FELD_CHECK *&---------------------------------------------------------------------* FORM FELD_CHECK USING POS. FELD = G_INDEX + POS. UNPACK FELD TO FELD. CONCATENATE 'ITAB-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <f>. IF <f> EQ 'B' AND SY-SUBRC IS INITIAL. ADD 1 TO <g>. ENDIF. ENDFORM. " FELD_CHECK *&---------------------------------------------------------------------* *& Form FELD_PRUEF *&---------------------------------------------------------------------* FORM FELD_PRUEF. READ TABLE ITAB2 INDEX TABIX. READ TABLE BRETT INDEX TABIX. IF SY-SUBRC IS INITIAL. CONCATENATE 'ITAB2-FELD' CURFIELD+10(2) INTO HLP_FELD. ASSIGN (HLP_FELD) TO <f>. IF SY-SUBRC IS INITIAL. CASE <f>. WHEN 'B'. CONCATENATE 'brett-FELD' CURFIELD+10(2) INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. IF <g> = 'B'. ELSE. DO 100 TIMES. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING PERCENTAGE = SY-INDEX TEXT = ' ' EXCEPTIONS OTHERS = 1. ENDDO. * call function 'G_RW_WS_EXECUTE' * exporting * commandline = space * program = 'C:\WINNT\SYSTEM32\MSPAINT.EXE T:\SAP_EXT\BAUER\BOMB.BMP' * out_file = space * exceptions * others = 1. MESSAGE I398(00) WITH 'BOOOM!'. PERFORM SPIEL_ENDE. ENDIF. WHEN '0'. ASSIGN (CURFIELD) TO <g>. * <g> = <f>. <g> = ' '. MODIFY BRETT INDEX TABIX. <f> = 'X'. MODIFY ITAB2 INDEX TABIX. INDEX = CURFIELD+10(2). PERFORM BENACHBARTE_NULLEN. WHEN OTHERS. IF <f> NE 'X'. ASSIGN (CURFIELD) TO <g>. <g> = <f>. MODIFY BRETT INDEX TABIX. ENDIF. ENDCASE. ENDIF. ENDIF. ENDFORM. " FELD_PRUEF *&---------------------------------------------------------------------* *& Form BENACHBARTE_NULLEN *&---------------------------------------------------------------------* FORM BENACHBARTE_NULLEN. PERFORM FELD_0 USING TABIX INDEX. ENDFORM. " BENACHBARTE_NULLEN *&---------------------------------------------------------------------* *& Form FELD_0 *&---------------------------------------------------------------------* FORM FELD_0 USING P_TABIX P_INDEX. DATA : TAB LIKE SY-TABIX, IND LIKE SY-INDEX. TAB = P_TABIX - 1. IND = P_INDEX - 1. READ TABLE BRETT INDEX TAB. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. IND = P_INDEX. read table brett index tab. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. IND = P_INDEX + 1. read table brett index tab. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. TAB = P_TABIX. IND = P_INDEX - 1. read table brett index tab. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. IND = P_INDEX + 1. read table brett index tab. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. TAB = P_TABIX + 1. IND = P_INDEX - 1. read table brett index tab. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. IND = P_INDEX. read table brett index tab. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. IND = P_INDEX + 1. read table brett index tab. IF SY-SUBRC IS INITIAL. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'BRETT-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <g>. PERFORM FELD_CHECK_0 USING TAB IND. ENDIF. ENDFORM. " FELD_0 *&---------------------------------------------------------------------* *& Form FELD_CHECK_0 *&---------------------------------------------------------------------* FORM FELD_CHECK_0 USING TAB IND. READ TABLE ITAB2 INDEX TAB. FELD = IND. UNPACK FELD TO FELD. CONCATENATE 'ITAB2-FELD' FELD INTO HLP_FELD. ASSIGN (HLP_FELD) TO <f>. IF SY-SUBRC IS INITIAL. IF <f> EQ '0'. <g> = ' '. MODIFY BRETT INDEX TAB. <f> = 'X'. MODIFY ITAB2 INDEX TAB. PERFORM FELD_0 USING TAB IND. ELSE. IF <f> CA '12345678'. <g> = <f>. MODIFY BRETT INDEX TAB. ENDIF. ENDIF. ENDIF. ENDFORM. " FELD_CHECK_0 *&---------------------------------------------------------------------* *& Form MARK_BOMBE *&---------------------------------------------------------------------* FORM MARK_BOMBE. READ TABLE BRETT INDEX TABIX. ASSIGN (CURFIELD) TO <g>. CASE <g>. WHEN '®'. <g> = 'B'. ADD 1 TO H_BOMBEN. WHEN 'B'. <g> = '®'. SUBTRACT 1 FROM H_BOMBEN. WHEN OTHERS. ENDCASE. MODIFY BRETT INDEX TABIX. ENDFORM. " MARK_BOMBE *&---------------------------------------------------------------------* *& Form SPIEL_ENDE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM SPIEL_ENDE. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING TITLEBAR = 'La partida se ha terminado' TEXT_QUESTION = '&iquest;Quieres jugar otra vez?' TEXT_BUTTON_1 = 'Si'(003) * ICON_BUTTON_1 = ' ' TEXT_BUTTON_2 = 'No'(004) * ICON_BUTTON_2 = ' ' DISPLAY_CANCEL_BUTTON = ' ' DEFAULT_BUTTON = '1' START_COLUMN = 25 START_ROW = 6 IMPORTING ANSWER = H_ANTWORT EXCEPTIONS TEXT_NOT_FOUND = 1 OTHERS = 2. IF H_ANTWORT = 1. SUBMIT YNIGMINE VIA SELECTION-SCREEN. ELSE. LEAVE PROGRAM. ENDIF. ENDFORM. " SPIEL_ENDE |
| Comentarios |
|
¡Sólo los usuarios registrados pueden escribir comentarios!
Powered by !JoomlaComment 3.26
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."
| < Prev | Próximo > |
|---|




