Plus complet que le premier, il n'y a pas de limite
dans le nombre de phrases ou leur longueur, mais
ca peut ramer sur certain postes.
Source / Exemple :
<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT>
// 31-10-2003 - francktfr@systeme-d.net
// écrit pour http://www.systeme-d.net
var Blocs = new Array()
var Sentence = new Array()
Sentence.push("Un panneau d'affichage")
Sentence.push("comme ceux qu'on trouve")
Sentence.push("dans les garres ... :o)")
Blocs.push(Sentence)
Sentence = new Array()
Sentence.push("Vous y marquez ce que")
Sentence.push("vous voulez, il n'y a")
Sentence.push("pas de limites ...")
Blocs.push(Sentence)
Sentence = new Array()
Sentence.push("Ça pourrait faire un")
Sentence.push("bon lecteur de news")
Blocs.push(Sentence)
var iDones = new Array() // Tableau des caracteres placés
var TotalDone = 0 // Total des caracteres placés
var RowSpeed = 700 // Interval entre rangée (ms)
var ColSpeed = 10 // Interval entre colonne (ms)
var BlockSpeed = 1000 // Temps d'affichage de bloc de texte (ms)
var LenX = 0 // Nombre de colonnes
var LenY = 0 // Nombre de rangées
var CodeLetter = new Array() // Tableau des symboles HTML
for (i=32; i<255; i++){ if (i<127 || i>160) CodeLetter.push(String.fromCharCode(i))} // Remplissage du tableau
// Cree un chaine avec que des " "
function Str(Len){
var Result = ""
for (s=1; s<=Len; s++){Result += " "}
return(Result)
}
// verification des phrases + mise a la bonne dimension et dimensions du tableau
function CheckLetters(){
var msg = ""
for (i=0; i<Blocs.length; i++){
if (LenY < Blocs[i].length){LenY = Blocs[i].length}
for (j=0; j<Blocs[i].length; j++){
for (a=0; a<Blocs[i][j].length; a++){
var isin = 0
for (c=0; c<CodeLetter.length; c++){
if(CodeLetter[c] == Blocs[i][j].charAt(a)){isin = 1; break}
}
if(!isin){msg += Blocs[i][j][a] + " inconnu \n"}
}
if (LenX < Blocs[i][j].length){LenX = Blocs[i][j].length}
}
}
if(msg != ""){alert(msg); return(0)}
for (i=0; i<(LenX*LenY); i++){iDones.push(0)}
// Remplissage des lignes et caracteres manquants
var diff = 0
for (i=0; i<Blocs.length; i++){
for (j=0; j<Blocs[i].length; j++){
diff = LenX-Blocs[i][j].length
if (diff){Blocs[i][j] += Str(diff)} // Complete le reste de la chaine
}
diff = LenY-Blocs[i].length
if (diff){ for (j=0; j<diff; j++) {Blocs[i].push(Str(LenX))} } // creation d'une nouvelle chaine
}
return(1)
}
function InitPanel(Container){
if (!CheckLetters()){return(0)}
// Création du tableau HTML
var table = "<TABLE CELLPADDING=0 CELLSPACING=1 CLASS=Panel>\n"
for (j=0; j<LenX; j++){table += "<COL WIDTH=13>"}
for (i=0; i<LenY; i++){
table += "<TR>"
for (j=0; j<LenX; j++){table += "<TD HEIGHT=18 ID=AF_"+i+"_"+j+" CLASS=PanelCell> </TD>"}
table += "</TR>"
}
table += "</TABLE>"
Container.innerHTML = table
WriteBlock(0)
}
// Retourne L'index du caractere
function CodeIndex(car){
var res = CodeLetter.length
for (i=0; i<CodeLetter.length; i++){if (car == CodeLetter[i]){return(i)}}
return(0)
}
// Passage au prochain bloc de phrases ou au premier
function NextBlock(BlockIndex){
BlockIndex < (Blocs.length-1) ? BlockIndex++ : BlockIndex=0
WriteBlock(BlockIndex)
}
// Lance l'ecriture des phrases
function WriteBlock(i){
for (a=0; a<(LenX*LenY); a++){iDones[a]=0}
TotalDone = 0
for (r=0; r<Blocs[i].length; r++){setTimeout("WriteRow("+i+", "+r+")",r*RowSpeed)}
}
// Lance l'ecriture des lettres
function WriteRow(BlockIndex, RowIndex){
for (l=0; l<Blocs[BlockIndex][RowIndex].length; l++){
eval("var start = CodeIndex(AF_"+RowIndex+"_"+l+".innerText)")
setTimeout("WriteLetter("+BlockIndex+", "+RowIndex+","+l+","+start+")",l*ColSpeed)
}
}
function WriteLetter(BlockIndex, RowIndex, LetterIndex, CodeIndex){
if (!iDones[(LenX*RowIndex)+(LetterIndex)])
{
eval("var Cel = AF_"+RowIndex+"_"+LetterIndex)
if (Blocs[BlockIndex][RowIndex].charAt(LetterIndex) == CodeLetter[CodeIndex]){
iDones[(LenX*RowIndex)+(LetterIndex)]++
TotalDone++
if (TotalDone >= (LenX*LenY)){setTimeout("NextBlock("+BlockIndex+")",BlockSpeed)}
}
Cel.innerText = CodeLetter[CodeIndex]
CodeIndex < CodeLetter.length-1 ? CodeIndex++ : CodeIndex = 0
setTimeout("WriteLetter("+BlockIndex+", "+RowIndex+", "+LetterIndex+","+CodeIndex+")",10)
}
}
</SCRIPT>
<STYLE>
.Panel {FONT: 14 Courier; COLOR: #FFFFCC; TABLE-LAYOUT: fixed; TEXT-ALIGN: center; BACKGROUND: #000000}
.PanelCell {BORDER: 1 solid none; VERTICAL-ALIGN: middle; BACKGROUND: #006666}
</STYLE>
</HEAD>
<BODY ONLOAD="InitPanel(dtable)">
<DIV id=dtable></DIV>
</BODY>
</HTML>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.