Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/02/2010, à 01:40

sputnick

[JEU] challenge bash #3

1265482796.png

[informations sur le jeu]

<<    challenge bash #3    >>

Le canard qui fait coin-coin

Faire un script bash qui affiche en console un canard animé avec des caractères ASCII. Il doit ouvrir et fermer le bec.
A chaque ouverture de bec, il doit émettre un coin, avec du wav qui doit être incorporé dans le script lui même.
Voici les points qui serviront de coefficient pour désigner le gagnant :
- créativité / ingéniosité ( on peux être un piètre codeur et avoir des idées géniales ! )
- propreté / élégance
- rapidité pour donner un résultat directement utilisable.

Dernière modification par sputnick (Le 16/02/2010, à 02:41)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#2 Le 16/02/2010, à 02:13

sputnick

Re : [JEU] challenge bash #3

Et le gagnant est... toto2006

pour :
- la rapidité de réponse
- le travail d'affichage et son coin-coin amusant

Merci à tous les participants !

Les solutions des animateurs :
- totor http://www.neufgiga.com/n/50-2/folder/37298885/
- sputnick http://www.sputnick-area.net/scripts/coin.bash

Dernière modification par sputnick (Le 21/02/2010, à 01:17)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 16/02/2010, à 02:21

Link31

Re : [JEU] challenge bash #3

c=0; while true; do printf "\e[1G\_o$([ $[c%250] -gt 128 ] && echo '<' || echo '-')"; (( c++ )); sleep 0.002; done | tee -a /dev/dsp

(edit : attention, le volume sonore peut être assez fort)

Dernière modification par Link31 (Le 16/02/2010, à 02:23)

Hors ligne

#4 Le 16/02/2010, à 02:43

sputnick

Re : [JEU] challenge bash #3

Pas man Link31 mais il s'agit d'inclure le fichier son dans le corp du script. Tu a donc réussi la premiere phase, à savoir animer le coin ^^
J'ai reprécisé l'intitulé :

A chaque ouverture de bec, il doit émettre un coin, avec du wav qui doit être incorporé dans le script lui même.

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 16/02/2010, à 02:44

Link31

Re : [JEU] challenge bash #3

Le son est inclus. Tu as peut-être oublié de lancer la commande ?

À moins que ça ne fonctionne pas avec PulseAudio, dans ce cas change de distribution tongue

Dernière modification par Link31 (Le 16/02/2010, à 02:44)

Hors ligne

#6 Le 16/02/2010, à 02:53

sputnick

Re : [JEU] challenge bash #3

J'ai testé mais ce n'est pas un son wav dans le corp du script et ça émet un bip, pas un coin ^^
Néanmoins c'est intéressant. Peux tu décrire le fonctionnement pour la partie son ?


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#7 Le 16/02/2010, à 02:56

Link31

Re : [JEU] challenge bash #3

OK, mais si le sujet change en cours de route... roll

Pour la partie son, c'est simple : envoi en masse de canards ASCII dans la carte son, qui émet un bip en réponse tongue

Hors ligne

#8 Le 16/02/2010, à 02:59

sputnick

Re : [JEU] challenge bash #3

Ben non, tu a interprété la partie son à ta sauce. C'est pour ça que je suis allé plus loin dans l'intitulé ( en le modifiant pour que ca soit plus clair ). Aucun interet d'avoir un bip avec un canard wink


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#9 Le 16/02/2010, à 03:02

Link31

Re : [JEU] challenge bash #3

sputnick a écrit :

Aucun interet d'avoir un bip avec un canard wink

Ah oui, évidemment.

En ce qui me concerne, je pense qu'il n'y a aucun intérêt à inclure dans un script 150 lignes de base64 codant pour un fichier wav.

Hors ligne

#10 Le 16/02/2010, à 04:49

sputnick

Re : [JEU] challenge bash #3

C'est toi qui voit. Te sent pas obligé. C'est pas noté au nombre de ligne concernant le wav. L'interet est de trouver des implémentations pour ce faire ^^


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#11 Le 16/02/2010, à 10:13

john01

Re : [JEU] challenge bash #3

Bonjour

Edit:j'ai reuploader un script qui respecte exactement l'intitule du challenge !!

C est Yannou90

Bon je suis chez un pote et je poste sous son login (je me souvient plus de mon mot de passe)

http://dl.free.fr/dJFUO9UPS/canard.sh

Vous le placez dans $HOME , un petit chmod u+x et ca roule
Bon ca utilise pulseaudio ..

Dernière modification par john01 (Le 16/02/2010, à 10:42)

Hors ligne

#12 Le 16/02/2010, à 13:06

