Friday, April 11, 2014
Ball Drop! - El juego
Sunday, December 13, 2009
ChessJam - Ajedrez en línea
Debo admitir que soy muy malo en Ajedrez...pero eso no significa que no me guste -;)
Así que cuando estaba navegando en mi RSS Reader, encontré ChessJam.
ChessJam es una aplicación construida con Adobe Flex y ColdFusion corriendo en Adobe AIR.
Pero se estarán preguntando...porque tanta conmoción por un juego de Ajedrez? Fácil...puedes jugar contra robots o contra gente de cualquier lugar del mundo...chat incluido...para mi...eso es asombroso -:)

Debemos crear una cuenta y luego logearnos.

Podemos escoger entre un juego simple of chatear y retar a otros jugadores....

Podemos escoger varios tipos de juegos (Dependiendo del tiempo de duración) o entrar en un Torneo.

Tenemos muchas oportunidades para decidir si queremos jugar con un robot o con otro ser humano.

Podemos escoger entre una vista 3D...

o una clásica vista 2D...

Cuando te inscribes...debes indicar tu país de residencia...para que el sistema pueda correr algunas interesantes estadísticas.
Así que...porque no lo dan a este juego una oportunidad? Juegenlo...disfrutenlo y pasenselo a sus amigos -;)
Saludos,
Blag.
Friday, October 03, 2008
Quake Live...Está vivo!
Hace algunas semanas...Bueno...En realidad la semana pasada LOL Me apunté para el Programa Beta de Quake Live...Afortunadamente...Me aceptaron -;) Así que me creé una cuenta...Descargué el cliente web (Funciona perfecto en Firefox, no lo he probado en otros browsers...aún).
Entonces...¿Alguna vez han jugado Quake, Doom o Wolfenstein 3D? Definitivamente, yo sí...Soy un gran fan de los juegos de ID Software...
Veamos algunas imagenes...Primero, puedes escoger de varios personajes...

Puedes acceder a una arena "Aprende primero"...

Un bot llamado Crash está listo para darte tus primeras lecciones...

Inclusive puedes pelear contra Crash en un pequeño DeathMatch de práctica...

Los gráficos son muy buenos, los movimientos son sencillos y los controles responden muy bien y tienes una gran variedad de armas...

Como en muchos juegos On-Line, data adicional es downloaded cuando cargas una nueva Arena, pero la descarga es bastante veloz -;)

En otras palabras...Quake Live es excelente!!!
Saludos,
Blag.
Sunday, June 15, 2008
ToonDoo...Crea tus comics en la web...
Siempre has querido hacer comics...pero no sabes dibujar? No te preocupes, yo tampoco...jejeje...Con ToonDoo todos podemos ser artistas -;)

Primero debemos escoger como va a ser el formato de nuestro comic.

Luego, debemos escoger a los personajes de nuestra historia.

Escogemos un fondo acorde a la historia...O bueno, no tan acorde... -;)

Incluimos el texto de los personajes...

Inclusive podemos crear nuevos personajes o incluso modificar personajes ya existentes...
Este comic es para promocionar mi blog... -:)
Saludos,
Blag.
Monday, June 09, 2008
Community Clubhouse en SmallWorlds
En mi blog anterior SmallWorlds hablé sobre la idea de tener un Community Clubhouse dentro de este mundo virtual...Adivinen que...No quise esperar...Y sacrifiqué mi "casa" en favor de la comunidad.
Si tenemos una isla de SAP dentro de Second Life...¿Por qué no podemos tener una casa aquí?
Aquí hay algunas imágenes...Necesito más dinero para hacerla mejor...Pero todos son libres de hacerme una vista y firmar el libro de visitas...Solo busquen a Alvaro Tejada y teletransportense al Clubhouse.



Estoy seguro que con estas imagenes van a interesarse más en esto...Creanme...Es muy divertido -:)
Quien se apunta para un Community Day???
Saludos,
Blag.
Wednesday, April 30, 2008
Inform 7 - Creando Ficción Interactiva
Mi pasión por los juegos de Ficción Interactiva ha regresado gracias a que descargué la última versión de Inform 7 un motor para creación de juegos de este genero.
El creado de Inform Graham Nelson es todo un Gurú puesto que su creación hace que la programación de juegos IF sea muy sencilla...Sobre todo con la versión 7, puesto que se utiliza el Natural Language...Es decir, se programa como si se estuviera escribiendo un libro.
"Hello World" by "I.F. Author"
The story headline is "An Interactive Example".
The Living Room is a room. "A comfortably furnished living room." The Kitchen is north of the Living Room. The Front Door is south of the Living Room. The Front Door is a closed locked door.
El entorno de programación es simple pero directo, es decir, ayuda mucho -:)




