Como hacer un programa sencillo para puppy linux

Message
Author
Azulete
Posts: 3
Joined: Thu 25 Mar 2010, 12:12

Traduccion

#61 Post by Azulete »

3.) RECOGER DATOS EN EL SCRIPT: Organizar y estructurar el codigo

Vamos a ver como funcionan los cuadros de dialogo y como recoger lo que pulsamos cuando hacemos yes o no. Vamos a dividir el los ejemplos en cuadros de dialogo en dos grupos simles y complejos. Los simples tendrán botones del tipo yes, no y los otros serán mas complejos. Tendran mas botones y mas opciones.

>> Simple
Los cuadros de dialogo simple normalmente estan esperando por una respuesta por parte del usuario del tipo:
- Desea continuar?
- Elija una opcion de la lista?
- ...
Cuando el usuario hace click en los botones yes/no/cancel/ok el script continua de una u otra manera dependiendo que boton haya pulsadoel usuario. Veamos un ejemplo:

Code:
#!/bin/bash
export script='
<vbox>
<text><label>Esta seguro?</label></text>
<hbox>
<button no></button>
<button yes><action>EXIT:sure</action></button>
</hbox>
</vbox>'

I=$IFS; IFS=""
for STATEMENTS in $(gtkdialog3 --program=script); do
eval $STATEMENTS
done
IFS=$I

[ $EXIT = sure ] && gxmessage 'Esta seguro'

Muestra dos botones <button no> y <button yes>. Se evalua una condicion $IFS y despues se ejecuta el bucle for. Lo que hace el bucle for es evaluar la entrada del ususario dependiendo del boton que haya pulsado.

>> Complejo
Para cuadros de dialogos mas complejos hemos de mantener el gui incluso si el usuario hace click en cualquier parte, por lo que la opcion de usar EXIT parece no ser la mas adecuada. La solucion pasa por usar las funciones que estan predefinidas en gtkdialog. Recordar que hemos de exportar las funciones antes de ejecutarlas en nuestro gui. Añadimos la siguiente linea para exportar la funcion y listo.
export -f now
Veamos un ejemplo:
Code:
#!/bin/sh

now () {
date > /tmp/date
}
export -f now

export script='
<vbox>
<entry>
<variable>ENTRY_DATE</variable>
<input>cat /tmp/date</input>
</entry>
<button>
<label>Refresh</label>
<action>now</action>
<action>refresh:ENTRY_DATE</action>
</button>
</vbox>'

gtkdialog3 -p script


>> Proyecto
Cuando tu proyecto crece en complegidad cambiene estructurarlo, hacer un menu de inicio, dividir el codigo en varios archivos. De esta manera si hay un error es mas facil localizarlo. Una solucion bastante comun suele ser poner las funciones en un archivo para cada vez que las necesitemos las usemos desde ese archivo. En el ejemplo que se muestra acontinuacion, el archivo que contiene nuestras funciones esta en /root/test . Veamos un ejemplo de como estructurar nuestro pequeño programa. Abrir un editor de texto y añadir:

Code:
#!/bin/sh

case $1 in
-funcionahora)
date > /tmp/date
exit;;
esac
Guardarlo con el nombre test dentro de /root/. Guardar otro archivo llamado ejemplo2.sh con el codigo y concederle permisos de ejecucion:
Code:
export script='
<vbox>
<entry>
<variable>ENTRY_DATE</variable>
<input>cat /tmp/date</input>
</entry>
<button>
<label>Refresh</label>
<action>/root/test - funcionahora </action>
<action>refresh:ENTRY_DATE</action>
</button>
</vbox>'

I=$IFS; IFS=""
for STATEMENTS in $(gtkdialog3 -p script); do
eval $STATEMENTS
done
IFS=$I

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Que interesante SD.....

#62 Post by mister_electronico »

Que bueno tu post ujinsama , que interesante el SDL sobre todo para entorno de programacion de graficos...

g++ -L/usr/lib -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lpthread -I/usr/include/SDL -D_REENTRANT /mnt/sda7/c01/game/main.cpp /mnt/sda7/c01/game/csprite.cpp -o /mnt/sda7/c01/game/magic_puzzle

