Forum de discussion
Forum « Programmation Javascript » (archives)
Re: Signe zodiaque selon une date
Envoyé: 17 novembre 2004, 15h32 par Oznog
Attention a ton titre!
Bon, tu as les deux choses les plus dificile à saisir pour un nouveau, l'objet dates et les tests de conditions multiples.
Pour simplifier, je t'ai fais un objet "Signe zodiaque" qui contient toutes les information de chacun des signes facillement accèssible (aSigne[7].pierre par exemple).
function twSigne(sNom,nMdeb,nJdeb,nMfin,nJfin,sElement,sType,sSexe,sPlanete,sCouleur,sPierre,sMetal,sCaractere,sPartenaires,sAffinites,sCelebres,sDiscordance) {
// Script gratuit des Trucsweb.com
// Objet Signe Zodiaque
this.nom = sNom;
// Important
this.mDeb = nMdeb;
this.jDeb = nJdeb;
this.mFin = nMfin;
this.jFin = nJfin;
// Un petit plus
this.element = sElement;
this.type = sType;
this.sexe = sSexe;
this.planete = sPlanete;
this.couleur = sCouleur;
this.pierre = sPierre;
this.metal = sMetal;
this.caractere = sCaractere;
this.partenaires = sPartenaires;
this.affinites = sAffinites;
this.celebres = sCelebres;
this.discordance = sDiscordance;
}
// Construction des objets "Signe Zodiaque"
aSigne = new Array(11)
aSigne[0] = new twSigne("Capricorne",12,21,1,19,"terre","Cardinal","f","Saturne","Orange","Ambre","Nickel","Discipliné, persévérant, ambitieux, calme, effacé, maître","Sagittaire","Vierge, Scorpion","Pasteur, Cézanne, Matisse, Puccini","");
aSigne[1] = new twSigne("Verseau",1,20,2,19,"air","Fixe","m","Uranus","Violet","Perle noire","Plomb","Idéaliste, sociable, sentimental, humaniste","Lion ou Sagittaire","Balance, Bélier","Casanova, Mozart, Manet, Valéry Giscard d'Estaing","");
aSigne[2] = new twSigne("Poissons",2,20,3,20,"eau","Mutable","f","Neptune","Bleu","Aigue-marine","Etain","Vulnérable, contradictoire, dévoué, mystérieux","Bélier","Taureau, Sagittaire","Michel-Ange, Chopin, Albert Einstein, Stéphane Mallarmé","Gémeaux");
aSigne[3] = new twSigne("Bélier",3,21,4,19,"feu","Cardinal","m","Mars","Rouge","Rubis","Fer","Impulsif, actif, aventureux, meneur","Lion","Gémeaux, Verseau","Jean-Sébastien Bach, Verlaine, Fragonard, Marlon Brando, Simone Signoret","");
aSigne[4] = new twSigne("Taureau",4,20,5,19,"terre","Fixe","f","Vénus","Vert","Emeraude","Cuivre","Persévérant, possessif, matérialiste, bâtisseur","Bélier","Vierge, Gémeaux","Machiavel, Freud, Karl Marx, Jean Gabin, Orson Welles","");
aSigne[5] = new twSigne("Gémeaux",5,20,6,21,"air","Neutre mutable","m","Mercure","Gris","Aigue-Marine","Cristal","Curieux, ouvert, volage, messager","Sagittaire","Cancer, Balance, Verseau","Dante, Pierre le Grand, Richard Strauss, Kafka","");
aSigne[6] = new twSigne("Cancer",6,22,7,22,"eau","Cardinal","f","Lune","Bleu","Turquoise","Argent","Rêveur, imaginatif, sensible, intuitif","Sagittaire","Taureau, Vierge, Poissons","Schubert, Jean-Jacques Rousseau, Marcel Proust, Ernest Hemingway","");
aSigne[7] = new twSigne("Lion",7,23,8,22,"feu","Fixe","m","Soleil","Jaune","Diamant, rubis","Or","fier, généreux, exigeant, possessif","Verseau","Bélier, Balance","Jules César, Napoléon, Alexandre Dumas, Mick Jagger","");
aSigne[8] = new twSigne("Vierge",8,23,9,22,"terre","Mutable","f","Mercure","Blanc, gris","Diamant","Argent","Logique, rigoureux, ordonné, honnête, critique","Taureau","Bélier","Goethe, Ronsard, Richelieu","");
aSigne[9] = new twSigne("Balance",9,23,10,22,"air","Cardinal","m","Vénus","Rose","Corail","Platine","Diplomate, conciliateur, séducteur, partenaire","Sagittaire","Gémeaux, Verseau, Lion","Gandhi, Diderot, John Lenon","");
aSigne[10] = new twSigne("Scorpion",10,23,11,21,"eau","Fixe","f","Pluton","Noir","Améthiste","Cuivre","Extrême, endurant, entier, passionné","Capricorne","Vierge, Poissons, Cancer","Voltaire, Bizet, Luther, George Brassens","");
aSigne[11] = new twSigne("Sagittaire",11,22,12,20,"feu","Mutable","m","Jupiter","Bleu cobalt","Saphir","Mercure","Idéaliste, philosophe, fougueux, aventurier","Bélier","Lion","Beethoven, Winston Churchill, Raimu, Jean Marais, Jean-Louis Trintignant","");
Ensuite, une fonction ou prototype pour récupérer le numéro du signe selon une date.
Date.prototype.twSigne=function (){
// Script gratuit des Trucsweb.com
// Retourne le numéro du signe zodiaque
// d'un objet date
var nMois = this.getMonth()+1;
var nJour = this.getDate();
var sSigne = -1;
for (i=0; i<aSigne.length; i++) {
if (((nMois==aSigne[i].mDeb)&&(nJour>=aSigne[i].jDeb))||((nMois==aSigne[i].mFin)&&(nJour<=aSigne[i].jFin))) {
sSigne = i;
break;
}
}
return sSigne;
}
Tu peux donc trouver le signe zodiaque précis d'une date simplement comme ceci :
dDate1 = new Date();
var numeroDuSigne1 = dDate1.twSigne();
OU
dDate2 = new Date('Wed Jan 14 11:59:10 EST 2004');
var numeroDuSigne2 = dDate2.twSigne();
Et donc afficher par exemple :
dDate1 = new Date();
var numeroDuSigne1 = dDate1.twSigne();
alert(aSigne[numeroDuSigne1].nom);
OU simplement
dDate1 = new Date();
alert(aSigne[dDate1.twSigne()].nom);
Voilà une fonction qui retourne la chaine de tous les détail d'un signe :
function twChaineSigne(_num) {
// Script gratuit des Trucsweb.com
// Retourne une chaîne des détail d'un signe zodiaque
// selon le numéro du signe obtenu par le prototype "twSigne"
var sChaine = aSigne[_num].nom + "\n";
sChaine += "Élement : " + aSigne[_num].element + "\n";
sChaine += "Type : " + aSigne[_num].type + "\n";
sChaine += "Sexe : " + aSigne[_num].sexe + "\n";
sChaine += "Planète : " + aSigne[_num].planete + "\n";
sChaine += "Couleur : " + aSigne[_num].couleur + "\n";
sChaine += "Pierre : " + aSigne[_num].pierre + "\n";
sChaine += "Métal : " + aSigne[_num].metal + "\n";
sChaine += "\nCaractère : " + aSigne[_num].caractere + "\n";
sChaine += "\nPartenaires : " + aSigne[_num].partenaires + "\n";
sChaine += "\nAffinités : " + aSigne[_num].affinites + "\n";
sChaine += "\nCélibtités : " + aSigne[_num].celebres + "\n";
if (aSigne[_num].discordance!="") sChaine += "\nDiscordance" + aSigne[_num].discordance + "\n";
return sChaine;
}
Tu peux alors faire :
// Exemple avec la date du jour
// Et d'une date construite
dDate1 = new Date();
dDate2 = new Date('Wed Jan 14 11:59:10 EST 2004');
alert(twChaineSigne(dDate1.twSigne()));
alert(twChaineSigne(dDate2.twSigne()));
Ça devrait faire l'affaire. Note que le même principe d'utiliser un "objet" pourrait aussi simplifier ton histoire de message_fin!
Note aussi que tu peux retirer tout ce qu'il y a après "Un petit plus" et retourner le nom du signe au lieu du numéro de signe dasn la fonction "twSigne". De cette façon :
Date.prototype.twSigne=function (){
// Script gratuit des Trucsweb.com
// Retourne le numéro du signe zodiaque
// d'un objet date
var nMois = this.getMonth()+1;
var nJour = this.getDate();
var sSigne = "Erreur";
for (i=0; i<aSigne.length; i++) {
if (((nMois==aSigne[i].mDeb)&&(nJour>=aSigne[i].jDeb))||((nMois==aSigne[i].mFin)&&(nJour<=aSigne[i].jFin))) {
sSigne = aSigne[i].nom;
break;
}
}
return sSigne;
}
Ciao
Oznog
Réponses
|