PDA

Ver la versión completa : Jugar con el tamaño del jugador.



Kiwiz
18/09/2008, 21:42
Buenas amigos , mi duda consiste en que quiero hacer que el personaje que estoy creando al chocar contra algo , aumente su tamaño , y no sé cómo hacerlo exactamente.

Había pensado en las declaraciones privadas ,al estilo :



process player()
private
tamano1,tamano2,tamano3 ;
BEGIN
// ...
If (collision(type enemigo)) ; tamano1 ; END
// ¿Ahora cómo hago para que se ponga el tamaño 2?De todas formas el método de las declaraciones privadas no me parece muy convincente :confused: .


¿Qué se os ocurre?



Saludos.

Aiken
18/09/2008, 21:45
no se si te refieres a como seria el pseudocodigo o si existe algo en fenix para el tamaño. creo recordar en lo poco que se de fenix que hay una propiedad/variable privada que hace zoom o no, cuando dibuja un sprite, depende el valor que tenga.


Aiken

Kiwiz
18/09/2008, 21:47
Me refiero a si existe algo en fenix para el tamaño ;)

Saludos.

Hokutoy
18/09/2008, 21:56
Te pego del help file del fenix que estoy vaguete:

SIZE
Escalado del gráfico

DESCRIPCIÓN
Esta variable especifica el tamaño del gráfico. El intérprete escalará el gráfico en función del valor de esta variable, siendo el valor por defecto 100 (tamño 100% del original). Así por ejemplo SIZE=50 dibujaría el gráfico a la mitad de su tamaño.

Las variables de control de tamaño no tienen efecto en el MODO7, ya que el tamaño en ese tipo de representación se calcula automaticamente sobre el 100% en función de la distancia.

VEA TAMBIÉN
SIZE_X Escalado horizontal del gráfico
SIZE_Y Escalado vertical del gráfico

Resumiendo:
Crea una variable cualquiera por ejemplo NuevoTamaño=100;
Entonces declara dentro del loop que toque:
size=NuevoTamaño
...
If (collision(type enemigo)) ; NuevoTamaño=200 ; END // Por ejemplo para que el grafico duplique su tamaño o pon lo tipo incremento NuevoTamaño=Nuevotamaño+200 para que en cada colisión aumente el tamaño exponencialmente

Byes!

Kiwiz
18/09/2008, 22:09
Um
¿Qué os parece esto? :



process personaje ()
private
int size=100 ; // Tamaño al 100%
BEGIN
// ...
IF (collision(type enemigo)) ; size++ ; END
// ...


Saludos.

dardo
18/09/2008, 22:33
Um
¿Qué os parece esto? :



process personaje ()
private
int size=100 ; // Tamaño al 100%
BEGIN
// ...
IF (collision(type enemigo)) ; size++ ; END
// ...


Saludos.

Que así de pronto debería funcionar, y que si funciona ya se por donde seguir programando lo mío. Así que prueba y comenta, que me interesa.

Hokutoy
18/09/2008, 22:41
No tiene mala pinta pero recuerda que SIZE es una variable de servicio del propio FENIX y no la puedes/tienes que declarar... usala directamente tipo x, y o graph. Así que lo de Int size=100 te dara error.

Otro apunte: size++ aumentara tu grafico en un 1% osea muy muy poquito.

Lo mejor es que ahora que ya tienes la pista vayas probando varios codigos hasta que des con el que mejor te vaya.

Saludos

Kiwiz
18/09/2008, 22:56
Hokutoy , tienes razón , lo de "int size" da error , he encontrado algo que compila bien.


program ejemplo ;

PROCESS player ()
Private
int tamano=size;
Begin
graph=1 ;
loop
IF (collision(type(enemigo)) ; tamano++ ; END
end
frame ;
end
end Espero que te sirva , Dardo . :brindis:

jean la montard
18/09/2008, 22:59
Di los resultados ,que yo quiero usar algo parecido para un proyecto

Kiwiz
18/09/2008, 23:04
Yo ahora no puedo ver los resultados porque tengo algún bug en el juego y no me compila , pero según como esta el ejemplo que he puesto , debería de incrementar el tamaño en un 1% (porque el ejemplo sí que compila) , sé que es muy poco , pero para lo que yo busco me vale.

chipan
18/09/2008, 23:30
program ejemplo ;

PROCESS player ()
Private
int tamano=size;
Begin
graph=1 ;
loop
IF (collision(type(enemigo)) ; tamano++ ; END
end
frame ;
end
end
Mal, para que funcionase tendría que ser asi:


PROCESS player();
Private
int tamano;
Begin
graph=1;
loop
IF (collision(type(enemigo)) tamano++; END
size=tamano;
frame;
end
end
O si no te quieres complicar:


PROCESS player();
Begin
graph=1;
loop
IF (collision(type(enemigo)) size++; END
frame;
end
end
Entre otras muchas posibilidades

Edit: corregido error tonto

Kiwiz
18/09/2008, 23:38
gracias Chipan por la correción.

Saludos.

chipan
19/09/2008, 10:22
¿Te ha funcionado?

SpaVampyre
19/09/2008, 12:22
chipan en tus codigos, el primero no inicializa tamano, y en ambos en el if abres tres parentesis cierras dos.

Hokutoy
19/09/2008, 12:28
Porque estoy aburrido jejeje:
1- Size coge siempre el valor por defecto de 100 que es el 100% del tamaño del grafico original. No hace falta inizializarlo si no quieres

2- Es verdad... pero debe ser porque Chipan a editado el codigo propuesto por kiwiz que ya contenia el error mencionado.

Enga a ver si kiwiz o alguien menciona como les ha ido el codigo y para que lo estan usando.

Saludetes!

chemaris
19/09/2008, 12:58
depende como sea la collision haciendo solo size++ casi no va a aumentar, no se donde lo estas usando, pero normalmente una collision es muy corta y solo se increentaria un poco, por ejemplo puedes poner size=150 lo que haria un zoom 1,5x, o si el enemigo "muere" al colisionar para que quede bonito y lo hago poco a poco


PROCESS player();
Begin
graph=1;
loop
IF (collision(type(enemigo))) size++; END
IF (size!=100 and size <150)size++;END
frame;
end
end

luego si quieres volver al tamaño original tendrias que hacer mas o menos lo contrario

Kiwiz
19/09/2008, 13:16
Ahora no puedo decir como funciona , porque mi juego no compila dado que tiene varios bugs.

He intentado compilar uno de los ejemplos de Chipan (el primero) y me da error :



Procedure name expected ("(")


Saludos.

Drumpi
19/09/2008, 22:28
Size es una variable local predefinida: quiere decir que TODOS los procesos ya tienen declarada por defecto dicha variable y puede ser leida por otros procesos.
Por cierto, despues de "process nombre_del_proceso (datos_de_entrada)" no hay ";" (es decir, no debeis escribir el punto y coma)