Podias explicar mejor la compilacion, compilas los dos programas a la vez , csprite.cpp y main.cpp, aunque entiendo que csprite.cpp se comporta como un fichero de inclusion, ya que no tiene funcion main(), y te crea un fichero de salida magic_puzzle.

Al g++ creo enteder que le dices que las librerias estan en usr/lib pero lo demas no lo entiendo...

Otra cosa es la imagen que te sale en la presentacion ¿ de donde sale?

Bueno un saludo ... y gracias por tu post...

Voy a bajar el SDL y intentar instalarlo... te cuento..

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Ah ahora empiezo a entender.....

#63 Post by mister_electronico »

Ahora empiezo a entender:


g++ -L/usr/lib -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lpthread -I/usr/include/SDL -D_REENTRANT /mnt/sda7/c01/game/main.cpp /mnt/sda7/c01/game/csprite.cpp -o /mnt/sda7/c01/game/magic_puzzle




ISDL_image a sido la libreria que te bajaste SDL_imabe como dices,
ISDL_mixer la otra...
ISDL__ttf es otra...

REENTRANT no se que es .... ni leptheread...

Ok espero que sigas por aqui.... asiduamente.... Gracias por tu post.... y nos vemos...

User avatar
goshujinsama
Posts: 30
Joined: Wed 31 Mar 2010, 04:22
Location: MX

Teclado-MK sound test con sdl

#64 Post by goshujinsama »

Hola de nuevo compañeros amantes de la programacion, bueno, walter aqui te dejo el programa con su codigo de lo que querias hacer de asignar sonido a una tecla, espero y no haberme equivocado en lo que querias.

mister-electronico, gracias por las flores :oops: , bueno, en cuanto a la compilacion -L/usr/lib, como dijiste es el directorio donde en mi caso tengo las librerias, -lSDL, -lSDL_image, lSDL_mixer y -lSDL_ttf, son las librerias que deseamos linkear, lpthread aun no tengo idea, pero supongo que decimos con esto al g++ que nos carge todos los archivos referantes a estas librerias, -I/usr/include/SDL es donde en mi caso tengo los archivos .h de SDL, -D_REENTRANT tampoco estoy muy seguro, pero supongo que con esto le decimos a g++ que compile y construya con mas de un archivo.

Con respecto a la imagen que dices, no es solo una, son 2, una de fondo que nos abarca toda la pantalla, es en la que salen las criaditas *W*, la otra es el cartel de magic puzzle, el programa tiene definido como color transparente el RGB 255,0,0, y tambien ahi hay un renderizado de un texto"Presione espacio para continuar o esc para salir", y no solo eso, ya que es imagen no se puede mostrar pero la aplicacion esta corriendo una musica de fondo.

la aplicacion esta leyendo los recursos desde su propia ruta, por ejemplo las imagenes se encuentran en el directorio raiz de la aplicacion en una carpeta llamada img, para cargarlas con las funciones de las librerias que incluimos en nuestro proyecto tendriamos que expecificarlas con "img/title.bmp" por ejemplo, esto aplica par cualquier tipo de formato que queramos usar y que sea compatible.

User avatar
goshujinsama
Posts: 30
Joined: Wed 31 Mar 2010, 04:22
Location: MX

#65 Post by goshujinsama »

Por cierto, se me olvidaba, a este tipo de programas solo los he logrado corre dandole click en la aplicacion, no los puedo correr con la terminal, si alguien sabe por que se da esto, digamelo.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

No me funciona...

#66 Post by mister_electronico »

como ya te dije el programa de juego no me funciono, se aperece el terminal en negro del terminal y me da el error de Segmentation fault


Para poder ejecutar los programas desde terminal hay que escribir ./programa

El caso que es que me he bajado el programa que hiciste para walter, lo he intentado ejecutar y el mismo error Segmentation fault....

Estoy pensando que pueda ser que lo estoy corriendo bajo un AMD 64 bits.. no lo se...

En fin probare en un pentiun y te contare...


Un saludo nos vemos...

User avatar
walter leonardo
Posts: 234
Joined: Thu 10 Dec 2009, 22:10

hola

#67 Post by walter leonardo »

hola.
ami me pasa lo mismo mister:
Segmentation fault :? .
no funka jeje.
Bueno lo que yo tenia en mente era algo de esto que les voy a pasar, osea algo mas sencillo, no creo que sea complicado hacerlo.
el programa de ejemplo tiene 3 sonidos que al hacerle click con el mouse en algunos de los 3 botones se reproduce un sonido distinto, pero lo que yo quiero es que al tocar la letra E del teclado suene el sonido del botón excelent y cada ves que lo apriete el sonido comience desde cero y no espere a que termine de sonar el sonido para recién repetirse el sonido (osea que sea rápido).
Para ser mas preciso hacer una bateria de sonidos o caja de sonidos y efectos.
Attachments
sonidos.tar.gz
(107.6 KiB) Downloaded 705 times

User avatar
walter leonardo
Posts: 234
Joined: Thu 10 Dec 2009, 22:10

hola

#68 Post by walter leonardo »

creo que es mejor hacerlo en un script en gtk para adaptar directamente a puppy para menos problemas, pero faltan expertos en gtk aca en esta zona ispana.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Te tienes que esforzar un poco...

#69 Post by mister_electronico »

No es tan complicado hacerlo como el programa de goshujinsama pero en Gtk, solo tienes que hacer unos botones por cada una de las teclas de sonido que quieres que suene, y cada una de las teclas haga que actue el programa aplay archivo.wav que quieres que suene....

Vamos Walter que no estan dificil.... a cada boton le pones un nombre como Do, Re, Mi , Fa, So.......

Luego con el raton las vas picando............ Para eso no hace falta ser un genio en GTK.

Nos vemos .......... Un saludo..

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

Bueno me has conmovido....

#70 Post by mister_electronico »

Bueno me has conmovido, te mando un ejemplo, ante todo pedir disculpas a goshujinsama por que he usado los sonidos de su programa, era los que tenia mas a mano en este momento, espero que no le moleste...

Bueno el archivo comprimido que pongo aqui, lo teneis que descomprir dentro de Home, y os quedara el script ejecutable en Home que es organo.sh y un directorio /home/sounds que es donde esta los sonidos de goshujinsama
y un fichero LEEME.TXT que explica esto mismo que estoy explicando....

Para ejecutarlo abrimos un terminal dentro de home y tecleamos./organo.sh

Nos aparecera la ventana con los botones que segun vamos apretando con el raton producen los sonidos de goshujinsama.

Como veras Walter es mas sencillo que mecanismo de un chupete..

Espero que os sirva de utilidad y mis disculpas una vez mas a goshujinsama...

Nos vemos ..... Saludos.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

SE ME OLVIDO DECIROS

#71 Post by mister_electronico »

Se me Olvido deciros ....... SUBIR TODOS LOS VOLUMES AL MAXIMO.

Nos vemos..

User avatar
goshujinsama
Posts: 30
Joined: Wed 31 Mar 2010, 04:22
Location: MX

Hola

#72 Post by goshujinsama »

hola de nuevo, si, lo se, si intentas correrlo desde la terminal el programa marcara segmentation fault, pero si en lugar de eso vas a la carpeta donde lo tienes y la das click al binario, este se te ejecuta perfectamente, bueno, asi es mi caso, prueben dandole click al binario, y si no es por esto podria ser por que es un linkeo dinamico, si no han intentado asi como les digo, intentenlo y me dicen.

Esta bueno tu programa mister, pero por que no lo hiciste para que funcionara en cualquier ubicacion, creo que seria mas paractico.

NOTA: Si llegan a correr el programa del teclado, notaran diferencias en la reproduccion de sonido, esto se debe a las minimas diferencias del formato que tiene cada archivo.
[color=indigo][i]"The wise always keep an ear open to the whispers of power"[/i]-Diabolic Tutor[/color]
[img]https://goshuplace.net/InWork/img/mitsukibarneo1.PNG[/img]

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

A tu pregunta...

#73 Post by mister_electronico »

Intentare hacer lo que dices goshujinsama del programa.....

A tu pregunta de por que no hago que el programa corra desde cualquier sitio es por que
para ello tendria que colocar el script ejecutable organo.sh dentro del directorio ....

/usr/bin y puede que haya gente que no le guste por ahi estan los binarios ejecutables.

En cualquier caso si lo haces puedes correrlo desde cualquier sitio...

Bueno un saludo ........ nos vemos.

User avatar
goshujinsama
Posts: 30
Joined: Wed 31 Mar 2010, 04:22
Location: MX

hola

#74 Post by goshujinsama »

Bueno, mister, a lo que me referia es de por que no lo haces para que teniendo el programa en cualquier carpeta se te corra el audio, creo que asi seria mas practico, aparte de que tener una arpeta y un script en home que la verdad no sirve para para algo util ahi, espero no ofenderte con este comentario, un saludo y pues nos vemos.

PD: Modifique tu script para que haga esto que quiero, espero y no te moleste.
[color=indigo][i]"The wise always keep an ear open to the whispers of power"[/i]-Diabolic Tutor[/color]
[img]https://goshuplace.net/InWork/img/mitsukibarneo1.PNG[/img]

User avatar
walter leonardo
Posts: 234
Joined: Thu 10 Dec 2009, 22:10

hola

#75 Post by walter leonardo »

hola muchachos.
nose si se dieron cuenta que yo ise lo mismo que mister electronico, pero mi problema era otro.
descargen mi archivo sonidos.tar.gz .
Bueno el problemita es que cuando uno toca un boton y se reproduce un sonido y a tocar ese boton de vuelta antes de que termine de sonar ese sonido hay que esperar que se termine de reproducir para que recien vuelva a sonar, nose si se dieron cuenta de eso.
bueno yo quiero que al tocar el boton y suene el sonido que tiene ese boton y lo vuelva a tocar rapidamente que se vuelva a sonar desde el principio el sonido, como si fuese un reset del sonido, nose si me entienden.que no espere a que termine de sonar para volver a reproducirse sino que se corte al instante el sonido y vuelva a reproducirce desde cero.
Y seria mejor pulsar esos botones con el teclado para ser mas habil mas rapido no creen?

User avatar
goshujinsama
Posts: 30
Joined: Wed 31 Mar 2010, 04:22
Location: MX

#76 Post by goshujinsama »

Hola de nuevo amigos, walter, mi programa hace eso que quieres hacer, bueno no para el sonido que se corrio antes, pero eso seria caso de unas variables y ya, pero pues dices que segmentation fault, ya intentastes correrlo dandole click al binario?, asi si deberia de funcianar mi programa.

Aparte para lo que dices, gtk deberia de darte acceso a varios canales, y no estoy muy seguro de que lo haga, aunque si te diera una funcion para parar el sonido podria ser mucho mas facil de lo que crees, y pues para el teclado, creo que con la funcion scanf es mas que suficiente, saludos.
[color=indigo][i]"The wise always keep an ear open to the whispers of power"[/i]-Diabolic Tutor[/color]
[img]https://goshuplace.net/InWork/img/mitsukibarneo1.PNG[/img]

User avatar
walter leonardo
Posts: 234
Joined: Thu 10 Dec 2009, 22:10

hola

#77 Post by walter leonardo »

lo primero que hice fue abrirlo aciendo click en el binario pero no paso nada y despues lo trate de ejecutar desde consola y me da ese error de segmentation fault.
bueno lo dices muy cencillo pero yo nose como hacerlo, estaria bueno que me pases esa funcion para frenar el sonido y como darles variables y usar ese scanf.
con un ejemplo ya me dare cuenta :D .Recien estoy en esto de gtk y me esta gustando mucho.

User avatar
mister_electronico
Posts: 969
Joined: Sun 20 Jan 2008, 20:20
Location: Asturias_ España
Contact:

que tal...

#78 Post by mister_electronico »

Hola que tal goshujinsama ante todo no me ofendes para nada, lo que pasa es que no entiendo muy bien, lo que me quieres decir......

si tu te vas a home y pones delante del ejecutable organo.sh el puntero del raton y aprietas el boton derecho, y seleccionas open as text te sale lo siguiente:


#!/bin/sh
# Programa hecho por Angel Gutierrez.
# Para cualquiera que lo quiera utilizar.
# los sonidos pertenecen a Fernando Escutia Rodriguez
# de su programa teclado.