Claro, si les preocupa que todo esté en Inglés...Pues bueno, siempre hay una solución -;) Pueden descargar InformATE! que es una versión de Inform 6 totalmente en Español...Y por supuesto, la página del CAAD es al lugar donde hay que ir para conseguir juegos, ayuda y algunos buenos amigos -;)
Saludos,
Blag.
Tuesday, April 29, 2008
Master Mind - Juego en ABAP
En la tarde, publiqué este blog en el SDN ABAP's Mind Game, así que me toca publicarlo aquí también -;)
Hice un juego al estilo de Master Mind, que es donde la PC piensa en el orden de 5 números y nosotros tenemos que adivinar cual es...Claro que el sistema nos indica si las posiciones que ingresamos son correctas o incorrectas.
Primero comencé con un simple Dynpro...
Luego, escribí el código fuente...
REPORT ZABAP_MIND_GAME.
*&---------------------------------------------------------*
* CONSTANTS *
*&---------------------------------------------------------*
CONSTANTS: line_length TYPE i VALUE 254.
*&---------------------------------------------------------*
* TYPES *
*&---------------------------------------------------------*
TYPES: BEGIN OF ty_rand_table,
value(1) TYPE c,
END OF ty_rand_table.
*&---------------------------------------------------------*
* INTERNAL TABLES *
*&---------------------------------------------------------*
DATA: t_rand_table TYPE STANDARD TABLE OF ty_rand_table,
t_user_table TYPE STANDARD TABLE OF ty_rand_table,
t_game_lines TYPE TABLE OF tline-tdline,
data_rand TYPE REF TO data,
data_lines TYPE REF TO data.
*&---------------------------------------------------------*
* FIELD-SYMBOLS *
*&---------------------------------------------------------*
FIELD-SYMBOLS: <fs_rand_table> LIKE LINE OF t_rand_table,
<fs_user_table> LIKE LINE OF t_user_table,
<fs_rand_value> LIKE LINE OF t_rand_table.
*&---------------------------------------------------------*
* VARIABLES *
*&---------------------------------------------------------*
DATA: custom_container TYPE REF TO cl_gui_custom_container,
text_editor TYPE REF TO cl_gui_textedit,
w_ucomm TYPE sy-ucomm,
ran_int TYPE qf00-ran_int,
flag TYPE c,
counter TYPE c,
gv_line TYPE string,
button_count TYPE c,
xtext TYPE tline-tdline,
game_win TYPE string,
game_counter TYPE string.
DATA: message_one TYPE string,
message_two TYPE string,
message_three TYPE string,
message_four TYPE string,
message_five TYPE string.
DATA: gv_one TYPE c,
gv_two TYPE c,
gv_three TYPE c,
gv_four TYPE c,
gv_five TYPE c.
DATA: gv_flag_one TYPE c,
gv_flag_two TYPE c,
gv_flag_three TYPE c,
gv_flag_four TYPE c,
gv_flag_five TYPE c.
DATA: gv_user_one TYPE c,
gv_user_two TYPE c,
gv_user_three TYPE c,
gv_user_four TYPE c,
gv_user_five TYPE c.
*----------------------------------------------------------*
* START-OF-SELECTION *
*----------------------------------------------------------*
START-OF-SELECTION.
CALL SCREEN 0100.
*&---------------------------------------------------------*
*& Form call_editor *
*&---------------------------------------------------------*
FORM call_editor.
IF text_editor IS INITIAL.
CREATE OBJECT custom_container
EXPORTING
container_name = 'CUSTOM_CONTROL'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
CREATE OBJECT text_editor
EXPORTING
wordwrap_mode =
cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = line_length
wordwrap_to_linebreak_mode = cl_gui_textedit=>true
parent = custom_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
gui_type_not_supported = 5
others = 6.
CALL METHOD text_editor->set_readonly_mode
EXPORTING readonly_mode = 1.
ENDIF.
PERFORM get_randoms.
ENDFORM.
*&---------------------------------------------------------*
*& Form get_randoms *
*&---------------------------------------------------------*
FORM get_randoms.
CREATE DATA data_rand TYPE ty_rand_table.
ASSIGN data_rand->* TO <fs_rand_table>.
WHILE flag EQ space.
CALL FUNCTION 'QF05_RANDOM_INTEGER'
EXPORTING
ran_int_max = 5
ran_int_min = 1
IMPORTING
ran_int = ran_int
EXCEPTIONS
invalid_input = 1
OTHERS = 2.
READ TABLE t_rand_table ASSIGNING <fs_rand_value>
WITH KEY value = ran_int.
IF sy-subrc NE 0.
<fs_rand_table>-value = ran_int.
APPEND <fs_rand_table> TO t_rand_table.
counter = counter + 1.
IF counter EQ 5.
flag = 'X'.
ENDIF.
ENDIF.
ENDWHILE.
game_counter = 1.
ENDFORM. " get_randoms
*&---------------------------------------------------------*
*& Form validate_game *
*&---------------------------------------------------------*
FORM validate_game.
LOOP AT t_rand_table ASSIGNING <fs_rand_value>.
IF gv_one IS INITIAL.
gv_one = <fs_rand_value>-value.
ELSEIF gv_two IS INITIAL.
gv_two = <fs_rand_value>-value.
ELSEIF gv_three IS INITIAL.
gv_three = <fs_rand_value>-value.
ELSEIF gv_four IS INITIAL.
gv_four = <fs_rand_value>-value.
ELSEIF gv_five IS INITIAL.
gv_five = <fs_rand_value>-value.
ENDIF.
ENDLOOP.
CLEAR: gv_user_one,gv_user_two,gv_user_three,
gv_user_four,gv_user_five.
LOOP AT t_user_table ASSIGNING <fs_user_table>.
IF gv_user_one IS INITIAL.
gv_user_one = <fs_user_table>-value.
ELSEIF gv_user_two IS INITIAL.
gv_user_two = <fs_user_table>-value.
ELSEIF gv_user_three IS INITIAL.
gv_user_three = <fs_user_table>-value.
ELSEIF gv_user_four IS INITIAL.
gv_user_four = <fs_user_table>-value.
ELSEIF gv_user_five IS INITIAL.
gv_user_five = <fs_user_table>-value.
ENDIF.
ENDLOOP.
CLEAR: game_win.
IF gv_one EQ gv_user_one.
message_one = 'First is Ok!'.
game_win = game_win + 1.
ELSE.
message_one = 'First is Wrong!'.
game_win = game_win - 1.
ENDIF.
IF gv_two EQ gv_user_two.
message_two = 'Second is Ok!'.
game_win = game_win + 1.
ELSE.
message_two = 'Second is Wrong!'.
game_win = game_win - 1.
ENDIF.
IF gv_three EQ gv_user_three.
message_three = 'Third is Ok!'.
game_win = game_win + 1.
ELSE.
message_three = 'Third is Wrong!'.
game_win = game_win - 1.
ENDIF.
IF gv_four EQ gv_user_four.
message_four = 'Forth is Ok!'.
game_win = game_win + 1.
ELSE.
message_four = 'Forth is Wrong!'.
game_win = game_win - 1.
ENDIF.
IF gv_five EQ gv_user_five.
message_five = 'Fifth is Ok!'.
game_win = game_win + 1.
ELSE.
message_five = 'Fifth is Wrong!'.
game_win = game_win - 1.
ENDIF.
IF game_win EQ 5.
CLEAR: message_one,message_two,message_three,
message_four,message_five.
message_one = 'You win!'.
CONCATENATE 'In' game_counter 'tries'
INTO message_two SEPARATED BY space.
ELSE.
game_counter = game_counter + 1.
CLEAR: gv_flag_one,gv_flag_two,gv_flag_three,
gv_flag_four,gv_flag_five,sy-ucomm.
ENDIF.
ENDFORM. " validate_game
*&---------------------------------------------------------*
*& Module STATUS_0100 OUTPUT *
*&---------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN'.
SET TITLEBAR 'TITLE'.
IF flag EQ space.
PERFORM call_editor.
ELSE.
LOOP AT SCREEN.
IF screen-name EQ 'ONE' AND gv_flag_one EQ 'X'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'TWO' AND gv_flag_two EQ 'X'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'THREE' AND gv_flag_three EQ 'X'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'FOUR' AND gv_flag_four EQ 'X'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name EQ 'FIVE' AND gv_flag_five EQ 'X'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
IF button_count EQ 5.
CLEAR button_count.
SHIFT gv_line LEFT DELETING LEADING space.
SPLIT gv_line AT space INTO TABLE t_user_table.
PERFORM validate_game.
xtext = gv_line.
APPEND xtext TO t_game_lines.
CLEAR gv_line.
CALL METHOD text_editor->set_text_as_r3table
EXPORTING table = t_game_lines.
ENDIF.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT *
*&---------------------------------------------------------*
MODULE user_command_0100 INPUT.
w_ucomm = sy-ucomm.
CASE w_ucomm.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
SET SCREEN 0.
EXIT.
WHEN 'ONE'.
CONCATENATE gv_line '1' INTO
gv_line SEPARATED BY space.
button_count = button_count + 1.
gv_flag_one = 'X'.
WHEN 'TWO'.
CONCATENATE gv_line '2' INTO
gv_line SEPARATED BY space.
button_count = button_count + 1.
gv_flag_two = 'X'.
WHEN 'THREE'.
CONCATENATE gv_line '3' INTO
gv_line SEPARATED BY space.
button_count = button_count + 1.
gv_flag_three = 'X'.
WHEN 'FOUR'.
CONCATENATE gv_line '4' INTO
gv_line SEPARATED BY space.
button_count = button_count + 1.
gv_flag_four = 'X'.
WHEN 'FIVE'.
CONCATENATE gv_line '5' INTO
gv_line SEPARATED BY space.
button_count = button_count + 1.
gv_flag_five = 'X'.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Finalmente, tomé algunos pantallazos -;)
Espero que les guste -:)
Saludos,
Blag.
Wednesday, February 13, 2008
ZTIC_TAC_TOE (Juego en ABAP)
Ayer estaba aburrido en la oficina, esperando una orden de transporte y que una tabla me devolviera algunos resultados...Entonces, me puse a pensar acerca de mi nuevo blog...Como ya he escrito tantas cosas, me es un poco dificil crear algo nuevo y extraño -;) Felizmente me acordé que hace algún tiempo hice un Tic-Tac-Toe (Michi o Gato) en Ruby, así que pensé que hacerlo en ABAP no sería muy díficil...Y no lo fué -;) Me tomó solamente 20 minutos hacer esto...
El juego tiene una pobre y limitada Inteligencia Artificial...Debemos ingresar un número del 1 al 9 y presionar Play! para que la computadora haga su jugada debemos presionar Play! nuevamente...




Ahora, el código fuente...
*&-----------------------------------------------------------*
*& Report ZTIC_TAC_TOE *
*&-----------------------------------------------------------*
REPORT ZTIC_TAC_TOE NO STANDARD PAGE HEADING.
TYPES: BEGIN OF TY_PLAYS,
PLAY TYPE C,
END OF TY_PLAYS.
DATA: T_PLAYS TYPE STANDARD TABLE OF TY_PLAYS.
FIELD-SYMBOLS: <FS_PLAYS> LIKE LINE OF T_PLAYS.
DATA: RANDOM TYPE REF TO CL_ABAP_RANDOM.
DATA: SEED TYPE I,
WIN_FLAG TYPE C,
FLAG_OK TYPE C,
W_LINES TYPE I,
FLAG TYPE C,
PLAYER_ONE TYPE C,
PLAYER_TWO TYPE C,
ONE TYPE C,
TWO TYPE C,
THREE TYPE C,
FOUR TYPE C,
FIVE TYPE C,
SIX TYPE C,
SEVEN TYPE C,
EIGHT TYPE C,
NINE TYPE C.
*-----------------------------------------------------------*
* START-OF-SELECTION *
*-----------------------------------------------------------*
START-OF-SELECTION.
FLAG = '1'.
SET PF-STATUS 'BAR'.
PERFORM BOARD USING '' '' ''.
PERFORM PLAYER_ONE.
*-----------------------------------------------------------*
* FORM PLAYER_ONE *
*-----------------------------------------------------------*
FORM PLAYER_ONE.
IF WIN_FLAG EQ SPACE.
WRITE:/ 'Player one: '.
FORMAT INPUT ON.
WRITE: PLAYER_ONE.
FORMAT INPUT OFF.
ENDIF.
ENDFORM. "player_one
*-----------------------------------------------------------*
* FORM PLAYER_TWO *
*-----------------------------------------------------------*
FORM PLAYER_TWO.
IF WIN_FLAG EQ SPACE.
WRITE:/ 'Player two: '.
FORMAT INPUT ON.
WRITE: PLAYER_TWO.
FORMAT INPUT OFF.
ENDIF.
ENDFORM. "player_two
*-----------------------------------------------------------*
* FORM BOARD *
*-----------------------------------------------------------*
FORM BOARD USING P_PLAYER P_NUMBER FLAG_OK.
IF P_PLAYER NE SPACE AND P_NUMBER NE SPACE.
READ TABLE T_PLAYS WITH KEY PLAY = P_NUMBER
ASSIGNING <FS_PLAYS>.
IF NOT <FS_PLAYS> IS ASSIGNED OR SY-SUBRC NE 0.
APPEND INITIAL LINE TO T_PLAYS
ASSIGNING <FS_PLAYS>.
<FS_PLAYS>-PLAY = P_NUMBER.
UNASSIGN <FS_PLAYS>.
FLAG_OK = 'X'.
ELSE.
WRITE:/ 'Please select another number!'.
CLEAR: P_NUMBER,FLAG_OK.
ENDIF.
ENDIF.
CASE P_NUMBER.
WHEN '1'.
IF P_PLAYER EQ '1'.
ONE = 'X'.
ELSE.
ONE = 'O'.
ENDIF.
WHEN '2'.
IF P_PLAYER EQ '1'.
TWO = 'X'.
ELSE.
TWO = 'O'.
ENDIF.
WHEN '3'.
IF P_PLAYER EQ '1'.
THREE = 'X'.
ELSE.
THREE = 'O'.
ENDIF.
WHEN '4'.
IF P_PLAYER EQ '1'.
FOUR = 'X'.
ELSE.
FOUR = 'O'.
ENDIF.
WHEN '5'.
IF P_PLAYER EQ '1'.
FIVE = 'X'.
ELSE.
FIVE = 'O'.
ENDIF.
WHEN '6'.
IF P_PLAYER EQ '1'.
SIX = 'X'.
ELSE.
SIX = 'O'.
ENDIF.
WHEN '7'.
IF P_PLAYER EQ '1'.
SEVEN = 'X'.
ELSE.
SEVEN = 'O'.
ENDIF.
WHEN '8'.
IF P_PLAYER EQ '1'.
EIGHT = 'X'.
ELSE.
EIGHT = 'O'.
ENDIF.
WHEN '9'.
IF P_PLAYER EQ '1'.
NINE = 'X'.
ELSE.
NINE = 'O'.
ENDIF.
ENDCASE.
PERFORM CHECK_WHO_WINS.
DESCRIBE TABLE T_PLAYS LINES W_LINES.
IF WIN_FLAG EQ SPACE AND W_LINES EQ 9.
WIN_FLAG = 'X'.
WRITE: 'It''s a tie!'.
ENDIF.
WRITE:/ ONE,'|',TWO,'|',THREE.
WRITE:/ '--+---+---'.
WRITE:/ FOUR,'|',FIVE,'|',SIX.
WRITE:/ '--+---+---'.
WRITE:/ SEVEN,'|',EIGHT,'|',NINE.
IF P_PLAYER EQ '2'.
PERFORM PLAYER_ONE.
ELSEIF P_PLAYER EQ '1'.
PERFORM PLAYER_TWO.
ENDIF.
ENDFORM. "board
*-----------------------------------------------------------*
* FORM check_who_wins *
*-----------------------------------------------------------*
FORM CHECK_WHO_WINS.
IF ONE EQ TWO AND TWO EQ THREE.
IF THREE EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF THREE EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF FOUR EQ FIVE AND FIVE EQ SIX.
IF SIX EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF SIX EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF SEVEN EQ EIGHT AND EIGHT EQ NINE.
IF NINE EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF NINE EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF ONE EQ FOUR AND FOUR EQ SEVEN.
IF SEVEN EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF SEVEN EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF TWO EQ FIVE AND FIVE EQ EIGHT.
IF EIGHT EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF EIGHT EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF THREE EQ SIX AND SIX EQ NINE.
IF NINE EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF NINE EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF ONE EQ FIVE AND FIVE EQ NINE.
IF NINE EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF NINE EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF SEVEN EQ FIVE AND FIVE EQ THREE.
IF THREE EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF THREE EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
IF FOUR EQ FIVE AND FIVE EQ SIX.
IF SIX EQ 'X'.
WRITE:/ 'Player 1 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ELSEIF SIX EQ 'O'.
WRITE:/ 'Player 2 Wins!'.
WIN_FLAG = 'X'.
SKIP 2.
ENDIF.
ENDIF.
ENDFORM. "check_who_wins
*-----------------------------------------------------------*
* AT USER-COMMAND *
*-----------------------------------------------------------*
AT USER-COMMAND.
IF SY-UCOMM EQ 'BACK'.
SET SCREEN 0.
LEAVE PROGRAM.
ELSE.
IF WIN_FLAG EQ SPACE.
IF FLAG = '1'.
PLAYER_ONE = SY-LISEL+12(1).
PERFORM BOARD USING FLAG PLAYER_ONE FLAG_OK.
IF FLAG_OK = 'X'.
FLAG = '2'.
ENDIF.
ELSE.
SEED = CL_ABAP_RANDOM=>SEED( ).
RANDOM = CL_ABAP_RANDOM=>CREATE( SEED ).
PLAYER_TWO = RANDOM->INTINRANGE( LOW = 1 HIGH = 9 ).
PERFORM BOARD USING FLAG PLAYER_TWO FLAG_OK.
IF FLAG_OK = 'X'.
FLAG = '1'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
Espero que les guste y si pueden, mejorenlo -:)
Saludos,
Blag.
Friday, January 04, 2008
Mi primer juego con JavaME
Recordarán que en un post pasado, les hablé de un juego que hice con JavaME...Pues bueno, como lo prometido es deuda, aquí les muestro un par de imágenes...Claro, el juego no es ninguna maravilla...Es en realidad un clon bastante humilde de un juego hecho en Flash. Pero lo que en realidad me gusta del juego, es todo lo que aprendí desarrollándolo...
El juego es tan simple, como que Cosmo tiene que llenar los vasos de cerveza, puesto que Vicky, Wanda o Timmy los tocan mientras están vacíos, perderemos una vida. No hay niveles, puntaje o cosas parecidas...Solo mucho trabajo de Photoshop...Y un poco de programación -;)
Saludos,
Blag.
Monday, December 31, 2007
Mis novedades para el 2008...
Hoy estamos 31 de Diciembre del 2007 en Lima, Perú. Se nos acaba el año y tengo preparadas algunas sorpresas para el nuevo año...Y claro, también algunas que quiero hacer...
- El Arte de Programar SAP NetWeaver
- El Arte de Programar Adobe Flex
- El Arte de Programar Rails
- Asistir al SAP TechEd 2008
- Realizar el SAP Community Day - Lima 2008
- Llegar a los 100 blogs en el SDN (Me faltan 38 si no me equivoco...)
- Aprender OpenLaszlo
- Aprender Android
- Aprender Visual Prolog
- Lanzar el ABAPIF (Ficción Interactiva en ABAP)
- Llegar a 10K en el SDN (Me faltan algo de 1300 puntos...)
Saludos,
Blag.
Saturday, September 15, 2007
Ficción Interactiva en ABAP?
Como todos sabes, el ABAP no fué diseñado precisamente para crear juegos...Aunque eso no significa que no podamos hacerlo -;)
ABAPIF es el nombre del proyecto en el cual estoy trabajando junto con Abesh Bhattacharjee y Guido Brune.
La idea es tener un motor en el cual, cualquiera pueda crear un juego y distribuirlo a los demás.
Más información en ABAPIF - Interactive Fiction games engine.
Saludos,
Blag.
Wednesday, June 27, 2007
SDN Puzzle Game
Bueno, esto es algo que siempre quise hacer puesto que el SDN es una de mis grandes pasiones...Utilizando C# y un poco de imaginación desarrollé pienso yo, el primer juego del SDN -:D


Puedes descargalo en SDN Puzzle Game
Saludos,
Blag.