Como haces unos días había liberado mi 1er hombrew Multi Emulators v2.0 (con ayuda de algunos coders y estos están en los créditos XD).
Pues he iniciado con otro proyecto le aseguro que sera muy bueno, pero me ha presentado un problema y es que no se como hacerlo y espero que me den una ayudita.
El punto es que quisiera mover una imagen (pelota) desde un punto a otro, es como que desaparezca en el punto de origen y aparezca en otro, o sea si la imagen esta en esta ubicacion (150, 38) y al presional el control hacia abajo se quite de esa ubicacion y aparezca en otra (250, 38), pero al soltar el pad abajo se quede en la ultima ubicacion (250, 38).
No se si me di entender...
Edito: Es en lua la ayuda....
Pues...
En lugar de coordenadas, debes usar variables para ellas, me explico:
Con eso al presionar abajo, la imagen se "teletransportará" xD
Pero al soltarlo o presionarlo varias veces más, no pasará nada...
Un saludo!
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
He probado
He probado de la forma que explica y funciona muy bien, pero todavia hay un pequeño problema, tratare de explicarlo lo mejor que pueda.
La letras que estan mas debajo seria una casilla (cada casilla tiene su coordenada X,Y), lo cual en general seria como el del tablero del ajedrez.
A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Z
En la coordenada (A) seria el punto de inicio de la imagen.
Estando la imagen en esa letra (A), al presionar el pad hacia abajo dicha imagen se teletransportará hacia (U), luego de estar en (U), al presionar hacia arriba teletransportará hacia (A). Hasta aqui esta todo claro de la forma que explica.
Pero al estar la imagen ubicada en (U), presione hacia la derecha se teletransporte hacia (W) y cuando la imagen este en (A) y presione hacia la derecha se teletransporte hacia (D), etc..
Como lo podrias hacerlo ?
Saludo!!!!
Array + coordenadas
Yo pondría todas las coordenadas en un array:
Luego, creas una variable (Puede ser numerica o string. Pero y usaría numerica). Y si se presiona x boton, restas o sumas para que quede en la letra que quieres. por ejemplo:
Después pones si pos == XNumero, que blitee la imaen en coordenadas.a.x coordenadas.a.y
Traté de explicarlo lo más fácil que pude, cualquier cosa me dices :P
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Honestamente
Honestamente no he entendido bien.
Pondre una imagen y alguna aclaraciones, para dar mayor entendimiento al asunto.
El tablero seria el fondo, la esfera roja es la que controlaremos,
ademas donde esta ubicado la esfera es el punto de inicio, osea en
(150, 38). Cada cuadro tiene (50, 50), es acerca de (X, Y)
Explicare un poco la funcion de controlar la esfera roja:
Si la esfera esta en A1 (punto de inicio) y presiono hacia abajo se movera hacia E1 y estando en E1 y presiono hacia arriba se movera hacia A1, ademas estando la esfera en E1 y presiono hacia la derecha se movera hasta E3 y estando en E3 y presiono hacia la izquierda se movera hacia E1.
Estando en A1 y presione hacia la derecha, la esfera se movera hacia A3 y si estando en A3 y presione hacia la izquierda se mueva hacia A1, al igual que estando en A3 y presione hacia abajo se mueva hasta C3, etc..
Aqui es el problema y es que tengo dos ubicacion diferente que funciona con la misma direccion del pads. derecha - izquierda y abajo - arriba.
Espero haber dado a entender.
Saludo!!!
Si lees bien sacas el codigo,
Si lees bien sacas el codigo, primero te dijeron que uses arrays para determinar las coordenadas de cada cuadrado para asi comparar y blitear la bolita donde la quieres, segundo lo que has escrito es un pseudocodigo que si lees bien con if then else end entiendo que lo puedes resolver facilmente. Mas de lo que te han dicho especialmente Moikop y Chimecho, seria crearte el codigo.
Aun no, he podido..
Aun no he podido solucionar el problema. XD....
Aqui esta el codigo que estaba haciendo...
Como se daran cuenta, cuando la esfera esta en (237,38) y presiono hacia arriba,
pues se mueve hacia (154,38), lo cual al presinarlo hacia arriba no se deberia
mover en este caso.
Ademas estando en (237,38) y presiono hacia abajo, se mueve hacia (154,196),
lo cual en mi caso solo se deberia mover hacia (237,146).
Estando en (154,196) y presiono hacia la derecha, pues se mueve hacia (237,38),
lo cual en este caso solo se debera mover hasta (237,196).
Estando en (154,196) y presiono hacia la izquierda, pues se mueve hacia (154,38),
lo cual en este caso no se deberia mover.
Espero haberme dado a entender....
Saludo!!!
La razon
Si se mueve donde tu dices qye no deberia es por que asi lo has asignado, cada vez que presiones un boton la variable de las cordenadas que asignaste se la imagen se movera ahi, fijate lo que has puesto... creo que seria mas facil con tablas y aunmentando las cordenadas de X & Y por los que se necesite y colocar una variable con oldx & oldy para que te respete la ultima cordenada, es solo una idea, espero y te sirva, si no un tiempo mas que tenga te hago el codigo XD saludos
Mis Homebrew´s
Aun no..
Aun no entiendo.. XD
Y hacerlo como colisiones, funcionaria ?
Como se podrias hacer ?
Saludo!!
Puedes usar una variable pra
Puedes usar una variable pra saber en que casilla esta y como debe reaccionar...
Bueno, como Jesus te ha
Bueno, como Jesus te ha respondido en C, yo te respondo en Lua:
SceneBET y PSP Euskaraz 2... ¿Pronto?
ok
Da un error en:
SCRIPT.LUA:24 bad argument #1 to ´blit´ (number expected, got nil).
Y en la linea 24 tengo:
screen:blit(38, imagenY, imagen)
Saludo!!!
Eso debe ser que aun no le
Eso debe ser que aun no le has asignado ningun valor a la variable imagenY. O sea, que no has escrito imagenY=100 (Por ejemplo).
No entiendo
No entiendo la repuesta.
Podria explicarla con el codigo. :(
Lo que te dice el error es
Lo que te dice el error es que has usado una variable nula, que es eso, es una variable a la que no le has dado ningun valor o le has dado nil. El nil no es tu caso.
Ahora con codigo:
while true do
screen:blit(38,imagenY,imagen)
end
En este caso te da error porque la variable imagenY no equivale a un numero, es nulo.
imagenY=100
while true do
screen:blit(38, imagenY,imagen)
end
En este caso no habría problema, ya que imagenY equivale a un número. Claro, no te olvides del correspondiente screen.flip().
SceneBET y PSP Euskaraz 2... ¿Pronto?
Umm
Um no se si te he entido bien , a lo de cambiarlo de imagen no se como se hace , pero a lo ultimo (si te he entendido claro) creo que si.
Lo que quieres , es que cuando tengas pulsado el boton (ej:Arriba) no te se siga cambiando ¿no? , si es así , pues en los controles pon:
while (1)
{
SceCtrlData currentPad, lastPad;
sceCtrlReadBufferPositive(¤tPad, 1);
if( currentPad.Buttons != lastPad.Buttons )
{
lastPad = currentPad; //Esto hace que las pulsaciones se registren una sola vez//
if(currentPad.Buttons & PSP_CTRL_CROSS) //Al pulsar X... //
{
[NO SE SI SERA ESO A LO QUE TE REFIERES...]
:)
Explico mas
Explicare mas claro.
Por ej:
Tengo una imagen de tamaño 30 x 30 y ubicada en (155,38) por defecto aparecere en ese lugar, pero cuando presiono el pad para que se ubique a (155, 70) y este ahi hasta que presione otra direccion del pad.
Es como si controlara la imagen....
Saludo!