export script='
<vbox>
<button>
<label>Anamalaty</label>
<action>aplay /mnt/home/sounds/animalaty.wav</action>
</button>

<button>
<label>Babality</label>
<action>aplay /mnt/home/sounds/babality.wav</action>
</button>

<button>
<label>Ecxelen</label>
<action>aplay /mnt/home/sounds/ecxelen.wav</action>
</button>

<button>
<label>Fatality</label>
<action>aplay /mnt/home/sounds/fatality.wav</action>
</button>

<button>
<label>Its_that_your_best</label>
<action>aplay /mnt/home/sounds/its_that_your_best.wav</action>
</button>

<button>
<label>Finish_him</label>
<action>aplay /mnt/home/sounds/finish_him.wav</action>
</button>

<button>
<label>Toasty</label>
<action>aplay /mnt/home/sounds/toasty.wav</action>
</button>

<button>
<label>Well_done</label>
<action>aplay /mnt/home/sounds/Well_done.wav</action>
</button>
<button>
<label>Salir</label>
</button>

</vbox>'

gtkdialog3 -p script


Este programas es un script que le pasa los valores a gtkdialog3 y bueno en definitiva como veras todos los <action> de los botones busca los sonidos dentro del directorio /mnt/home/sounds. Pero esto lo puedes variar y poner vosotros la direccion que querais y poner los sonidos donde os de la gana.

Por supuesto que no me importa para nada que modifiqueis este programa, para eso esta para que hagais lo que querais y lo mejoreis y lo modifiqueis a vuestra conveniencia...... no se puede considerar un programa sino un ejemplo.

Un saludo y estoy aqui para cualquier consulta que me querais hace...

Saludos nos vemos.

User avatar
walter leonardo
Posts: 234
Joined: Thu 10 Dec 2009, 22:10

hola

#79 Post by walter leonardo »

mister lo que el decia era hacer esto.

Code: Select all

#!/bin/sh 
# Programa hecho por Angel Gutierrez. 
# Para cualquiera que lo quiera utilizar. 
# los sonidos pertenecen a Fernando Escutia Rodriguez 
# de su programa teclado. 


export script=' 
<vbox> 
<button> 
<label>Anamalaty</label> 
<action>aplay sounds/animalaty.wav</action> 
</button> 

<button> 
<label>Babality</label> 
<action>aplay sounds/babality.wav</action> 
</button> 

<button> 
<label>Ecxelen</label> 
<action>aplay sounds/ecxelen.wav</action> 
</button> 

<button> 
<label>Fatality</label> 
<action>aplay sounds/fatality.wav</action> 
</button> 

<button> 
<label>Its_that_your_best</label> 
<action>aplay sounds/its_that_your_best.wav</action> 
</button> 

<button> 
<label>Finish_him</label> 
<action>aplay sounds/finish_him.wav</action> 
</button> 

<button> 
<label>Toasty</label> 
<action>aplay sounds/toasty.wav</action> 
</button> 

<button> 
<label>Well_done</label> 
<action>aplay sounds/Well_done.wav</action> 
</button> 
<button> 
<label>Salir</label> 
</button> 

</vbox>' 

gtkdialog3 -p script

User avatar
goshujinsama
Posts: 30
Joined: Wed 31 Mar 2010, 04:22
Location: MX

hola

#80 Post by goshujinsama »

Hola de nuevo walter, que malo lo de mi programa, tal vez puede ser lo de los permisos, pero bueno, dejo de nuvo el archivo subido pero ahora tambien trae una compilacion static para ver si me hacen favor de checarlo y ver si ahora si corre, el binario a ejecutar es el Teclado-MK_sound_test01 y pues si pueden chequenlo de favor.

Y sobre el ejemplo, dejame y investigo un poco nas de gtk ya que no soy muy fluido en el, pero por lo que he visto tiene demasiadas similitudes con el c.
Attachments
Teclado_MK_Sound_Test(v.2.0).tar.gz
Teclado-MK_sound_test
(187.55 KiB) Downloaded 687 times
[color=indigo][i]"The wise always keep an ear open to the whispers of power"[/i]-Diabolic Tutor[/color]
[img]https://goshuplace.net/InWork/img/mitsukibarneo1.PNG[/img]

Post Reply