wenas
pos la cuestion esk yo no se muxo de lua pero llevo unos dias currandomelo y no lo llevo mal.
asta ahora e exo un "juego" si se puede llamar asi pork lo unico k e
exo es el menu una seccion de extras con historias armas... pero ahora
k m e puesto con el juego en si e llegadoa aser k el personaje se mueva
y conseguir crear blokes pero cuando pongo un bloke con la imagen de
una casa una imagen de fondo el personaje va muy pero k muy lento...
bueno aki dejo el codigo y las imagenes por si alguien m puede ayudar..
[quote]
--Creamos los Colores.
verde=Color.new(0,255,0)
blanco = Color.new(255,255,255)
Fondo = Image.load("opciones1.png")
--Creamos el personaje.
personaje1 = Image.load("personaje.png")
--Creamos el bloque.
bloque1 = Image.load("casa.png")
--Array del personaje.
Personaje = { x = 30, y = 100 }
--Definicion de variables.
personajeAltura = 32
personajeAnchura = 32
--Array del bloque, con sus tres elementos.
Bloque = {}
Bloque[1] = { x = 340, y = 1, Altura = bloque1:height(), Anchura = bloque1:width() }
--Funcion para mover el personaje por la pantalla.
function moverPersonaje()
pad = Controls.read()
if pad:left() then
Personaje.x = Personaje.x - 2
end
if pad:right() then
Personaje.x = Personaje.x + 2
end
if pad:up() then
Personaje.y = Personaje.y - 2
end
if pad:down() then
Personaje.y = Personaje.y + 2
end
end
--Funcion que comprueba si se produce alguna colision.
function comprobarColision(object)
if (Personaje.x + personajeAnchura > object.x) and (Personaje.x <
object.x + object.Anchura) and (Personaje.y + personajeAltura >
object.y) and (Personaje.y < object.y + object.Altura) then
Personaje.x = oldx
Personaje.y = oldy
end
end
--Bucle principal.
while true do
--Variables que almacenan la posicion del personaje al comienzo de cada bucle.
oldx = Personaje.x
oldy = Personaje.y
screen:clear()
--Comprobamos si hay movimiento.
moverPersonaje()
--Comprobamos si hay colisión para cada bloque.
comprobarColision(Bloque[1])
--Muestra los tres bloques en pantalla.
for a = 0, 14 do
for b = 0,8 do
--Muestra el personaje en pantalla.
screen:blit(Personaje.x,Personaje.y,personaje1)
screen:blit(Bloque[1].x,Bloque[1].y,bloque1)
screen:blit(480 * a, 272 * b, Fondo)
end
end
screen.waitVblankStart()
screen.flip()
end
[/quote]aki las imagenes correspondientes
http://img166.imageshack.us/img166/7848/personajelv9.png
http://img292.imageshack.us/img292/75/grassek6.png
http://img292.imageshack.us/img292/9035/casaoz0.th.png
A todo esto añado k tambien busco gente interesada pa formar un ekipo asi k si ai gente interesada k m lo digan
otra pregunta mas
¿Que juego intentas hacer? que se supe que tiene que hacer el personaje
ya lo e solucionado kitando
ya lo e solucionado kitando alguna cosilla y dejando solo los sceen:blit en coordenadas 0,0
muxas gracias pero ahora la imagen de fondo keda arriba y tapa al personaje y al bloke alguien sabe xk??
GRacias
tengo par de preguntas
Ya vi tu codigo, ahoro respondeme esto:
La imagen de fondo que usas, es exactamenet de 480 x 272??, y la anchura y la altura que le estas dando al personaje, es la misma que tiene la imagen del personaje??
Ya me he topado con ese problema, y ese problema ocurre cuando le das la dimension incorrecta al personaje o al fondo, claro, de la forma que tu imprimes la imagen de fondo, pasa eso.
Por que no mejor usas screen:blit(0,0,fondo)
para imprimir el fondo en pantalla, tambien, puede ser que ya la memoria RAM de la psp no soporte tantas iamgenes asi que deberas usar varias sentencias nil.
Y creo que si pones esto ''collectgarbage()'' te ayudara a eso, creo, no lo he usado, peor creo que te ayudara. ponlo al final de todo.
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
e probao a cambiar el
e probao a cambiar el screen:clear() de sitio , poner System.memclean() (k nom funciona), y cambiar esta parte
(
for a = 0, 14 do
for b = 0,8 do
screen:blit(Personaje.x,Personaje.y,personaje1)
screen:blit(Bloque[1].x,Bloque[1].y,bloque1)
screen:blit(480 * a, 272 * b, Fondo)
end
end
)
fuera del bucle dentro del bucle pero antes k el screen:clear y nada....
no lo consigo pork va a trompicones....
otra pregunta
se podrian quitar estas dos líneas en la funcion de comprobacion no:
Personaje.x = oldx
Personaje.y = oldy
Atención pregunta...
¿Cuántas veces necesitas poner el personaje en pantalla?
Yo diría que una sola...
¿Cuántas veces lo estás poniendo?
112.
Lo mismo con el único bloque... así que parece que estás haciendo unas 222 operaciones gráficas de más. No es de extrañar que vaya lento: quita del bucle todo lo que no deba ir en el bucle.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
creo que puedes hacer una cosa
si el personaje te va muy lento puedes cambiar los valores en:
if pad:right() then
Personaje.x = Personaje.x + 2
end
if pad:up() then
Personaje.y = Personaje.y - 2
end
if pad:down() then
Personaje.y = Personaje.y + 2
--esos son los valores que tu le pones diciendo que cada vez que pulses los votenes de direccion el personaje se mueva dos coordenadas lo cual le da una velocidad si le dices al programa que cada vez que pulses un boton de direccion se mueva en vez de dos, tres o cuatro puedes hacer que vaya más rápido, ej.:
if pad:right() then
Personaje.x = Personaje.x + 3 (o 4)
end
if pad:up() then
Personaje.y = Personaje.y - 3 (o 4)
end
if pad:down() then
Personaje.y = Personaje.y + 3 (o 4)
--si eso no te funciona puedes probar con las posiciones de screen:clear() porque eso lo que puede estar haciendo es que cada vez que muevas el personaje se haga una limpieza de pantalla y tendrá que volver a poner todo en la pantalla ralentizandolo todo. Si no pues no se a mi solo se me ocurre eso pero lo mejor es probar tu mismo con tus propias ideas.
Eso no serviria. Lo unico
Eso no serviria.
Lo unico que conseguiria seria que el personaje diera trompicones
y...
si cambia de posicion el screen:clear como dijiste tu antes.
podria estar eso ralentizandolo no?
No se pero me ha dicho
No se pero me ha dicho dark_naruto una funcion para limpiar la ram y eso podria arreglarlo
System.memclean()
Saludos
No creo que te ayude pero
No creo que te ayude pero el screen:clear() creo que deberia ir al princvipio del bucle.
Saludos