Finalizar juego al recolectar 4 objetos (tiles) diferentes

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Avatar de Usuario
Fabio
Mensajes: 44
Registrado: Vie, 17 Ene 2014, 21:52

Re: Finalizar juego al recolectar 4 objetos (tiles) diferentes

Mensajepor Fabio » Mié, 19 Mar 2014, 01:19

Genial. Ahi lo cambie y anda a la perfeccion. Se soluciono. Mil gracias.
Avatar de Usuario
Fabio
Mensajes: 44
Registrado: Vie, 17 Ene 2014, 21:52

Re: Finalizar juego al recolectar 4 objetos (tiles) diferentes

Mensajepor Fabio » Mié, 19 Mar 2014, 01:28

Con el IF PLAYER_TOUCHES x, y no se si andaba porque los objetos que voy a recolectar ocupan 2 tiles. Al final lo hice con el siguiente script y anda barbaro. Tal vez derroche lineas pero funciona.



# Isidoro - Ninja
# Copyleft 201X tu grupo roneón soft.
# Churrera 3.99.1

# flags:
# 1 - Arma 1
# 2 - Objetos en su sitio.
# 3 - Arma 2
# 4 - Arma 3
# 5 - Arma 4
# 6 - Arma 5
# 7 - Contador Objetos

# ARMA 1 ---------------------------------------------------------------------------------------------------------------------------------------------------

ENTERING GAME
IF TRUE
THEN
SET FLAG 1 = 0
SET FLAG 2 = 0
SET FLAG 3 = 0
SET FLAG 4 = 0
SET FLAG 5 = 0
SET FLAG 6 = 0
SET FLAG 7 = 0
#WARP_TO 12 1, 3
END
END
#----


ENTERING SCREEN 27

IF FLAG 2 = 0
THEN
SET TILE (13, 4) = 22
SET TILE (7, 1) = 30
SET TILE (7, 2) = 31
SET TILE (3, 6) = 23
SET TILE (3, 7) = 21
END
IF FLAG 1 = 0
THEN
SET TILE (6, 3) = 41
SET TILE (7, 3) = 42
SET_FIRE_ZONE 81, 33, 127, 63
END
END

PRESS_FIRE AT SCREEN 27
# Detectar Arma1.
# Lo detectamos definiendo un rectángulo de píxels.
IF PLAYER_IN_X 81, 127
IF PLAYER_IN_Y 33, 63
THEN
SET_FIRE_ZONE 0, 0, 0, 0
SET TILE (6, 3) = 0
SET TILE (7, 3) = 0
INC FLAG 1, 1
INC FLAG 7, 1
SOUND 7
PRINT_TILE_AT (5, 21) = 32
END
IF FLAG 7 = 5
THEN
WIN GAME
END
END

# ARMA 2 ------------------------------------------------------------------------------------------------------------------------------------------------


ENTERING SCREEN 31
IF FLAG 2 = 0
THEN
SET TILE (1, 7) = 23
SET TILE (1, 8) = 21
SET TILE (11, 2) = 28
SET TILE (11, 3) = 29
END
IF FLAG 3 = 0
THEN
SET TILE (6, 8) = 43
SET TILE (7, 8) = 44
SET TILE (8, 8) = 45
SET_FIRE_ZONE 81, 113, 143, 143
END
END

PRESS_FIRE AT SCREEN 31
# Detectar Arma2.
# Lo detectamos definiendo un rectángulo de píxels.
IF PLAYER_IN_X 81, 143
IF PLAYER_IN_Y 113, 143
THEN
SET_FIRE_ZONE 0, 0, 0, 0
SET TILE (6, 8) = 0
SET TILE (7, 8) = 0
SET TILE (8, 8) = 0
INC FLAG 3, 1
INC FLAG 7, 1
SOUND 7
PRINT_TILE_AT (7, 21) = 33
END
IF FLAG 7 = 5
THEN
WIN GAME
END
END


# ARMA 3 --------------------------------------------------------------------------------------------------------------------------------------------------


ENTERING SCREEN 7
IF FLAG 2 = 0
THEN
SET TILE (4, 1) = 30
SET TILE (4, 2) = 31
SET TILE (1, 8) = 21
SET TILE (1, 7) = 22
END
IF FLAG 4 = 0
THEN
SET TILE (9, 4) = 46
SET TILE (10, 4) = 47
SET_FIRE_ZONE 129, 49, 175, 79
END
END

