Composer un dialogue aléatoire

© Christian PAULUS. Document créé le 3 août 2010 , mis à jour le 3 août 2010.

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire. Joseph Joubert

Accueil du site > Astuces > MacOSX > Composer un dialogue aléatoire

Applescript / MacOsX 10.6 (Snow Leopard)

Script totalement inutile, jacasserie.scpt illustre l’utilisation de la commande AppleScript say.

Pour mémo, cette commande say existe également en ligne de commande, sous Terminal, dans une version proposant moins d’options.

En AppleScript, say peut être accompagné de - entre autres : using, speaking rate, pitch, modulation, volume et saving. Pour en savoir plus sur ces options, consulter la bibliothèque StandardAdditions via l’Editeur AppleScript.

Le script jacasserie.scpt construit des mots en sélectionnant des lettres au hasard. Dialogue entre deux personnes.

Pour combler les longues nuits de solitude - peut-être - quand la radio ne fonctionne plus.

(*
        Dialogue aléatoire
        http//www.quesaco.org
        Copyright © 2010 Christian Paulus
        Licence GPL3
*)
property nb_tirades : (30 * 3)
property max_len : 15
property max_len_phrase : 50

property consonnes : "bcdfghjklmnpqrstvwxyz"
--property voyelles : "aàeéèêiouüy"
property voyelles : "aeiouy"
property ponctuations : ",?!"
property vox : {"Agnes", "Kathy", "Princess", "Vicki", "Victoria", ¬
        "Alex", "Bruce", "Fred", "Junior", "Ralph", ¬
        "Whisper", "Cellos", "Bells", "Bahh", "Deranged", "Albert", "Hysterical", "Trinoids", "Zarvox"}

set max_c to count of consonnes
set max_v to count of voyelles
set max_p to count of ponctuations
set ok_punct to false
set cur_len to 0
set less_punct to 0
set type to 3

set alice to item (random number from 1 to 5) of vox
set bernard to item (random number from 5 to 10) of vox
set cur_vox to alice

repeat nb_tirades times
        set res to ""
        set len_tirade to (random number from 1 to max_len_phrase)
        repeat len_tirade times
                if (type = 1) then
                        set type to (random number from 2 to 3)
                else if (type = 2) then
                        set type to (random number from 2 to 3)
                        if (type = 2) then set type to 1
                else if (type = 3) then
                        set type to (random number from 1 to 2)
                end if
                set c to ""
                if (type = 1) then
                        set n to my (random number from 1 to max_c)
                        set c to character n of consonnes
                        set cur_len to cur_len + 1
                        set ok_punct to true
                else if (type = 2) then
                        set n to my (random number from 1 to max_v)
                        set c to character n of voyelles
                        set cur_len to cur_len + 1
                        set ok_punct to true
                else if (ok_punct) then
                        if (less_punct ≥ 8) then
                                set n to my (random number from 1 to max_p)
                                set c to character n of ponctuations & " "
                                set cur_len to 0
                                set ok_punct to false
                                set less_punct to 0
                        else
                                set less_punct to less_punct + 1
                        end if
                end if
               
                if (cur_len ≥ max_len) then
                        set c to c & " "
                        set ok_punct to false
                        set cur_len to 0
                end if
               
                if ((count of c) > 0) then
                        set res to res & c
                        set cur_len to cur_len + 1
                end if
        end repeat -- len_tirade
       
        log cur_vox
       
        if (cur_vox is alice) then
                say res using alice speaking rate 400
                set cur_vox to bernard
        else
                say res using bernard speaking rate 400
                set cur_vox to alice
        end if
       
end repeat -- nb_tirades

Et le fichier compressé :

Zip - 7.6 ko
Jacasserie

Pour les nostalgiques du Klingon, voir Google en Klingon.

Plussoyez !

Les forums sont fermés.