nesthib

Re : [JEU] challenge bash #3

john01/Yannou90 merci de poster le script directement dans ton message


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#13 Le 16/02/2010, à 13:39

john01

Re : [JEU] challenge bash #3

Yannou90:

Desole je n'arrives pas a reccuperer mon mot de passe mais pour le script je veux bien le podter mais ca ne fonctionnera pas il faut le fichier original !:

#!/bin/bash
unzip ~/canard.sh
while true; do echo -en "\r"'\o-'; sleep 0.5; echo -en "\r"'\o<'; paplay ~/canard.wav; done
PK

Le fichier wav fait parti du script donc forcement si je ne vous montre que l animation ca ne marche pas mais avec le fichier original qui "contient" le wav la , le canard fait couin-couin"

Hors ligne

#14 Le 16/02/2010, à 13:45

john01

Re : [JEU] challenge bash #3

sputnick a écrit :

http://pix.toile-libre.org/upload/origi … 482796.png

[informations sur le jeu]

<<    challenge bash #3

Le canard qui fait coin-coin

Faire un script bash qui affiche en console un canard animé avec des caractères ASCII. Il doit ouvrir et fermer le bec.
A chaque ouverture de bec, il doit émettre un coin, avec du wav qui doit être incorporé dans le script lui même.
.

Ca pour etre incorporé , il y est !
Je sais pas si c est valable en fait ?!?

Hors ligne

#15 Le 16/02/2010, à 14:17

sputnick

Re : [JEU] challenge bash #3

Comme cela peux representer pas mal de lignes à cause du wav, ca devrais etre uploadé sur un site tiers.

@Yannou90, pas mal, mais tu te sert de plusieurs fichiers ( le sh et le wav ) et tu utilise des tools qui ne sont pas installés partout.  Le but est de ne pas avoir 2 fichiers mais bien un seul script avec le wav dans le script lui meme.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#16 Le 16/02/2010, à 14:33

john01

Re : [JEU] challenge bash #3

oki

Hors ligne

#17 Le 16/02/2010, à 23:45

toto2006

Re : [JEU] challenge bash #3

bon  l'animation ( comme le bash d'ailleurs ) c'est  pas mon fort smile

http://dl.free.fr/osuxMs4da

#!/bin/bash
#COUAK

cat >canard.wav << "FIN DE canard.wav"
BLABLABLABLA...
FIN DE canard.wav
 
NORMAL="\033[0;39m" 
VERT="\033[1;32m"
YELLOW="\033[1;33m"
GHOME="\033[0;0H"

function COUAK()
{
 
	echo -ne $GHOME
	echo "                                                 " 
	echo "    ~                                            "
	echo "  (0o)                                           "
	echo "  <__>                                           "
	echo -e " ${VERT}  =${NORMAL}\                         "
	echo -e " (   )                                        "
	echo -e "${YELLOW}  > < ${YELLOW}                      "
	echo -e ${NORMAL} 
 
	sleep 0.2
 
	echo -ne $GHOME
	echo "    ~   KKKKKK  OOOOO U   U   AAAA   KK  K   !!"
	echo "  (0o)  KK      O   O U   U   A  A   KKK     !!"
	echo "   /\\  KK      0   0 U   U  AAAAAA  KK K       "
	echo "   \\/  KKKKKK  00000 UUUUU AA    AA K   K   !!"
	echo -e " ${VERT}  =${NORMAL}\      "
	echo -e " (   )"
	echo -e "${YELLOW}  > < ${YELLOW} ${NORMAL}"

	aplay -q $1

	sleep 0.2
  
	echo -ne $GHOME
	echo "                                                 " 
	echo "    ~                                            "
	echo "  (0o)                                           "
	echo "  <__>                                           "
	echo -e " ${VERT}  =${NORMAL}\                         "
	echo -e " (   )                                        "
	echo -e "${YELLOW}  > < ${YELLOW}                      "
	echo -e ${NORMAL} 
 
}

clear

COUAK "./canard.wav"
COUAK "./canard.wav"

rm canard.wav

exit 0

Hors ligne

#18 Le 17/02/2010, à 01:52

nesthib

Re : [JEU] challenge bash #3

@Yannou90 : ta version buggue si on ne se trouve pas dans le bon dossier + attention aux sorties sur stdin/stdout qui viennent un peu pourrir l'effet visuel…

@toto2006 : il est où le son ? ^^


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#19 Le 17/02/2010, à 03:51

sputnick

Re : [JEU] challenge bash #3