PRESS_FIRE AT SCREEN 7
# Detectar Arma3.
# Lo detectamos definiendo un rectángulo de píxels.
IF PLAYER_IN_X 129, 175
IF PLAYER_IN_Y 49, 79
THEN
SET_FIRE_ZONE 0, 0, 0, 0
SET TILE (9, 4) = 0
SET TILE (10, 4) = 0
INC FLAG 4, 1
INC FLAG 7, 1
SOUND 7
PRINT_TILE_AT (10, 21) = 34
END
IF FLAG 7 = 5
THEN
WIN GAME
END
END


#ARMA 4 ----------------------------------------------------------------------------------------------------------------------------------------------------


ENTERING SCREEN 1
IF FLAG 2 = 0
THEN
SET TILE (5, 1) = 30
SET TILE (5, 2) = 31
SET TILE (4, 7) = 23
SET TILE (5, 7) = 21
SET TILE (5, 6) = 23
SET TILE (12, 1) = 24
SET TILE (1, 1) = 24
SET TILE (2, 8) = 22
END
IF FLAG 5 = 0
THEN
SET TILE (11, 3) = 39
SET TILE (12, 3) = 40
SET_FIRE_ZONE 161, 33, 207, 63
END
END

PRESS_FIRE AT SCREEN 1
# Detectar Arma4.
# Lo detectamos definiendo un rectángulo de píxels.
IF PLAYER_IN_X 161, 207
IF PLAYER_IN_Y 33, 63
THEN
SET_FIRE_ZONE 0, 0, 0, 0
SET TILE (11, 3) = 0
SET TILE (12, 3) = 0
INC FLAG 5, 1
INC FLAG 7, 1
SOUND 7
PRINT_TILE_AT (12, 21) = 35
END
IF FLAG 7 = 5
THEN
WIN GAME
END
END


#ARMA 5 ----------------------------------------------------------------------------------------------------------------------------------------------------


ENTERING SCREEN 12
IF FLAG 2 = 0
THEN
#SET TILE (5, 1) = 30
#SET TILE (5, 2) = 31
#SET TILE (4, 7) = 23
#SET TILE (5, 7) = 21
#SET TILE (5, 6) = 23
#SET TILE (12, 1) = 24
#SET TILE (1, 1) = 24
#SET TILE (2, 8) = 22
END
IF FLAG 6 = 0
THEN
SET TILE (7, 4) = 37
SET TILE (8, 4) = 38
SET_FIRE_ZONE 97, 49, 143, 79
END
END

PRESS_FIRE AT SCREEN 12
# Detectar Arma5.
# Lo detectamos definiendo un rectángulo de píxels.
IF PLAYER_IN_X 97, 143
IF PLAYER_IN_Y 49, 79
THEN
SET_FIRE_ZONE 0, 0, 0, 0
SET TILE (7, 4) = 0
SET TILE (8, 4) = 0
INC FLAG 6, 1
INC FLAG 7, 1
SOUND 7
PRINT_TILE_AT (15, 21) = 36
END
IF FLAG 7 = 5
THEN
WIN GAME
END
END


$this->bbcode_second_pass_quote('na_th_an', 'H')ay varias opciones para hacerlo. La que se te ocurre a tí va bien encaminada.

¿Se pueden recolectar los objetos en cualquier orden, y el juego debe terminarse al recoger el último de ellos? En ese caso tienes que hacer las comprobaciones luego de recoger cada objeto.

Imaginate que usas el flag 10 para ir haciendo el conteo. Cuado cojas un objeto estarás haciendo algo parecido a esto:

$this->bbcode_second_pass_code('', 'IF PLAYER_TOUCHES x, y
IF FLAG N = 0
THEN
# marcar objeto como cogido.
SET FLAG N = 1
# Borrar de la pantalla
SET TILE (x, y) = 0
# Pintar en el marco
PRINT_TILE_AT (xx, yy) = t
# Incrementar el contador
INC FLAG 10, 1
END')

Pues justo después de cada uno de estos trozos de código, debes añadir la comprobación de que ya tienes cuatro:

$this->bbcode_second_pass_code('', 'IF FLAG 10 = 4
THEN
WIN
END')

Por ejemplo :)