PDA

Ver la versión completa : Programar en div



delta2
24/05/2004, 07:36
Me gustaria empezar a programar en div para gp32, y que alguien me dijera que se necesita para que los juegos resulten compatibles con la gp32. Me estoy iniciando ahora en la programación y la verdad es que no controlo mucho, asi que agradeceria cualquier tutorial.
Salu2.

Wonder Boy
24/05/2004, 09:54
Hola delta2, veo que eres sensato porque te gusta lo que a mí X-D :-)

Yo soy apasionao de DIV (especialmente DIV 2).
La lástima es que no hay un compilador y/o intérprete de éste para GP32.

A mí no me ha resultado nada fácil mudarme de DIV 2 a Fénix, pero en vista del tema multiplataforma de Fénix así como a la portentosa acción del cojonudo de Chui de portar el intérprete Fénix (FXI) a nuestra GP32, pues han hecho que me vuelque definitivamente con Fénix.

Tienes todas las herramientas para empezar a desarrollar con Fénix y para la GP32 en éste hilo (ahí encontrarás tanto el compilador FXC para Windows como el intérprete FXI para GP32 que interpreta los .DBC generados con dicho compilador):

http://www.gp32spain.com/foros/showthread.php?s=&threadid=7366

Yo también estoy embarcado en algún que otro proyecto para nuestra querida GP32 que espero no tarden en ver la luz... ;-)

Y por favor, no dudes en preguntarme a mí o a la peña DIVera/DIV2era/Fénixera cualquier duda o dificultad que te surja.

Un Saludo.

- Wonder Boy -

Wonder Boy
24/05/2004, 10:21
Me he dao cuenta que no te he respondido a todo... jeje

Decirte, que DIV y Fénix básicamente en cuanto a fundamentos son compatibles más o menos.

Decirte también, que se esperan cambios en el lenguaje Fénix por temas de patentes pero que tampoco serán drásticos (tampoco sé demasiao de éste tema y del alcanze de dichos cambios pero algo he oido sobre ésto).

En cualquier caso no te preocupes, porque teniendo las herramientas que puedes encontrar en el enlace que te he puesto en el post de arriba y un IDE que te voy a poner ahora, tendrás suficiente para hacer tangibles tus ilusiones :-)

Hazte con un buen programa para hacer los gráficos (yo utilizo para ello, el editor gráfico del DIV 2 que me encanta).

Y un IDE (Entorno de Desarrollo) que yo utilizo solamente para escribir los programas y acceder a la ayuda de alguna palabra clave o función es el Firebird que lo puedes encontrar en la página oficial de Fénix en la sección Proyectos:

http://fenix.divsite.net/


Sobre la Documentación...
---------------------------------

La mejor documentación que he encontrado sobre conceptos DIV (y en consecuencia sobre Fénix) es el libro que te viene con el mismo DIV.

El libro del DIV 2 no he tenío el placer de conocerlo ya que me resultó imposible encontrarlo :-(

He visto por la red documentaciones de Fénix y DIV pero nunca me han terminao de convencer las explicaciones... será por las buenas explicaciones de las funciones, conceptos y demás del lenguaje así como su claridad en ellas del libro que te digo, el libro del DIV.

Otra cosa, yo estoy en el canal #gp32dev del IRC Hispano, así que si tienes alguna dudica o algo me buscas allí.

Un Saludo.

- Wonder Boy -

delta2
24/05/2004, 12:01
Muchas gracias Wonder Boy, ahora mismo me bajo todo lo necesario para empezar a programar con Fenix.
Si me surge alguna duda ya te la comentare.

enkonsierto
24/05/2004, 12:07
Ese wonder boy, el defensor justiciero del Fenix!!!, quien lo diría :D :D :D :D :D :D

Santanderino
24/05/2004, 13:07
pues yo tengo el libro de div 2 silo kieres tuyo es por 1000000 ? xD

div , div 2 y fenix son unos entornos de desarollo de juegos la mar de completos a la par q un principio confusos pero todo es acostumbrarse.....

mirate algun tutorial, bajate ejemplo y mira el codigo fuente , la mayoria tienen explicaciones en fin .....q en una semana ya empezaras a jugar a tus propios juegos :)

yo pq soy un vago pero si me pongo , algo sako la perrada son los graphicos .....y bueno q toy algo ya perdido pero amos si retomo div podria hacer alguna cosilla.....

Reinor
20/06/2004, 19:14
hola, estoy interesado en programar en div, me he hecho con fenix 0.81b para empezar y con firebird. me e descargado unos ejemplillos para intentar descifrar algo pero la verdad eske no entiendo nada:p miro a la pantalla perplejo de como hay gente ke es capaz de ver en los comandos un videojuego. me gustaria aprender pero completamente desde 0. no kiero ke perdais el tiempo intentandome explicar cosas avanzadas aunke vosotros veais ke es lo mas basico del mondo, estoy buscando la filosofia teoria pura y dura de la que dan el primer dia de cualkier curso de programacion. me basta con un link

otra preguntilla ¿la programacion en c, c++,... y div difieren en la forma de llamar las cosas pero en realidad tienen la misma estructura? eske me estoy haciendo la picha un lio jugando a ser autodidacta :)

Segata Sanshiro
20/06/2004, 19:53
Reinor (delta2, y todo el que quiera), yo escribí un artículo para la Biblia de GP32 de Fenix pero no cubre la programación, pero me gustaría escribir algo en breve. Mira este hilo a ver si te sirve de algo http://www.gp32spain.com/foros/showthread.php?s=&threadid=7404 de momento.

Reinor
21/06/2004, 07:36
gracias me estoy empollando el ejemplo 1 y mas o menos lo entiendo exceptuando el comando loop y let_me_alone despues de ver como el frame se movia con el teclado me hice una pregunta por ke no añado otro frame? asi podria mover 2 a la vez pero me da error dime kual es el fallo te expongo el original y el modificado por mi

ORIGINAL:
Program FenixEjemplo1;

Begin
//Inicia modo gráfico a 320X240 y modo 8bits de color (256 colores)
set_mode(m320x240);
Graph_mode=mode_8bits;

//Carga el fichero de gráficos
load_fpg("FenEjem\ejemplo.fpg");

//Crea el proceso nave
nave();

//Embucla el proceso ppal. hasta pulsar tab (en ordenador) o botón L en GP32
Loop
//El frame hace que se recalcule todo, si no se pone se quedará como "colgado"
Frame;
If(key(_tab)) Break; End
End

//Elimina TODOS los procesos que pudieran existir quedándose él solo
let_me_alone();
End

//================================================== =====
//= Proceso NAVE() =
//================================================== =====
Process nave()
Begin
//Le asignamos el gráfico deseado al proceso
graph=1;

//Le damos valor a sus coordenadas iniciales
x=100; y=100;

Loop
Frame;

//Detectamos las pulsaciones de las teclas/stick de GP32
If(key(_left)) x-=2; End
If(key(_right)) x+=2; End
If(key(_up)) y-=2; End
If(key(_down)) y+=2; End
End
End

MODIFICADO:
Program FenixEjemplo1;

Begin
//Inicia modo gráfico a 320X240 y modo 8bits de color (256 colores)
set_mode(m320x240);
Graph_mode=mode_8bits;

//Carga el fichero de gráficos
load_fpg("FenEjem\ejemplo.fpg");

//Crea el proceso nave
nave1();
Loop

Frame;
If(key(_tab)) Break; End
End

let_me_alone()

//Crea el proceso de nave 2
nave(2)
//Embucla el proceso ppal. hasta pulsar tab (en ordenador) o botón L en GP32
Loop
//El frame hace que se recalcule todo, si no se pone se quedará como "colgado"
Frame;
If(key(_tab)) Break; End
End

//Elimina TODOS los procesos que pudieran existir quedándose él solo
let_me_alone();
End

//================================================== =====
//= Proceso NAVE1() =
//================================================== =====
Process nave1()
Begin
//Le asignamos el gráfico deseado al proceso
graph=1;

//Le damos valor a sus coordenadas iniciales
x=100; y=100;

Loop
Frame;

//Detectamos las pulsaciones de las teclas/stick de GP32
If(key(_left)) x-=2; End
If(key(_right)) x+=2; End

End
End
// proceso nave2()
Process nave2()
Begin
//grafico asignado
graph=1;

//cordenadas
x=120; y=120;

Loop
Frame;

If(key(_up)) x-=2; End
If(key(_down)) x+=2; End

End
End

gracias anticipadas :D

cHukAs
21/06/2004, 07:50
El fallo esta en que cuando llamas al proceso nave2, lo haces asi: nave(2). De esta manera lo que estas haciendo es llamar al proceso nave (que no existe), mandandole el 2 como parámetro que nunca se recibe ya que el proceso nave no existe. Existe el nave1. Deberias poner nave2();
Un saludo.

Reinor
21/06/2004, 07:57
cierto me di cuenta de ese problema pero aun corrigliendolo me da fallo en loop

Reinor
21/06/2004, 14:54
ya encontre el problema, despues de comerme la cabeza y machacar el teclado lo encontre. la cosa es ke me habia hecho la picha un lio estaba intentando copiar apartir de nave(); tolo que habia abajo cuando me di cuenta de ke no tenia nada que ver. loego solo habua ke crear otro process nave2() con parametros de graficos y tal y ya estaba. gracias seguire con mis estudios de inicializacion

Segata Sanshiro
21/06/2004, 18:36
Pues eso :D Ahora imaginaos un error tonto de esos en un programa de 7000 líneas xDDDDD Entra una risa que no veas...

Reinor
21/06/2004, 18:43
gracias shegata por los ejemplos me los estoy empollando haciendo esquemas y tratando de modificarlos no con mucho exito pero al cavo de 20 min provando combinaciones doy con la correcta. tienes algun ejemplo de colisiones? e visto ke en la ayuda hay uno mu guapo pero kiero encadenarlo a alguna reaccion por ejemplo muerte del sprite y no un texto como en el hlp gracias

Santanderino
21/06/2004, 18:44
//Detectamos las pulsaciones de las teclas/stick de GP32
If(key(_left)) angle-=1000; End
If(key(_right)) angle+=1000; End
If(key(_up)) advance(5); End
If(key(_down)) advance(-5); End
End
End

modifica lo ke tienes por esto ;)

y ajusta los numeros de angle por si gira lento y el advance por si avanza lento ;)


angle lo dice todo ANGULO

y advance pos avanzar pa naves es lo mejor


para las collisiones TA CHUPADO


a ver

pones en el LOOP

if ID"siendo ID el proceso en el cual tas programando actualmente" collision (type enemigo) break; end

a ver el id lo puedes sustituir por otro nombre al cual asignes en el begin de arriba del todo pero has declarar el nombre como global es decir despues de program

ejemplo

Program naves ;
Global
navecita;
fpg1;<--------- siempre declara esto pq cuando manejes varios fpgs sera mas comod
begin
set_mode(m640x480) <--- para mi es el mas comodo aunq 800x600....es pa gustos y depende de los graficos.
fpg1= load_fpg("x.fpg") <-------si hubiera 2 fpgs deberian tener nombres diferentes
navecita= nave()
enemigo()
end
process nave()
begin
graph=1
x= ...
y=....
loop
if key....
.....
if collission navecita(type enemigo) break; end


a ver

vease q en el type ponemos el nombre del PROCESO no su identificador

vease q break sirve para eliminar de raiz el processo...es recomendable para los ENEMIGOS pero para el prota lo mejor es poner vida - = 1 y hacer una reaparicion del proceso...pero poco a poco


a ver si no me he colado en nada q lo toy diciendo de memoria y hace muxo q no lo toco , si hay error corregidme please.ç


ahm si usas ADVANCE vigila tb el grafico q te COLOCADO bien oks? retocalo si tal y giralo para q avance como kieres ;)

normalmente seria un /\ asi hacia arriba.



LO ke no me acuerdo es como hacer para usar los graphicos de cada fpg mmmmmmmm lo mirare pero ahora mismo no me acuerdo.


mas dudas aki ^^

Reinor
21/06/2004, 18:47
eeii gracias ya sabia como modificar la velocidad de giro y tal pero el comando advance inverso no lo encontraba (-5) ke buena idea gracias:D

Segata Sanshiro
21/06/2004, 18:54
Reinor, es de lógica xDDDDDDD

Sobre colisiones estoy trabajando en ello porque hay unos problemas: yo quiero que un enemigo muera cuando choca contra una bala, y que la bala también muera.

Por eso hago:

if(collision(type bala));
signal(id,s_kill);
end //en enemigo

y

if(collision(type enemigo));
signal(id,s_kill);
end //en bala

Pero a veces muere la bala y el enemigo no, estoy intentando cambiar la prioridad de los procesos, etc. pero nada. Ya veré qué se me ocurre.

Espero que no quieras hacer lo mismo que yo porque igual tienes problemas...
:D

Santanderino
21/06/2004, 18:56
he hecho un par de EDITS ;)

Santanderino
21/06/2004, 19:01
A VER SEGATA MIRA ESTO

if(collision(type bala));
signal(bala,s_kill);<-------asi te ahorras ponerlo en el otro lado no?
signal(id,s_kill); o BREAK; END
end //en enemigo


pero el bala q pones en signal has de ponerlo arriba como puse yo antes NAVECITA? pos =


a ver si pones break; end PON LO ULTIMOOOOO y en este caso has de respetar el orden y eliminar el otro proces y luego el actual.

Wave
21/06/2004, 19:06
if(collision(type bala));
signal(bala,s_kill);<-------asi te ahorras ponerlo en el otro lado no?
signal(id,s_kill); o BREAK; END
end //en enemigo

No, pq las collisiones que hace son de dos cosas diferentes:
if(collision(type bala));
y
if(collision(type enemigo));

Segata Sanshiro
21/06/2004, 19:07
Santanderino has probado ese código?? xDDD

Porque yo también lo probé y, la bala, morir moría, ahora, que fuera la que tiene que morir y no otra de las 10 que estaban en pantalla al mismo tiempo ya... xDDDDDDD

La solución sería conseguir el ID del proceso con el que se colisiona... ¿cómo se hace eso?

Santanderino
21/06/2004, 19:11
oztia no habia pensado en eso jue xD si es ke hace muxo q no programo xD

jurrrrrrr pos nada nada tiene razon segata........

en fin el problema de las colissiones viene en los mapeados aunq una vez lo sabes hacer ta chupado aunq a mi costo entenderlo xD

pa o ponia 1 pa todos y ya esta o otro pa el salto otro pa el suelo y otro pa las paredes algo q aseguraba q no se trabara el personaje xD

en el caso de las balas no compensa saber el id de cada una xD

cojer y hacer lo ke has dixo tu

y q ambas cosas no muera ese error me pasaba a mi casi siempre pero lo arreglaba y no se como :confused: a ver si me acuerdo

el caso estaba en q la collision se ponia en ambos lados pero era mas importante eliminar al enemigo y despues la bala o no recuerdo ahora mismo............aisssssss trastear con ello....pq yo el div 2 no le tengo instalado pero tengo el manual q venia con el para poder mirarlo ......... a ver q pone.....

Segata Sanshiro
21/06/2004, 19:14
Santanderino, cuando te molestes en hablar en español te entenderé xDDDDD

Santanderino
21/06/2004, 19:15
jue tio xD q si q abrevio muxo xD lo se pero es costumbre una mala costumbre que estoy intentado remedira pero ya ves que me cuesta mucho sobre todo los que y alguna cosa mas ....