Bon nesthib et totor ont tout deux trouvé une solution chacun.
Expliquez nous votre démarche, on vous aiguillera si besoin.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#20 Le 17/02/2010, à 08:40

toto2006

Re : [JEU] challenge bash #3

@toto2006 : il est où le son ? ^^

http://dl.free.fr/getfile.pl?file=/suxMs4da

Ben incorporé dans le script , tu as testé au moins  lol mdr

Hors ligne

#21 Le 17/02/2010, à 09:03

Yannou90

Re : [JEU] challenge bash #3

Yannou90 qui a reccuperer son mdp (voir john01)

Bonjour

Que je ne dise pas de bétises , la solution de toto2006 est équivalente a la mienne : a savoir concatèner le script et le son , pour moi par le biai de zip et toto2006 directement en wav
Mais au final il faut extraire le son et le jouer donc c'est la même chose , non ???

J'essais de faire comme toi toto2006 mais la création du *.wav a bien lieu mais je perd le "header" alors question:
réccuperes-tu le header et concatènes le tu dans le script avant le wav ,histoire qu'il soit "entier" a la sortie
Je fais ca:

cat ./script.sh ./canard.wav ./fin-script.sh > new.sh

avec script.sh qui contient :

#!/bin/bash
cat >canard.wav << "COUIN-COUIN"

et pour ./fin-script.sh

COUIN-COUIN

et resultat :

-->$bash ./new.sh
-->$./new.sh :  line 459: warning: here-document at line 2 delimited by end-of-file (wanted `COUIN-COUIN')
-->$file ./canard.wav : data
-->$play ./canard.wav
play FAIL formats: can't open input file `./canard.wav': WAVE: RIFF header not found

Dernière modification par Yannou90 (Le 17/02/2010, à 09:20)

Hors ligne

#22 Le 17/02/2010, à 10:14

nesthib

Re : [JEU] challenge bash #3

@toto2006 : bon j'avais pas vu le lien, juste le BLABLA ^^ my mistake, I was too tired!
très joli en tout cas


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#23 Le 17/02/2010, à 11:24

Yannou90

Re : [JEU] challenge bash #3

Jolie canard en effet , plein de couleur et tout ....

Bon ben moi je reste sur la même methode , sinon j'était partit pour reccuperer les données hexadecimal pour reconstruire le fichier mais je retombe toujours sur la meme problematique :
jouer le son depuis le script sans en extraire de fichier
Ben je bug , je peux reconstruire ou extraire mais pas jouer "directement"

Bon nouveau script , nouveau canard , façon "j'ai mal quelque part":

#!/bin/bash
POND_CANARD=
while true
do
printf "\r"$POND_CANARD'\ô>'
POND_CANARD=$POND_CANARD'_'
sleep 0.2
printf "\r"$POND_CANARD'\ô>'
POND_CANARD=$POND_CANARD'_'
sleep 0.2
printf "\r"$POND_CANARD'\Ô>'
POND_CANARD=$POND_CANARD'O'
sleep 1
printf "\r"$POND_CANARD'\ô>'
sleep 0.2
printf "\r"$POND_CANARD'\ô<'
POND_CANARD=$POND_CANARD'_'
unzip canard.sh >& /dev/null
paplay canard.wav
rm canard.wav
done

PK

Ce qui donne :

\ô>
__\ô>
___\Ô>
___O\ô>
___O\ô<
___O__\ô>

Disponible ici :
http://dl.free.fr/dat7JkA1W

Il faut ce placer dans le dossier contenant le script ...
La ponte à l'air assez douloureuse , pauvre canard(heu canne peut etre mieux )

Dernière modification par Yannou90 (Le 17/02/2010, à 11:34)

Hors ligne

#24 Le 17/02/2010, à 16:12

toto2006

Re : [JEU] challenge bash #3

@Yannou90

en gros je fait comme ca  (merci mon vieux bouquin de pike & kernighan )

http://cm.bell-labs.com/cm/cs/upe/

./script.sh canard.wav > test.sh

echo "cat >"$1" << \"FIN DE CANARD\""
cat $1
echo "FIN DE CANARD"

@nesthib

Oui j'arrivais pas a mettre le script avec la balise code , donc j'ai juste mis BLABLABLA dans le script posté.

Dernière modification par toto2006 (Le 17/02/2010, à 16:13)

Hors ligne

#25 Le 17/02/2010, à 19:21

sputnick

Re : [JEU] challenge bash #3

@toto2006 et Yannou90

mouhahaha, mort de rire big_smile

Vla la bande de coin coin à ne pas croiser au détour d'un sentier par une nuit de pleine lune ^^

Bon, les autres, on attend vos solutions ou bien ?


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne